Conversione delle immagini CGM in SVG
Per convertire le rappresentazioni grafiche CGM in SVG, è necessario disporre di un convertitore da CGM a SVG. La conversione ha luogo quando viene eseguito il task Publish to Preview.
Il convertitore viene installato come plug-in nel server Publisher. Per implementare il convertitore, attenersi alla procedura descritta di seguito.
1. Definire un componente denominato CustomCGMtoSVGConverter in un file di configurazione personalizzato del contenuto.
Il file di configurazione deve essere memorizzato nella directory INSERVICE_CONFIG/System/Config. È possibile utilizzare un file già esistente nella directory, ad esempio customizedContext_3.conf.xml, ma si consiglia di crearne uno nuovo. È necessario assegnare al file il nome customizedContext_X.conf.xml, dove X è un numero qualsiasi. Sebbene il componente possa trovarsi in più file, il sistema utilizza sempre il componente presente nel file con il numero più alto.
È possibile configurare le proprietà specifiche del convertitore in questo componente. Queste proprietà sono accessibili alla classe del componente tramite il metodo riportato di seguito.
public void configure(IConfiguration conf) throws ConfigurationException {
È possibile accedere ai parametri di configurazione dichiarati nel file di configurazione utilizzando vari metodi definiti nell'interfaccia IConfiguration presente nel file Framework.jar con il percorso del pacchetto com/enigma/sdk/framework/configuration.
2. Creare una classe Java, ad esempio CustomCGMtoSVGConverter, per il convertitore da CGM a SVG estendendo la classe com.enigma.imageConverter.ImageConverter che si trova nel file SCEImageConverter.jar.
3. Creare un metodo denominato convertCGMToSVG con tre parametri stringa quali input folder, output folder e output format.
Questo metodo deve convertire le immagini CGM presenti nella cartella di input in immagini SVG e inserirle nella cartella di output.
4. Sovrascrivere il metodo execute(Map variables, String method).
Se il nome del metodo è convertCGMToSVG, dalla mappa delle variabili è possibile estrarre i parametri indicati di seguito.
//input folder
String input = (String) variables.get("input");
//output folder
String output = (String) variables.get("output");
//output format
String outputFormat = (String) variables.get("outputFormat")
Chiamare successivamente il metodo definito nel passo 2 con i parametri sopra indicati. I file CGM presenti nella cartella di input dovrebbero a questo punto essere convertiti in un file SVG e inseriti nella cartella di output.
5. Aggiornare il flusso specifico del caricamento per la conversione delle immagini.
6. Aggiornare il componente convertitore da CGM a SVG e il nome del metodo utilizzato nel nodo ConvertCGMToSVGNode del flusso secondario CGMtoSVGConverterSubFlow_PD.xml.
I nomi del componente e del metodo devono essere uguali a quelli definiti nei passi 2 e 4. Il metodo da richiamare deve essere definito nella classe personalizzata creata nel passo 1.
Dopo avere implementato il convertitore, attenersi alla procedura descritta di seguito per personalizzare la conversione da CGM a SVG.
1. Aggiungere la proprietà indicata di seguito nel file customizedContext_3.conf.xml che si trova nella directory INSERVICE_CONFIG/System/Config.
<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. Aggiornare il file contentManagerFlow_PD.xml disponibile nella directory INSERVICE_CONFIG/System/Config/Flows/ContentManager per includere i nodi di preelaborazione indicati di seguito.
<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_PD.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. Aggiungere una nuova proprietà al file convertCGMToSVGFlow_PD.xml che si trova nella directory INSERVICE_CONFIG/System/Config/Flows/ContentManager.
A tal fine commentare innanzitutto le ultime due righe in questa parte del file.
<node name="ConvertCGMToSVGNode">
<action class="com.enigma.workflowengine.handlers.ProcessActionHandler" config-type="handler">
<contextName>DataProcess.Application.BusinessLogic</contextName>
<componentName>CGMToSVGConverter</componentName>
<methodName>doConvertViaPTCTool</methodName>
Successivamente aggiungere la seguente proprietà sotto le righe commentate.
<componentName>CustomCGMToSVGConvertor</componentName>
<methodName>convertCGMToSVG</methodName>
4. Compilare il file CustomCGMToSVGConvertor.java e copiare il file CustomCGMToSVGConvertor.class disponibile nella directory INSERVICE_HOME/InS_SW/SW/System/WildFly/modules/system/layers/base/com/ptc/e3c/main/SCEImageConverter.jar/com/ptc/sce/imageConverter.
Dopo avere completato la configurazione, eseguire il task Transform and Load with Collection o il task Transform and Load CSV Data con l'opzione Convert CGM to SVG impostata su true per convertire la rappresentazione grafica.