Conversión de imágenes CGM a SVG
Servigistics InService proporciona la capacidad de convertir las imágenes CGM de los datos en imágenes SVG. Las imágenes SVG tienen la misma calidad que las imágenes CGM, pero no requieren un plug-in de explorador Web para verlas.
Para convertir gráficos CGM en SVG, se debe disponer de un convertidor de CGM a SVG. La conversión se produce cuando se publican los datos, antes de que se carguen en el sistema. El convertidor de Larson CGM Engine se proporciona como complemento de la instalación con Servigistics InService. Al instalar Larson, las imágenes CGM se convierten automáticamente a SVG si se selecciona la opción.
Para utilizar otro convertidor, se debe configurar el sistema para soportar ese convertidor. El convertidor se instala como plug-in en el servidor de Publisher. Siga estos pasos para implementar el convertidor:
1. Defina un componente denominado CustomCGMtoSVGConverter en un fichero de configuración de contenido personalizado.
El fichero de configuración debe estar en el directorio CONFIG_INSERVICE/System/Config. Se puede utilizar un fichero ya existente como, por ejemplo customizedContext_3.conf.xml, pero es recomendable crear un nuevo fichero. El fichero debe llamarse customizedContext_X.conf.xml, donde X es cualquier número. Aunque el componente puede estar en más de un fichero, el sistema siempre utiliza el componente del fichero que tenga el número más alto.
Es posible configurar las propiedades específicas del convertidor en este componente. Mediante estas propiedades, se puede acceder a la clase de componente con el siguiente método:
public void configure(IConfiguration conf) throws ConfigurationException {
Se puede acceder a los parámetros de configuración declarados en el fichero de configuración mediante distintos métodos definidos en la interfaz IConfiguration que se encuentra en el fichero Framework.jar con la ruta de paquete com/enigma/sdk/framework/configuration. El fichero Framework.jar se encuentra en INICIO_INSERVICE\InS_SW\SW\System\WildFly\modules\system\layers\base\com\ptc\e3c\main.
2. Cree una clase Java (por ejemplo CustomCGMtoSVGConverter) para el convertidor de CGM a SVG. Para ello, se debe extender la clase com.enigma.imageConverter.ImageConverter del fichero SCEImageConverter.jar.
3. Cree un método denominado convertCGMToSVG con tres parámetros de cadena, como input folder, output folder y output format.
Este método debería convertir las imágenes CGM que están en la carpeta de entrada en imágenes SVG y colocarlas en la carpeta de salida.
4. Sobrescriba el método execute(Map variables, String method).
Si el nombre del método es convertCGMToSVG, a partir de la asignación de variables se pueden extraer los siguientes parámetros:
//input folder
String input = (String) variables.get("input");
//output folder
String output = (String) variables.get("output");
//output format
String outputFormat = (String) variables.get("outputFormat")
A continuación, llame al método definido en el paso 2 con los parámetros anteriores. Se espera que los ficheros CGM de la carpeta de entrada se conviertan en un fichero SVG y se coloquen en la carpeta de salida.
5. Actualice el flujo específico de carga para la conversión de imágenes.
6. Actualice el componente del convertidor de CGM a SVG y el nombre del método utilizado en el nodo ConvertCGMToSVGNode del subflujo CGMtoSVGConverterSubFlow_PD.xml.
El nombre del componente y el del método deben ser iguales, tal como se define en los pasos 2 y 4. El método que se invocará debe definirse en la clase personalizada que se ha creado en el paso 1.
Una vez que se haya implementado el convertidor, siga estos pasos para personalizar el proceso de conversión de CGM a SVG:
1. Añada la siguiente propiedad en el fichero customizedContext_3.conf.xml situado en el directorio CONFIG_INSERVICE/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. Actualice el fichero contentManagerFlow_PD.xml situado en el directorio CONFIG_INSERVICE/System/Config/Flows/ContentManager para incluir los siguientes nodos de preprocesamiento:
<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. Añada una nueva propiedad al fichero convertCGMToSVGFlow_PD.xml situado en el directorio CONFIG_INSERVICE/System/Config/Flows/ContentManager.
Para ello, se deben comentar las dos últimas líneas de esta parte del fichero:
<node name="ConvertCGMToSVGNode">
<action class="com.enigma.workflowengine.handlers.ProcessActionHandler" config-type="handler">
<contextName>DataProcess.Application.BusinessLogic</contextName>
<componentName>CGMToSVGConverter</componentName>
<methodName>doConvertViaPTCTool</methodName>
A continuación, añada la siguiente propiedad en las líneas comentadas:
<componentName>CustomCGMToSVGConvertor</componentName>
<methodName>convertCGMToSVG</methodName>
4. Compile el fichero CustomCGMToSVGConvertor.java y copie el fichero CustomCGMToSVGConvertor.class situado en el directorio INICIO_INSERVICE/InS_SW/SW/System/WildFly/modules/system/layers/base/com/ptc/e3c/main/SCEImageConverter.jar/com/ptc/sce/imageConverter.
Una vez finalizada la configuración, ejecute la tarea Transform and Load o Transform and Load CSV Data con la opción Convert CGM to SVG definida en true para convertir los gráficos: