Veröffentlichen und Laden in Servigistics InService > Weitere Informationen > TAL-Anpassung > CGM-Bilder in SVG konvertieren
  
CGM-Bilder in SVG konvertieren
Servigistics InService bietet die Möglichkeit, CGM-Bilder in Ihren Daten in SVG-Bilder zu konvertieren. SVG-Bilder haben die gleiche Qualität wie CGM, erfordern jedoch kein Web-Browser-Plugin, um das Bild anzuzeigen.
Um CGM-Grafiken in SVG zu konvertieren, benötigen Sie einen CGM-in-SVG-Konverter. Die Konvertierung findet statt, wenn Daten publiziert und bevor sie in das System geladen werden. Der Larson CGM Engine Converter wird als Installations-Add-On mit Servigistics InService bereitgestellt. Wenn Larson installiert ist, werden CGM-Bilder automatisch in SVG konvertiert, wenn Sie diese Option auswählen.
Wenn Sie einen anderen Konverter verwenden möchten, müssen Sie das System so konfigurieren, dass es diesen Konverter unterstützt. Der Konverter wird als Plugin auf dem Publisher-Server installiert. Führen Sie die folgenden Schritte aus, um den Konverter zu implementieren:
1. Definieren Sie eine Komponente namens CustomCGMtoSVGConverter in einer benutzerdefinierten Inhaltskonfigurationsdatei.
Die Konfigurationsdatei muss sich im Verzeichnis INSERVICE_CONFIG/System/Config befinden. Sie können eine vorhandene Datei verwenden, z.B. customizedContext_3.conf.xml, es wird jedoch empfohlen, eine neue Datei zu erstellen. Die Datei muss wie folgt benannt werden: customizedContext_X.conf.xml, wobei X eine beliebige Zahl ist. Die Komponente kann zwar in mehreren Dateien enthalten sein, das System verwendet jedoch immer die Komponente aus der Datei mit der höchsten Nummer.
Sie können die für den Konverter spezifischen Eigenschaften in dieser Komponente konfigurieren. Die Komponentenklasse kann mit der folgenden Methode auf diese Eigenschaften zugreifen:
public void configure(IConfiguration conf) throws ConfigurationException {
Auf die in der Konfigurationsdatei deklarierten Konfigurationsparameter kann mit verschiedenen Methoden zugegriffen werden, die in der Schnittstelle IConfiguration in der Datei Framework.jar mit dem Paketpfad com/enigma/sdk/framework/configuration definiert sind. Die Datei Framework.jar befindet sich unter INSERVICE_HOME\InS_SW\SW\System\WildFly\modules\system\layers\base\com\ptc\e3c\main.
2. Erstellen Sie eine Java-Klasse (z.B. CustomCGMtoSVGConverter) für den CGM-in-SVG-Konverter, indem Sie die Klasse com.enigma.imageConverter.ImageConverter in der Datei SCEImageConverter.jar erweitern.
3. Erstellen Sie eine Methode namens convertCGMToSVG mit drei Zeichenfolgenparametern wie z.B. input folder, output folder und output format.
Diese Methode sollte die im Eingabeordner vorhandenen CGM-Bilder in SVG-Bilder konvertieren und im Ausgabeordner ablegen.
4. Überschreiben Sie die Methode execute(Map variables, String method).
Wenn der Methodenname convertCGMToSVG lautet, können Sie aus der Variablenzuordnung die folgenden Parameter extrahieren:
//input folder
String input = (String) variables.get("input");
//output folder
String output = (String) variables.get("output");
//output format
String outputFormat = (String) variables.get("outputFormat")
Rufen Sie als Nächstes die in Schritt 2 definierte Methode mit den oben genannten Parametern auf. Es wird erwartet, dass im Eingabeordner vorhandene CGM-Dateien in SVG-Dateien konvertiert und im Ausgabeordner abgelegt werden.
5. Aktualisieren Sie den für das Laden spezifischen Prozess für die Bildkonvertierung.
6. Aktualisieren Sie den Namen der CGM-in-SVG-Konverterkomponente und den Methodennamen, die im Knoten ConvertCGMToSVGNode des Unterprozesses CGMtoSVGConverterSubFlow_PD.xml verwendet werden.
Der Komponenten- und der Methodenname müssen mit den in den Schritten 2 und 4 definierten übereinstimmen. Die aufzurufende Methode sollte in der in Schritt 1 erstellten benutzerdefinierten Klasse definiert werden.
Nachdem Sie den Konverter implementiert haben, führen Sie die folgenden Schritte aus, um die CGM-in-SVG-Konvertierung anzupassen:
1. Fügen Sie der Datei customizedContext_3.conf.xml im Verzeichnis INSERVICE_CONFIG/System/Config die folgende Eigenschaft hinzu:
<Component Name="CustomCGMToSVGConvertor">
<Creation Type="JavaObject">
<!-- class name with package -->
<Class>com.custom.imageConverter.CustomCGMToSVGConvertor</Class>
</Creation>
<Config>
<!-- Pass various configuration parameters for converter into the Component -->
<!-- User can define attributes as
<attribute1>value</attribute1>
<attribute2>value</attribute2>
-->
</Config>
</Component>
2. Aktualisieren Sie die Datei contentManagerFlow_PD.xml im Verzeichnis INSERVICE_CONFIG/System/Config/Flows/ContentManager so, dass sie die folgenden Vorverarbeitungsknoten enthält:
<start-state name="start">
<transition to="runConvertImagesSubFlow"/>
</start-state>
<!-- Normalize sources -->
<node name="runCMPublishNormalizeSubFlow">
<action class="com.enigma.workflowengine.handlers.FlowActionHandler" config-type="handler">
<processDefinitionPath>${enigma.config.home}/System/Config/Flows/ContentManager/
cmPublishNormalizeFlow_PD.xml</processDefinitionPath>
</action>
<transition name="failure" to="End"/>
<transition name="success" to="runConvertImagesSubFlow"/>
<transition name="reenter" to="runCMPublishNormalizeSubFlow"/>
</node>
<node name="runConvertImagesSubFlow">
<action class="com.enigma.workflowengine.handlers.FlowActionHandler" config-type="handler">
<processDefinitionPath>${enigma.config.home}/System/Config/Flows/ContentManager/
convertImagesFlow_CustomPD.xml</processDefinitionPath>
<monitoringName>Run Convert Images Flow</monitoringName>
</action>
<transition name="failure" to="End"/>
<transition name="success" to="runCheckGlobalDiskSpaceFlow"/>
<transition name="reenter" to="runConvertImagesSubFlow"/>
</node>
<node name="runCheckGlobalDiskSpaceFlow">
<action class="com.enigma.workflowengine.handlers.FlowActionHandler" config-type="handler">
<processDefinitionPath>${enigma.config.home}/System/Config/Flows/ContentManager/
checkGlobalDiskSpaceFlow_PD.xml</processDefinitionPath>
<monitoringName>Check Disk Space</monitoringName>
</action>
<transition name="failure" to="End"/>
<transition name="success" to="runHandlePDFLinksFlow"/>
<transition name="reenter" to="runCheckGlobalDiskSpaceFlow"/>
</node>

<!-- Setup profile path.
<node name="getProfilePath">
<action class="com.enigma.workflowengine.handlers.ProcessActionHandler" config-type="handler">
<contextName>ContentManager.Application.BusinessLogic</contextName>
<componentName>PacketDeployer</componentName>
<methodName>getProfilePath</methodName>
<profileName>${profile_name}</profileName>
<monitoringName>Retrieve Profile Path</monitoringName>
</action>
<transition name="failure" to="End"/>
<transition name="success" to="runHandlePDFLinksFlow"/>
<transition name="reenter" to="getProfilePath"/>
</node>
-->
<node name="runHandlePDFLinksFlow">
<action class="com.enigma.workflowengine.handlers.FlowActionHandler" config-type="handler">
<processDefinitionPath>${enigma.config.home}/System/Config/Flows/ContentManager/
handlePDFLinksFlow_PD.xml</processDefinitionPath>
<monitoringName>Handle PDF Links</monitoringName>
</action>
<transition name="failure" to="End"/>
<transition name="success" to="TypeOfCMScriptDecision"/>
<transition name="reenter" to="runHandlePDFLinksFlow"/>
</node>
<decision name="TypeOfCMScriptDecision">
<transition name="failure" to="End"/>
<transition name="CreateCMScriptFlow" to="runCreateCMScriptFlow">
<condition expression="#{S1000D_publication != 'true'}" />
</transition>
<transition name="CreateCMScriptForS1000DFlow" to="runCreateCMScriptForS1000DFlow">
<condition expression="#{S1000D_publication == 'true'}" />
</transition>
</decision>

<node name="runCreateCMScriptFlow">
<action class="com.enigma.workflowengine.handlers.FlowActionHandler" config-type="handler">
<processDefinitionPath>${enigma.config.home}/System/Config/Flows/ContentManager/
createCMScriptFlow_PD.xml</processDefinitionPath>
<monitoringName>Create Script</monitoringName>
</action>
<transition name="failure" to="End"/>
<transition name="success" to="extractFeedIds"/>
<transition name="reenter" to="runCreateCMScriptFlow"/>
</node>

<node name="runCreateCMScriptForS1000DFlow">
<action class="com.enigma.workflowengine.handlers.FlowActionHandler" config-type="handler">
<processDefinitionPath>${enigma.config.home}/System/Config/Flows/ContentManager/
createCMScriptFlowForS1000D_PD.xml</processDefinitionPath>
<monitoringName>Create Script For S1000D</monitoringName>
</action>
<transition name="failure" to="End"/>
<transition name="success" to="extractFeedIds"/>
<transition name="reenter" to="runCreateCMScriptForS1000DFlow"/>
</node>
<!-- Copy contents before this node -->
<node name="extractFeedIds">
3. Fügen Sie der Datei convertCGMToSVGFlow_PD.xml im Verzeichnis INSERVICE_CONFIG/System/Config/Flows/ContentManager eine neue Eigenschaft hinzu.
Kommentieren Sie hierzu zunächst die letzten zwei Zeilen in diesem Teil der Datei aus:
<node name="ConvertCGMToSVGNode">
<action class="com.enigma.workflowengine.handlers.ProcessActionHandler" config-type="handler">
<contextName>DataProcess.Application.BusinessLogic</contextName>
<componentName>CGMToSVGConverter</componentName>
<methodName>doConvertViaPTCTool</methodName>
Fügen Sie als Nächstes die folgende Eigenschaft unter den auskommentierten Zeilen hinzu:
<componentName>CustomCGMToSVGConvertor</componentName>
<methodName>convertCGMToSVG</methodName>
4. Kompilieren Sie die Datei CustomCGMToSVGConvertor.java, und kopieren Sie die Datei CustomCGMToSVGConvertor.class im Verzeichnis INSERVICE_HOME/InS_SW/SW/System/WildFly/modules/system/layers/base/com/ptc/e3c/main/SCEImageConverter.jar/com/ptc/sce/imageConverter.
Nachdem Sie die Konfiguration abgeschlossen haben, führen Sie die Aufgabe Transform and Load oder Transform and Load CSV Data aus, wobei Sie die Option Convert CGM to SVG auf true festlegen, um die Grafiken zu konvertieren: