Публикация и загрузка в Servigistics InService > Дополнительная информация > Настройка TAL > Преобразование изображений CGM в SVG
  
Преобразование изображений CGM в SVG
Для преобразования графики CGM в SVG требуется преобразователь CGM в SVG. Преобразование происходит, когда выполняется задание "Publish to Preview" (Публикация для предварительного просмотра).
Преобразователь устанавливается как подключаемый модуль на сервере Publisher. Для установки преобразователя выполните следующие шаги:
1. Найдите в пользовательском файле конфигурации содержимого компонент с наименованием CustomCGMtoSVGConverter.
Файл конфигурации должен находиться в каталоге INSERVICE_CONFIG/System/Config. Можно использовать существующий файл, такой как customizedContext_3.conf.xml, но рекомендуется создать новый файл. Файл должен иметь наименование customizedContext_X.conf.xml, где X - любое число. Хотя компонент может содержаться в нескольких файлах, система всегда использует компонент из файла с самым большим номером.
В этом компоненте можно настроить конкретные свойства преобразователя. Эти свойства доступны классу компонента через следующий метод:
public void configure(IConfiguration conf) throws ConfigurationException {
К параметрам конфигурации, объявленным в файле конфигурации, можно получить доступ с помощью различных методов, которые определены в интерфейсе IConfiguration, находящемся в файле Framework.jar, расположенном в папке пакета com/enigma/sdk/framework/configuration.
2. Создайте Java-класс (например, CustomCGMtoSVGConverter) для преобразователя CGM в SVG, расширив класс com.enigma.imageConverter.ImageConverter, находящийся в файле SCEImageConverter.jar.
3. Создайте метод с именем convertCGMToSVG и тремя строковыми параметрами, такими как input folder, output folder и output format.
Этот метод должен преобразовать изображения CGM, существующие в папке входных данных, в изображения SVG и поместить их в папку вывода.
4. Перезапишите метод execute(Map variables, String method).
Если имя метода convertCGMToSVG, то из сопоставления переменных можно извлечь следующие параметры:
//input folder
String input = (String) variables.get("input");
//output folder
String output = (String) variables.get("output");
//output format
String outputFormat = (String) variables.get("outputFormat")
Затем вызовите метод, определенный в шаге 2, с перечисленными выше параметрами. Ожидается, что файлы CGM, существующие в папке входных данных, преобразуются в файл SVG и помещаются в папку вывода.
5. Обновите специфический для загрузки поток преобразования изображений.
6. Обновите компонент преобразователя CGM в SVG и имя метода, используемого в узле ConvertCGMToSVGNode подпотока CGMtoSVGConverterSubFlow_PD.xml.
Имя компонента и имя метода должны совпадать с определенными в шагах 2 и 4. Метод, который будет вызван, должен быть определен в пользовательском классе, созданном в шаге 1.
После реализации преобразователя выполните следующие шаги, чтобы настроить обработку преобразования CGM в SVG:
1. Добавьте следующее свойство в файл customizedContext_3.conf.xml, находящийся в каталоге 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. Обновите файл contentManagerFlow_PD.xml, находящийся в каталоге INSERVICE_CONFIG/System/Config/Flows/ContentManager, чтобы включить следующие узлы предварительной обработки:
<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. Добавьте новое свойство в файл convertCGMToSVGFlow_PD.xml, находящийся в каталоге INSERVICE_CONFIG/System/Config/Flows/ContentManager.
Для этого сначала закомментируйте последние две строки в этой части файла:
<node name="ConvertCGMToSVGNode">
<action class="com.enigma.workflowengine.handlers.ProcessActionHandler" config-type="handler">
<contextName>DataProcess.Application.BusinessLogic</contextName>
<componentName>CGMToSVGConverter</componentName>
<methodName>doConvertViaPTCTool</methodName>
Затем добавьте ниже закомментированных строк следующее свойство:
<componentName>CustomCGMToSVGConvertor</componentName>
<methodName>convertCGMToSVG</methodName>
4. Скомпилируйте файл CustomCGMToSVGConvertor.java и скопируйте файл CustomCGMToSVGConvertor.class, находящийся в каталоге INSERVICE_HOME/InS_SW/SW/System/WildFly/modules/system/layers/base/com/ptc/e3c/main/SCEImageConverter.jar/com/ptc/sce/imageConverter.
По окончании конфигурирования выполните задание Transform and Load with Collection (Преобразовать и загрузить с набором) или задание Transform and Load CSV Data (Преобразовать и загрузить данные CSV), задав для опции Convert CGM to SVG (Преобразовать CGM в SVG) значение true, чтобы преобразовать графику: