Instruction:
作为 Java 安全专家，检测此代码中的安全漏洞：
## 内容1
### 文件路径：
jbpm-designer-backend/pom.xml
### 代码内容：
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.jbpm</groupId>
    <artifactId>jbpm-designer</artifactId>
    <version>6.5.1-SNAPSHOT</version>
  </parent>

  <artifactId>jbpm-designer-backend</artifactId>
  <packaging>jar</packaging>

  <name>jBPM Designer - Backend</name>

  <dependencies>

    <!-- dependencies added because of new illegal transitive dependency check -->
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.lucene</groupId>
      <artifactId>lucene-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.eclipse.emf</groupId>
      <artifactId>org.eclipse.emf.common</artifactId>
    </dependency>
    <dependency>
      <groupId>org.eclipse.emf</groupId>
      <artifactId>org.eclipse.emf.ecore</artifactId>
    </dependency>
    <dependency>
      <groupId>org.eclipse.emf</groupId>
      <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
    </dependency>
    <dependency>
      <groupId>org.guvnor</groupId>
      <artifactId>guvnor-project-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.guvnor</groupId>
      <artifactId>guvnor-services-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.guvnor</groupId>
      <artifactId>guvnor-structure-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.guvnor</groupId>
      <artifactId>guvnor-structure-backend</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jboss.errai</groupId>
      <artifactId>errai-bus</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jboss.errai</groupId>
      <artifactId>errai-security-server</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-metadata-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.kie.workbench.services</groupId>
      <artifactId>kie-wb-common-services-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.kie.workbench.services</groupId>
      <artifactId>kie-wb-common-refactoring-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.kie.workbench.services</groupId>
      <artifactId>kie-wb-common-refactoring-backend</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-backend-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-io</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-nio2-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-testing-utils</artifactId>
      <scope>test</scope>
    </dependency>

    <!-- jBPM Designer - Client -->
    <dependency>
      <groupId>org.jbpm</groupId>
      <artifactId>jbpm-designer-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jbpm</groupId>
      <artifactId>jbpm-designer-client</artifactId>
      <scope>test</scope>
    </dependency>

    <!-- jBPM -->
    <dependency>
      <groupId>org.mvel</groupId>
      <artifactId>mvel2</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jbpm</groupId>
      <artifactId>jbpm-bpmn2</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jbpm</groupId>
      <artifactId>jbpm-flow</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jbpm</groupId>
      <artifactId>jbpm-flow-builder</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jbpm</groupId>
      <artifactId>jbpm-workitems</artifactId>
      <exclusions>
        <exclusion>
          <groupId>jdom</groupId>
          <artifactId>jdom</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.jbpm</groupId>
      <artifactId>jbpm-bpmn2-emfextmodel</artifactId>
    </dependency>

    <!-- jBPM Migration -->
    <dependency>
      <groupId>org.jbpm.jbpm5</groupId>
      <artifactId>jbpmmigration</artifactId>
      <exclusions>
        <exclusion>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
        </exclusion>
        <exclusion>
          <groupId>xml-apis</groupId>
          <artifactId>xml-apis</artifactId>
        </exclusion>
        <exclusion>
          <groupId>xalan</groupId>
          <artifactId>xalan</artifactId>
        </exclusion>
        <exclusion>
          <groupId>xerces</groupId>
          <artifactId>xercesImpl</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <!--  Drools -->
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-compiler</artifactId>
    </dependency>

    <!-- Form Modeler -->
    <dependency>
      <groupId>org.jbpm</groupId>
      <artifactId>jbpm-form-modeler-bpmn-form-builder</artifactId>
    </dependency>

    <!-- war libs -->
    <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
    </dependency>

    <dependency>
      <groupId>org.jdom</groupId>
      <artifactId>jdom</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.velocity</groupId>
      <artifactId>velocity</artifactId>
      <exclusions>
        <exclusion>
          <groupId>oro</groupId>
          <artifactId>oro</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>xmlgraphics-commons</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-parser</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-transcoder</artifactId>
      <exclusions>
        <exclusion>
          <groupId>fop</groupId>
          <artifactId>fop</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-extension</artifactId>
      <exclusions>
        <exclusion>
          <groupId>xml-apis</groupId>
          <artifactId>xmlParserAPIs</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-dom</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-xml</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-bridge</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-css</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-svg-dom</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-svggen</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-util</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-ext</artifactId>
      <exclusions>
        <exclusion>
          <groupId>xml-apis</groupId>
          <artifactId>xmlParserAPIs</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-script</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-gvt</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-awt-util</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-anim</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.xmlgraphics</groupId>
      <artifactId>batik-codec</artifactId>
    </dependency>
    <dependency>
      <groupId>xerces</groupId>
      <artifactId>xercesImpl</artifactId>
    </dependency>
    <dependency>
      <groupId>com.sun.xml.bind</groupId>
      <artifactId>jaxb-impl</artifactId>
      <exclusions>
        <exclusion>
          <groupId>javax.xml.bind</groupId>
          <artifactId>jaxb-api</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.thoughtworks.xstream</groupId>
      <artifactId>xstream</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jboss.spec.javax.servlet</groupId>
      <artifactId>jboss-servlet-api_3.0_spec</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>rhino</groupId>
      <artifactId>js</artifactId>
    </dependency>
    <dependency>
      <groupId>xalan</groupId>
      <artifactId>xalan</artifactId>
    </dependency>
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-core-asl</artifactId>
    </dependency>
    <dependency>
      <groupId>org.codehaus.jackson</groupId>
      <artifactId>jackson-mapper-asl</artifactId>
    </dependency>
    <dependency>
      <groupId>org.antlr</groupId>
      <artifactId>ST4</artifactId>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.osgi</groupId>
      <artifactId>org.osgi.compendium</artifactId>
    </dependency>
    <dependency>
      <groupId>avalon-framework</groupId>
      <artifactId>avalon-framework</artifactId>
    </dependency>
    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.abdera</groupId>
      <artifactId>abdera-i18n</artifactId>
    </dependency>

    <!-- commons -->
    <dependency>
      <groupId>commons-collections</groupId>
      <artifactId>commons-collections</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-codec</groupId>
      <artifactId>commons-codec</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-configuration</groupId>
      <artifactId>commons-configuration</artifactId>
      <exclusions>
        <exclusion>
          <groupId>commons-digester</groupId>
          <artifactId>commons-digester</artifactId>
        </exclusion>
        <exclusion>
          <groupId>commons-beanutils</groupId>
          <artifactId>commons-beanutils-core</artifactId>
        </exclusion>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <exclusions>
        <exclusion>
          <groupId>commons-codec</groupId>
          <artifactId>commons-codec</artifactId>
        </exclusion>
        <exclusion>
          <groupId>commons-logging</groupId>
          <artifactId>commons-logging</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-fileupload</groupId>
      <artifactId>commons-fileupload</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
    </dependency>

    <!-- simulation -->
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>jbpm-simulation</artifactId>
    </dependency>

    <!-- repository dependencies -->
    <dependency>
      <groupId>javax.inject</groupId>
      <artifactId>javax.inject</artifactId>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.kie</groupId>
      <artifactId>kie-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-backend-server</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-commons-editor-backend</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-nio2-model</artifactId>
    </dependency>

    <!-- Datamodel -->
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-workbench-models-commons</artifactId>
    </dependency>
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-workbench-models-datamodel-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.kie.workbench.services</groupId>
      <artifactId>kie-wb-common-services-backend</artifactId>
    </dependency>
    <dependency>
      <groupId>org.kie.workbench.services</groupId>
      <artifactId>kie-wb-common-datamodel-backend</artifactId>
    </dependency>
    <dependency>
      <groupId>org.kie.workbench.services</groupId>
      <artifactId>kie-wb-common-datamodel-api</artifactId>
    </dependency>

    <!-- Logging -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-nio2-jgit</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-nio2-fs</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.eclipse</groupId>
      <artifactId>org.eclipse.bpmn2</artifactId>
    </dependency>

    <dependency>
      <groupId>com.lowagie</groupId>
      <artifactId>itext</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>unpack</id>
            <phase>compile</phase>
            <goals>
              <goal>unpack</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>org.jbpm</groupId>
                  <artifactId>jbpm-designer-client</artifactId>
                  <version>${project.version}</version>
                  <type>jar</type>
                  <overWrite>false</overWrite>
                  <outputDirectory>${project.basedir}/src/test/resources</outputDirectory>
                  <includes>**/public/**</includes>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-clean-plugin</artifactId>
        <configuration>
          <filesets>
            <fileset>
              <directory>${project.basedir}/src/test/resources/org/jbpm/designer/public</directory>
              <followSymlinks>false</followSymlinks>
            </fileset>
          </filesets>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
## 内容2
### 文件路径：
jbpm-designer-backend/src/main/java/org/jbpm/designer/web/server/TransformerServlet.java
### 代码内容：
package org.jbpm.designer.web.server;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.StringReader;
import java.util.*;
import javax.inject.Inject;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamReader;

import bpsim.impl.BpsimFactoryImpl;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.html.simpleparser.HTMLWorker;
import com.lowagie.text.pdf.PdfWriter;
import org.apache.batik.transcoder.SVGAbstractTranscoder;
import org.apache.batik.transcoder.TranscoderException;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
import org.apache.batik.transcoder.image.ImageTranscoder;
import org.apache.batik.transcoder.image.PNGTranscoder;
import org.apache.commons.codec.binary.Base64;
import org.eclipse.bpmn2.DataInputAssociation;
import org.eclipse.bpmn2.Definitions;
import org.eclipse.bpmn2.FlowElement;
import org.eclipse.bpmn2.FlowElementsContainer;
import org.eclipse.bpmn2.FlowNode;
import org.eclipse.bpmn2.FormalExpression;
import org.eclipse.bpmn2.Process;
import org.eclipse.bpmn2.RootElement;
import org.eclipse.bpmn2.SequenceFlow;
import org.eclipse.bpmn2.Task;
import org.eclipse.bpmn2.UserTask;
import org.eclipse.bpmn2.di.BPMNDiagram;
import org.eclipse.bpmn2.di.BPMNEdge;
import org.eclipse.bpmn2.di.BPMNPlane;
import org.eclipse.bpmn2.di.BPMNShape;
import org.eclipse.bpmn2.di.BpmnDiFactory;
import org.eclipse.dd.dc.Bounds;
import org.eclipse.dd.dc.DcFactory;
import org.eclipse.dd.dc.Point;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.util.FeatureMap;
import org.jboss.drools.impl.DroolsFactoryImpl;
import org.jbpm.designer.bpmn2.resource.JBPMBpmn2ResourceFactoryImpl;
import org.jbpm.designer.bpmn2.resource.JBPMBpmn2ResourceImpl;
import org.jbpm.designer.repository.Asset;
import org.jbpm.designer.repository.AssetBuilderFactory;
import org.jbpm.designer.repository.Repository;
import org.jbpm.designer.repository.impl.AssetBuilder;
import org.jbpm.designer.util.Utils;
import org.jbpm.designer.web.profile.IDiagramProfile;
import org.jbpm.designer.web.profile.IDiagramProfileService;
import org.jbpm.designer.web.profile.impl.JbpmProfileImpl;
import org.jbpm.migration.JbpmMigration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 * Transformer for svg process representation to
 * various formats.
 *
 * @author Tihomir Surdilovic
 */
public class TransformerServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static final Logger _logger = LoggerFactory.getLogger(TransformerServlet.class);
    private static final String TO_PDF = "pdf";
    private static final String TO_PNG = "png";
    private static final String TO_SVG = "svg";
    private static final String JPDL_TO_BPMN2 = "jpdl2bpmn2";
    private static final String BPMN2_TO_JSON = "bpmn2json";
    private static final String JSON_TO_BPMN2 = "json2bpmn2";
    private static final String HTML_TO_PDF = "html2pdf";
    private static final String RESPACTION_SHOWURL = "showurl";

    private static final String SVG_WIDTH_PARAM = "svgwidth";
    private static final String SVG_HEIGHT_PARAM = "svgheight";
    private static final float DEFAULT_PDF_WIDTH = (float) 750.0;
    private static final float DEFAULT_PDF_HEIGHT = (float) 500.0;

    static {
        StringTokenizer html2pdfTagsSupported = new StringTokenizer("ol ul li a pre font span br p div body table td th tr i b u sub sup em strong s strike h1 h2 h3 h4 h5 h6");
        HTMLWorker.tagsSupported.clear();
        while(html2pdfTagsSupported.hasMoreTokens()) {
            HTMLWorker.tagsSupported.put(html2pdfTagsSupported.nextToken(), null);
        }
    }

    private IDiagramProfile profile;
    // For unit testing purpose only
    public void setProfile(IDiagramProfile profile) {
        this.profile = profile;
    }

    @Inject
    private IDiagramProfileService _profileService = null;

    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        String formattedSvgEncoded = req.getParameter("fsvg");
        String uuid = Utils.getUUID(req);
        String profileName = Utils.getDefaultProfileName(req.getParameter("profile"));
        String transformto = req.getParameter("transformto");
        String jpdl = req.getParameter("jpdl");
        String gpd = req.getParameter("gpd");
        String bpmn2in = req.getParameter("bpmn2");
        String jsonin = req.getParameter("json");
        String preprocessingData = req.getParameter("pp");
        String respaction = req.getParameter("respaction");
        String pp = req.getParameter("pp");
        String processid = req.getParameter("processid");
        String sourceEnc = req.getParameter("enc");
        String convertServiceTasks = req.getParameter("convertservicetasks");
        String htmlSourceEnc = req.getParameter("htmlenc");

        String formattedSvg = ( formattedSvgEncoded == null ? "" : new String(Base64.decodeBase64(formattedSvgEncoded), "UTF-8") );

        String htmlSource = ( htmlSourceEnc == null ? "" : new String(Base64.decodeBase64(htmlSourceEnc), "UTF-8") );

        if(sourceEnc != null && sourceEnc.equals("true")) {
            bpmn2in = new String(Base64.decodeBase64(bpmn2in), "UTF-8");
        }

        if (profile == null) {
            profile = _profileService.findProfile(req, profileName);
        }

        DroolsFactoryImpl.init();
        BpsimFactoryImpl.init();

        Repository repository = profile.getRepository();

        if (transformto != null && transformto.equals(TO_PDF)) {
            if(respaction != null && respaction.equals(RESPACTION_SHOWURL)) {

                try {
                    ByteArrayOutputStream pdfBout = new ByteArrayOutputStream();
                    Document pdfDoc = new Document(PageSize.A4);
                    PdfWriter pdfWriter = PdfWriter.getInstance(pdfDoc, pdfBout);
                    pdfDoc.open();
                    pdfDoc.addCreationDate();

                    PNGTranscoder t = new PNGTranscoder();
                    t.addTranscodingHint(ImageTranscoder.KEY_MEDIA, "screen");

                    float widthHint = getFloatParam(req, SVG_WIDTH_PARAM, DEFAULT_PDF_WIDTH);
                    float heightHint = getFloatParam(req, SVG_HEIGHT_PARAM, DEFAULT_PDF_HEIGHT);
                    String objStyle = "style=\"width:" + widthHint + "px;height:" + heightHint + "px;\"";
                    t.addTranscodingHint(SVGAbstractTranscoder.KEY_WIDTH, widthHint);
                    t.addTranscodingHint(SVGAbstractTranscoder.KEY_HEIGHT, heightHint);

                    ByteArrayOutputStream imageBout = new ByteArrayOutputStream();
                    TranscoderInput input = new TranscoderInput(new StringReader(
                            formattedSvg));
                    TranscoderOutput output = new TranscoderOutput(imageBout);
                    t.transcode(input, output);

                    Image processImage = Image.getInstance(imageBout.toByteArray());
                    scalePDFImage(pdfDoc, processImage);
                    pdfDoc.add(processImage);

                    pdfDoc.close();

                    resp.setCharacterEncoding("UTF-8");
                    resp.setContentType("text/plain");

                    resp.getWriter().write("<object type=\"application/pdf\" " + objStyle + " data=\"data:application/pdf;base64," + Base64.encodeBase64String(pdfBout.toByteArray()) + "\"></object>");
                } catch(Exception e) {
                    resp.sendError(500, e.getMessage());
                }
            } else {
                storeInRepository(uuid, formattedSvg, transformto, processid, repository);

                try {
                    resp.setCharacterEncoding("UTF-8");
                    resp.setContentType("application/pdf");
                    if (processid != null) {
                        resp.setHeader("Content-Disposition",
                                "attachment; filename=\"" + processid + ".pdf\"");
                    } else {
                        resp.setHeader("Content-Disposition",
                                "attachment; filename=\"" + uuid + ".pdf\"");
                    }

                    ByteArrayOutputStream bout = new ByteArrayOutputStream();
                    Document pdfDoc = new Document(PageSize.A4);
                    PdfWriter pdfWriter = PdfWriter.getInstance(pdfDoc, resp.getOutputStream());
                    pdfDoc.open();
                    pdfDoc.addCreationDate();

                    PNGTranscoder t = new PNGTranscoder();
                    t.addTranscodingHint(ImageTranscoder.KEY_MEDIA, "screen");
                    TranscoderInput input = new TranscoderInput(new StringReader(
                            formattedSvg));
                    TranscoderOutput output = new TranscoderOutput(bout);
                    t.transcode(input, output);

                    Image processImage = Image.getInstance(bout.toByteArray());
                    scalePDFImage(pdfDoc, processImage);
                    pdfDoc.add(processImage);

                    pdfDoc.close();
                } catch(Exception e) {
                    resp.sendError(500, e.getMessage());
                }
            }
        } else if (transformto != null && transformto.equals(TO_PNG)) {
            try {
                if(respaction != null && respaction.equals(RESPACTION_SHOWURL)) {
                    ByteArrayOutputStream bout = new ByteArrayOutputStream();
                    PNGTranscoder t = new PNGTranscoder();
                    t.addTranscodingHint(ImageTranscoder.KEY_MEDIA, "screen");
                    TranscoderInput input = new TranscoderInput(new StringReader(formattedSvg));
                    TranscoderOutput output = new TranscoderOutput(bout);
                    t.transcode(input, output);
                    resp.setCharacterEncoding("UTF-8");
                    resp.setContentType("text/plain");
                    if(req.getParameter(SVG_WIDTH_PARAM) != null && req.getParameter(SVG_HEIGHT_PARAM) != null) {
                        int widthHint = (int) getFloatParam(req, SVG_WIDTH_PARAM, DEFAULT_PDF_WIDTH);
                        int heightHint = (int) getFloatParam(req, SVG_HEIGHT_PARAM, DEFAULT_PDF_HEIGHT);
                        resp.getWriter().write("<img width=\"" + widthHint + "\" height=\"" + heightHint + "\" src=\"data:image/png;base64," + Base64.encodeBase64String(bout.toByteArray()) + "\">");
                    } else {
                        resp.getWriter().write("<img src=\"data:image/png;base64," + Base64.encodeBase64String(bout.toByteArray()) + "\">");
                    }
                } else {
                    storeInRepository(uuid, formattedSvg, transformto, processid, repository);
                    resp.setContentType("image/png");
                    if (processid != null) {
                        resp.setHeader("Content-Disposition", "attachment; filename=\"" + processid + ".png\"");
                    } else {
                        resp.setHeader("Content-Disposition", "attachment; filename=\"" + uuid + ".png\"");
                    }

                    PNGTranscoder t = new PNGTranscoder();
                    t.addTranscodingHint(ImageTranscoder.KEY_MEDIA, "screen");
                    TranscoderInput input = new TranscoderInput(new StringReader(
                            formattedSvg));
                    TranscoderOutput output = new TranscoderOutput(
                            resp.getOutputStream());
                    t.transcode(input, output);
                }
            } catch (TranscoderException e) {
                resp.sendError(500, e.getMessage());
            }
        } else if (transformto != null && transformto.equals(TO_SVG)) {
            storeInRepository(uuid, formattedSvg, transformto, processid, repository);
        } else if (transformto != null && transformto.equals(JPDL_TO_BPMN2)) {
            try {
                String bpmn2 = JbpmMigration.transform(jpdl);
                Definitions def = ((JbpmProfileImpl) profile).getDefinitions(bpmn2);
                // add bpmndi info to Definitions with help of gpd
                addBpmnDiInfo(def, gpd);
                // hack for now
                revisitSequenceFlows(def, bpmn2);
                // another hack if id == name
                revisitNodeNames(def);

                // get the xml from Definitions
                ResourceSet rSet = new ResourceSetImpl();
                rSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("bpmn2", new JBPMBpmn2ResourceFactoryImpl());
                JBPMBpmn2ResourceImpl bpmn2resource = (JBPMBpmn2ResourceImpl) rSet.createResource(URI.createURI("virtual.bpmn2"));
                rSet.getResources().add(bpmn2resource);
                bpmn2resource.getContents().add(def);
                ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
                bpmn2resource.save(outputStream, new HashMap<Object, Object>());
                String fullXmlModel =  outputStream.toString();
                // convert to json and write response
                String json = profile.createUnmarshaller().parseModel(fullXmlModel, profile, pp);
                resp.setCharacterEncoding("UTF-8");
                resp.setContentType("application/json");
                resp.getWriter().print(json);
            } catch(Exception e) {
                _logger.error(e.getMessage());
                resp.setContentType("application/json");
                resp.getWriter().print("{}");
            }
        }  else if (transformto != null && transformto.equals(BPMN2_TO_JSON)) {
            try {
                if(convertServiceTasks != null && convertServiceTasks.equals("true")) {
                    bpmn2in = bpmn2in.replaceAll("drools:taskName=\".*?\"", "drools:taskName=\"ReadOnlyService\"");
                    bpmn2in = bpmn2in.replaceAll("tns:taskName=\".*?\"", "tns:taskName=\"ReadOnlyService\"");
                }

                Definitions def = ((JbpmProfileImpl) profile).getDefinitions(bpmn2in);
                def.setTargetNamespace("http://www.omg.org/bpmn20");

                if(convertServiceTasks != null && convertServiceTasks.equals("true")) {
                    // fix the data input associations for converted tasks
                    List<RootElement> rootElements =  def.getRootElements();
                    for(RootElement root : rootElements) {
                        if(root instanceof Process) {
                            updateTaskDataInputs((Process) root, def);
                        }
                    }
                }

                // get the xml from Definitions
                ResourceSet rSet = new ResourceSetImpl();
                rSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("bpmn2", new JBPMBpmn2ResourceFactoryImpl());
                JBPMBpmn2ResourceImpl bpmn2resource = (JBPMBpmn2ResourceImpl) rSet.createResource(URI.createURI("virtual.bpmn2"));
                bpmn2resource.getDefaultLoadOptions().put(JBPMBpmn2ResourceImpl.OPTION_ENCODING, "UTF-8");
                bpmn2resource.getDefaultLoadOptions().put(JBPMBpmn2ResourceImpl.OPTION_DEFER_IDREF_RESOLUTION, true);
                bpmn2resource.getDefaultLoadOptions().put( JBPMBpmn2ResourceImpl.OPTION_DISABLE_NOTIFY, true );
                bpmn2resource.getDefaultLoadOptions().put(JBPMBpmn2ResourceImpl.OPTION_PROCESS_DANGLING_HREF, JBPMBpmn2ResourceImpl.OPTION_PROCESS_DANGLING_HREF_RECORD);
                bpmn2resource.setEncoding("UTF-8");
                rSet.getResources().add(bpmn2resource);
                bpmn2resource.getContents().add(def);
                ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
                bpmn2resource.save(outputStream, new HashMap<Object, Object>());
                String revisedXmlModel =  outputStream.toString();
                String json = profile.createUnmarshaller().parseModel(revisedXmlModel, profile, pp);
                resp.setCharacterEncoding("UTF-8");
                resp.setContentType("application/json");
                resp.getWriter().print(json);
            } catch(Exception e) {
                e.printStackTrace();
                _logger.error(e.getMessage());
                resp.setContentType("application/json");
                resp.getWriter().print("{}");
            }
        } else if (transformto != null && transformto.equals(JSON_TO_BPMN2)) {
            try {
                DroolsFactoryImpl.init();
                BpsimFactoryImpl.init();
                if(preprocessingData == null) {
                    preprocessingData = "";
                }
                String processXML = profile.createMarshaller().parseModel(jsonin, preprocessingData);
                resp.setContentType("application/xml");
                resp.getWriter().print(processXML);
            } catch(Exception e) {
                e.printStackTrace();
                _logger.error(e.getMessage());
                resp.setContentType("application/xml");
                resp.getWriter().print("");
            }

        } else if (transformto != null && transformto.equals(HTML_TO_PDF)) {
            try {
                resp.setContentType("application/pdf");
                if (processid != null) {
                    resp.setHeader("Content-Disposition",
                            "attachment; filename=\"" + processid + ".pdf\"");
                } else {
                    resp.setHeader("Content-Disposition",
                            "attachment; filename=\"" + uuid + ".pdf\"");
                }

                Document pdfDoc = new Document(PageSize.A4);
                PdfWriter pdfWriter = PdfWriter.getInstance(pdfDoc, resp.getOutputStream());
                pdfDoc.open();
                pdfDoc.addCreator("jBPM Designer");
                pdfDoc.addSubject("Business Process Documentation");
                pdfDoc.addCreationDate();
                pdfDoc.addTitle("Process Documentation");

                HTMLWorker htmlWorker = new HTMLWorker(pdfDoc);
                htmlWorker.parse(new StringReader(htmlSource));
                pdfDoc.close();
            } catch(DocumentException e) {
                resp.sendError(500, e.getMessage());
            }
        }
    }

    private void updateTaskDataInputs(FlowElementsContainer container, Definitions def) {
        List<FlowElement> flowElements = container.getFlowElements();
        for(FlowElement fe : flowElements) {
            if(fe instanceof Task && !(fe instanceof UserTask)) {
                Task task = (Task) fe;
                boolean foundReadOnlyServiceTask = false;
                Iterator<FeatureMap.Entry> iter = task.getAnyAttribute().iterator();
                while(iter.hasNext()) {
                    FeatureMap.Entry entry = iter.next();
                    if(entry.getEStructuralFeature().getName().equals("taskName")) {
                        if(entry.getValue().equals("ReadOnlyService")) {
                            foundReadOnlyServiceTask = true;
                        }
                    }
                }

                if(foundReadOnlyServiceTask) {
                    if(task.getDataInputAssociations() != null) {
                        List<DataInputAssociation> dataInputAssociations = task.getDataInputAssociations();
                        for(DataInputAssociation dia : dataInputAssociations) {
                            if(dia.getTargetRef().getId().endsWith("TaskNameInput")) {
                                ((FormalExpression) dia.getAssignment().get(0).getFrom()).setBody("ReadOnlyService");
                            }
                        }
                    }
                }
            } else if(fe instanceof FlowElementsContainer) {
                updateTaskDataInputs((FlowElementsContainer) fe, def);
            }
        }
    }

    private void revisitNodeNames(Definitions def) {
        List<RootElement> rootElements =  def.getRootElements();
        for(RootElement root : rootElements) {
            if(root instanceof Process) {
                Process process = (Process) root;
                List<FlowElement> flowElements = process.getFlowElements();
                for(FlowElement fe : flowElements) {
                    if(fe.getName() != null && fe.getId().equals(fe.getName())) {
                        // change the name so they are not the same
                        fe.setName("_" + fe.getName());
                    }
                }
            }
        }
    }

    private void revisitSequenceFlows(Definitions def, String orig) {
        try {
            Map<String, Map<String, String>> sequenceFlowMapping = new HashMap<String, Map<String,String>>();
            XMLInputFactory factory = XMLInputFactory.newInstance();
            XMLStreamReader reader = factory.createXMLStreamReader(new StringReader(orig));
            while(reader.hasNext()) {
                if (reader.next() == XMLStreamReader.START_ELEMENT) {
                    if ("sequenceFlow".equals(reader.getLocalName())) {
                        String id = "";
                        String source = "";
                        String target = "";
                        for (int i = 0 ; i < reader.getAttributeCount() ; i++) {
                            if ("id".equals(reader.getAttributeLocalName(i))) {
                                id = reader.getAttributeValue(i);
                            }
                            if ("sourceRef".equals(reader.getAttributeLocalName(i))) {
                                source = reader.getAttributeValue(i);
                            }
                            if ("targetRef".equals(reader.getAttributeLocalName(i))) {
                                target = reader.getAttributeValue(i);
                            }
                        }
                        Map<String, String> valueMap = new HashMap<String, String>();
                        valueMap.put("sourceRef", source);
                        valueMap.put("targetRef", target);
                        sequenceFlowMapping.put(id, valueMap);
                    }
                }
            }
            List<RootElement> rootElements =  def.getRootElements();
            for(RootElement root : rootElements) {
                if(root instanceof Process) {
                    Process process = (Process) root;
                    List<FlowElement> flowElements = process.getFlowElements();
                    for(FlowElement fe : flowElements) {
                        if(fe instanceof SequenceFlow) {
                            SequenceFlow sf = (SequenceFlow) fe;
                            if(sequenceFlowMapping.containsKey(sf.getId())) {
                                sf.setSourceRef(getFlowNode(def, sequenceFlowMapping.get(sf.getId()).get("sourceRef")));
                                sf.setTargetRef(getFlowNode(def, sequenceFlowMapping.get(sf.getId()).get("targetRef")));
                            } else {
                                _logger.error("Could not find mapping for sequenceFlow: " + sf.getId());
                            }
                        }
                    }
                }
            }
        } catch (FactoryConfigurationError e) {
            _logger.error(e.getMessage());
            e.printStackTrace();
        } catch (Exception e) {
            _logger.error(e.getMessage());
            e.printStackTrace();
        }
    }

    private FlowNode getFlowNode(Definitions def, String nodeId) {
        List<RootElement> rootElements =  def.getRootElements();
        for(RootElement root : rootElements) {
            if(root instanceof Process) {
                Process process = (Process) root;
                List<FlowElement> flowElements = process.getFlowElements();
                for(FlowElement fe : flowElements) {
                    if(fe instanceof FlowNode) {
                        if(fe.getId().equals(nodeId)) {
                            return (FlowNode) fe;
                        }
                    }
                }
            }
        }
        return null;
    }

    private void addBpmnDiInfo(Definitions def, String gpd) {
        try {
            Map<String, Bounds> _bounds = new HashMap<String, Bounds>();
            XMLInputFactory factory = XMLInputFactory.newInstance();
            XMLStreamReader reader = factory.createXMLStreamReader(new StringReader(gpd));
            while(reader.hasNext()) {
                if (reader.next() == XMLStreamReader.START_ELEMENT) {
                    if ("node".equals(reader.getLocalName())) {
                        Bounds b = DcFactory.eINSTANCE.createBounds();
                        String nodeName = null;
                        String nodeX = null;
                        String nodeY = null;
                        String nodeWidth = null;
                        String nodeHeight = null;
                        for (int i = 0 ; i < reader.getAttributeCount() ; i++) {
                            if ("name".equals(reader.getAttributeLocalName(i))) {
                                nodeName = reader.getAttributeValue(i);
                            } else if("x".equals(reader.getAttributeLocalName(i))) {
                                nodeX = reader.getAttributeValue(i);
                            } else if("y".equals(reader.getAttributeLocalName(i))) {
                                nodeY = reader.getAttributeValue(i);
                            } else if("width".equals(reader.getAttributeLocalName(i))) {
                                nodeWidth = reader.getAttributeValue(i);
                            } else if("height".equals(reader.getAttributeLocalName(i))) {
                                nodeHeight = reader.getAttributeValue(i);
                            }
                        }
                        b.setX(new Float(nodeX).floatValue());
                        b.setY(new Float(nodeY).floatValue());
                        b.setWidth(new Float(nodeWidth).floatValue());
                        b.setHeight(new Float(nodeHeight).floatValue());
                        _bounds.put(nodeName, b);
                    }
                }
            }

            for (RootElement rootElement: def.getRootElements()) {
                if (rootElement instanceof Process) {
                    Process process = (Process) rootElement;
                    BpmnDiFactory diFactory = BpmnDiFactory.eINSTANCE;
                    BPMNDiagram diagram = diFactory.createBPMNDiagram();
                    BPMNPlane plane = diFactory.createBPMNPlane();
                    plane.setBpmnElement(process);
                    diagram.setPlane(plane);
                    for (FlowElement flowElement: process.getFlowElements()) {
                        if (flowElement instanceof FlowNode) {
                            Bounds b = _bounds.get(flowElement.getId());
                            if (b != null) {
                                BPMNShape shape = diFactory.createBPMNShape();
                                shape.setBpmnElement(flowElement);
                                shape.setBounds(b);
                                plane.getPlaneElement().add(shape);
                            }
                        } else if (flowElement instanceof SequenceFlow) {
                            SequenceFlow sequenceFlow = (SequenceFlow) flowElement;
                            BPMNEdge edge = diFactory.createBPMNEdge();
                            edge.setBpmnElement(flowElement);
                            DcFactory dcFactory = DcFactory.eINSTANCE;
                            Point point = dcFactory.createPoint();
                            if(sequenceFlow.getSourceRef() != null) {
                                Bounds sourceBounds = _bounds.get(sequenceFlow.getSourceRef().getId());
                                point.setX(sourceBounds.getX() + (sourceBounds.getWidth()/2));
                                point.setY(sourceBounds.getY() + (sourceBounds.getHeight()/2));
                            }
                            edge.getWaypoint().add(point);
//	    					List<Point> dockers = _dockers.get(sequenceFlow.getId());
//	    					for (int i = 1; i < dockers.size() - 1; i++) {
//	    						edge.getWaypoint().add(dockers.get(i));
//	    					}
                            point = dcFactory.createPoint();
                            if(sequenceFlow.getTargetRef() != null) {
                                Bounds targetBounds = _bounds.get(sequenceFlow.getTargetRef().getId());
                                point.setX(targetBounds.getX() + (targetBounds.getWidth()/2));
                                point.setY(targetBounds.getY() + (targetBounds.getHeight()/2));
                            }
                            edge.getWaypoint().add(point);
                            plane.getPlaneElement().add(edge);
                        }
                    }

                    def.getDiagrams().add(diagram);
                }
            }
        } catch (FactoryConfigurationError e) {
            _logger.error("Exception adding bpmndi info: " + e.getMessage());
        } catch (Exception e) {
            _logger.error("Exception adding bpmndi info: " + e.getMessage());
        }
    }

    protected void storeInRepository(String uuid, String svg, String transformto, String processid, Repository repository) {
        String assetFullName = "";
        try {
            if(processid != null) {
                Asset<byte[]> processAsset = repository.loadAsset(uuid);
                String assetExt = "";
                String assetFileExt = "";
                if(transformto.equals(TO_PDF)) {
                    assetExt = "-pdf";
                    assetFileExt = ".pdf";
                }
                if(transformto.equals(TO_PNG)) {
                    assetExt = "-image";
                    assetFileExt = ".png";
                }
                if(transformto.equals(TO_SVG)) {
                    assetExt = "-svg";
                    assetFileExt = ".svg";
                }

                if(processid.startsWith(".")) {
                    processid = processid.substring(1, processid.length());
                }
                assetFullName = processid + assetExt + assetFileExt;

                repository.deleteAssetFromPath(processAsset.getAssetLocation() + File.separator +  assetFullName);

                ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

                if (transformto.equals(TO_PDF)) {

                    ByteArrayOutputStream bout = new ByteArrayOutputStream();
                    Document pdfDoc = new Document(PageSize.A4);
                    PdfWriter pdfWriter = PdfWriter.getInstance(pdfDoc, outputStream);
                    pdfDoc.open();
                    pdfDoc.addCreationDate();

                    PNGTranscoder t = new PNGTranscoder();
                    t.addTranscodingHint(ImageTranscoder.KEY_MEDIA, "screen");
                    TranscoderInput input = new TranscoderInput(new StringReader(
                            svg));
                    TranscoderOutput output = new TranscoderOutput(bout);
                    t.transcode(input, output);

                    Image processImage = Image.getInstance(bout.toByteArray());
                    scalePDFImage(pdfDoc, processImage);
                    pdfDoc.add(processImage);

                    pdfDoc.close();
                } else if (transformto.equals(TO_PNG)) {
                    PNGTranscoder t = new PNGTranscoder();
                    t.addTranscodingHint(ImageTranscoder.KEY_MEDIA, "screen");
                    TranscoderInput input = new TranscoderInput(new StringReader(
                            svg));
                    TranscoderOutput output = new TranscoderOutput(outputStream);
                    try {
                        t.transcode(input, output);
                    } catch (Exception e) {
                        // issue with batik here..do not make a big deal
                        _logger.debug(e.getMessage());
                    }
                } else if(transformto.equals(TO_SVG)) {
                    OutputStreamWriter outStreamWriter = new OutputStreamWriter(outputStream);
                    outStreamWriter.write(svg);
                    outStreamWriter.close();
                }
                AssetBuilder builder = AssetBuilderFactory.getAssetBuilder(Asset.AssetType.Byte);

                builder.name(processid + assetExt)
                        .type(assetFileExt.substring(1))
                        .location(processAsset.getAssetLocation())
                        .version(processAsset.getVersion())
                        .content(outputStream.toByteArray());

                Asset<byte[]> resourceAsset = builder.getAsset();

                repository.createAsset(resourceAsset);
            }
        } catch (Exception e) {
            // just log that error happened
            if (e.getMessage() != null) {
                _logger.error(e.getMessage());
            }
            else {
                _logger.error(e.getClass().toString() + " " + assetFullName);
            }
            e.printStackTrace();
        }
    }

    private String getProcessContent(String uuid, Repository repository) {
        try {

            Asset<String> processAsset = repository.loadAsset(uuid);
            return processAsset.getAssetContent();
        } catch (Exception e) {
            // we dont want to barf..just log that error happened
            _logger.error(e.getMessage());
            return "";
        }
    }

    private float getFloatParam(final HttpServletRequest req, final String paramName, final float defaultValue) {
        float value = defaultValue;
        String paramValue = req.getParameter(paramName);
        if (paramValue != null && !paramValue.isEmpty()) {
            try {
                value = Float.parseFloat(paramValue);
            } catch (NumberFormatException nfe) {
                value = defaultValue;
            }
        }
        return value;
    }

    public void scalePDFImage(Document document, Image image) {
        float scaler = ((document.getPageSize().getWidth() - document.leftMargin()
                - document.rightMargin()) / image.getWidth()) * 100;

        image.scalePercent(scaler);
    }
}

## 内容3
### 文件路径：
jbpm-designer-client/pom.xml
### 代码内容：
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.jbpm</groupId>
    <artifactId>jbpm-designer</artifactId>
    <version>6.5.1-SNAPSHOT</version>
  </parent>

  <artifactId>jbpm-designer-client</artifactId>
  <packaging>jar</packaging>

  <name>jBPM Designer - Client</name>

  <dependencies>

    <!-- dependencies added because of new illegal transitive dependency check -->
    <dependency>
      <groupId>org.gwtbootstrap3</groupId>
      <artifactId>gwtbootstrap3</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jboss.errai</groupId>
      <artifactId>errai-common</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jboss.errai</groupId>
      <artifactId>errai-ioc</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jboss.errai</groupId>
      <artifactId>errai-security-server</artifactId>
      <exclusions>
        <exclusion>
          <groupId>javassist</groupId>
          <artifactId>javassist</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.jboss.errai</groupId>
      <artifactId>errai-bus</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-widgets-commons</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-nio2-model</artifactId>
    </dependency>
    <dependency>
      <groupId>org.kie.workbench.services</groupId>
      <artifactId>kie-wb-common-services-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-backend-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-client-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-workbench-client-views-patternfly</artifactId>
    </dependency>

    <dependency>
      <groupId>org.jbpm</groupId>
      <artifactId>jbpm-designer-api</artifactId>
    </dependency>

    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-workbench-client</artifactId>
    </dependency>

    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-commons-editor-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-commons-editor-client</artifactId>
    </dependency>

    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-workbench-processors</artifactId>
      <scope>provided</scope>
    </dependency>

    <!-- GWT and GWT Extensions -->
    <dependency>
      <groupId>com.google.gwt</groupId>
      <artifactId>gwt-user</artifactId>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>

    <!-- Guvnor dependencies -->
    <dependency>
      <groupId>org.guvnor</groupId>
      <artifactId>guvnor-project-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.guvnor</groupId>
      <artifactId>guvnor-services-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.guvnor</groupId>
      <artifactId>guvnor-structure-client</artifactId>
    </dependency>

    <!-- KIE dependencies -->
    <dependency>
      <groupId>org.kie.workbench.widgets</groupId>
      <artifactId>kie-wb-metadata-widget</artifactId>
    </dependency>

    <dependency>
      <groupId>org.kie.workbench.widgets</groupId>
      <artifactId>kie-wb-common-ui</artifactId>
    </dependency>

    <!-- Errai  -->
    <dependency>
      <groupId>org.jboss.errai</groupId>
      <artifactId>errai-data-binding</artifactId>
    </dependency>

    <dependency>
      <groupId>org.jboss.errai</groupId>
      <artifactId>errai-marshalling</artifactId>
    </dependency>

    <dependency>
      <groupId>org.jboss.errai</groupId>
      <artifactId>errai-ui</artifactId>
    </dependency>

    <dependency>
      <groupId>com.google.gwt.gwtmockito</groupId>
      <artifactId>gwtmockito</artifactId>
      <scope>test</scope>
    </dependency>

    <!-- powermock -->
    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-module-junit4</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-api-mockito</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.uberfire</groupId>
      <artifactId>uberfire-testing-utils</artifactId>
      <scope>test</scope>
    </dependency>

  </dependencies>

  <build>
    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>jar</goal>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>net.alchim31.maven</groupId>
        <artifactId>yuicompressor-maven-plugin</artifactId>
        <version>1.3.0</version>
        <executions>
          <execution>
            <goals>
              <goal>compress</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <jswarn>false</jswarn>
          <excludes>
            <exclude>**/*.css</exclude>
          </excludes>
          <aggregations>
            <aggregation>
              <removeIncluded>false</removeIncluded>
              <insertNewLine>true</insertNewLine>
              <includes>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/kickstart-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/config-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/oryx-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/clazz-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/main-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/utils-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/erdfparser-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/datamanager-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/SVG/editpathhandler-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/SVG/minmaxpathhandler-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/SVG/pointspathhandler-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/SVG/svgmarker-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/SVG/svgshape-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/SVG/label-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/Math/math-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/StencilSet/stencil-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/StencilSet/property-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/StencilSet/propertyitem-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/StencilSet/complexpropertyitem-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/StencilSet/rules-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/StencilSet/stencilset-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/StencilSet/stencilsets-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/command-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/bounds-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/uiobject-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/abstractshape-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/canvas-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/svgDrag-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/shape-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/Controls/control-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/Controls/magnet-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/Controls/docker-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/node-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/edge-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/abstractPlugin-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/abstractLayouter-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Core/abstractDragTracker-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/diff_match_patch-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/itemdeleter-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/workiteminstaller-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/jsonpath-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/imageviewer-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/svgviewer-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/panelcollapsedtitle-min.js</include>
              </includes>
              <output>${project.build.directory}/classes/org/jbpm/designer/public/js/compressed/designer-core.js</output>
            </aggregation>

            <aggregation>
              <removeIncluded>false</removeIncluded>
              <insertNewLine>true</insertNewLine>
              <includes>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/cm-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/cmxml-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/cmjs-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/cmcss-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/cmclike-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/cmhtmlmixed-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/closetags-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/hint-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/hintjbpm-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/cmsearch-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/cmsearchcursor-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/cmdialog-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/cmfold-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/notifications-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/sprite-utils-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/ie-utils-min.js</include>
              </includes>
              <output>${project.build.directory}/classes/org/jbpm/designer/public/js/compressed/designer-utils.js</output>
            </aggregation>

            <aggregation>
              <removeIncluded>false</removeIncluded>
              <insertNewLine>true</insertNewLine>
              <includes>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/lib/prototype-1.5.1.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/lib/path_parser.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/lib/handlebars-1.0.0.beta.6.js</include>
              </includes>
              <output>${project.build.directory}/classes/org/jbpm/designer/public/js/compressed/designer-lib.js</output>
            </aggregation>

            <aggregation>
              <removeIncluded>false</removeIncluded>
              <insertNewLine>true</insertNewLine>
              <includes>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/lib/ext-2.0.2/adapter/ext/ext-base.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/lib/ext-2.0.2/ext-all-debug.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/lib/ext-2.0.2/color-field.js</include>
              </includes>
              <output>${project.build.directory}/classes/org/jbpm/designer/public/js/compressed/designer-ext.js</output>
            </aggregation>

            <aggregation>
              <removeIncluded>false</removeIncluded>
              <insertNewLine>true</insertNewLine>
              <includes>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/css/codemirror.css</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/css/cmdialog.css</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/css/fullscreen.css</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/css/mic.css</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/css/notifications.css</include>

                <include>${project.build.directory}/classes/org/jbpm/designer/public/css/theme-default.css</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/css/xtheme-gray-colors.css</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/css/xtheme-gray.css</include>
             </includes>
              <output>${project.build.directory}/classes/org/jbpm/designer/public/css/designer-compressed-stylesheets.css</output>
            </aggregation>

            <aggregation>
              <removeIncluded>false</removeIncluded>
              <insertNewLine>true</insertNewLine>
              <includes>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/css/sprites/toolbar-images-sprite.css</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/css/sprites/palette-images-sprite.css</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/css/sprites/simulation-images-sprite.css</include>
              </includes>
              <output>${project.build.directory}/classes/org/jbpm/designer/public/css/sprites/sprite-stylesheets.css</output>
            </aggregation>

            <aggregation>
              <removeIncluded>false</removeIncluded>
              <insertNewLine>true</insertNewLine>
              <includes>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/selectssperspective-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/toolbar-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/processinfo-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/jpdlmigration-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/servicerepo-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/saveplugin-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/shapemenu-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/dataioeditor-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/shaperepository.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/propertywindow-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/canvasResize-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/view-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/dragdropresize-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/renameShapes-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/undo-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/arrangement-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/grouping-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/dragDocker-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/addDocker-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/selectionframe-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/shapeHighlighting-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/edit-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/keysMove-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/selectssperspective-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/visualvalidation-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/regexTextEditor-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/constraintExpressionEditor-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/overlay-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/dictionary-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/canvastitle-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/inlinetaskformeditor-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/DataAssignment/extendedDataAssignmentEditor-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/DataAssignment/FieldDataAssignmentEditors-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/nodeXMLViewer-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/theme-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/locknode-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/simulation-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/simulationresults-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/dockerCreation-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/taskpropertiesupdater-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/voicecommand-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/patterncreator-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/localhistory-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/notificationsplugin-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/activenodeshighlighter-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/formeditingplugin-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/paint-min.js</include>
                <include>${project.build.directory}/classes/org/jbpm/designer/public/js/Plugins/defdeletemanager-min.js</include>

              </includes>
              <output>${project.build.directory}/classes/org/jbpm/designer/public/js/compressed/designer-plugins.js</output>
            </aggregation>
          </aggregations>
        </configuration>
      </plugin>

    </plugins>

  </build>

</project>

## 内容4
### 文件路径：
jbpm-designer-client/src/main/resources/org/jbpm/designer/public/js/Plugins/jpdlmigration.js
### 代码内容：
if (!ORYX.Plugins)
    ORYX.Plugins = {};

if (!ORYX.Config)
	ORYX.Config = {};

ORYX.Plugins.JPDLMigration = Clazz.extend({
	construct: function(facade){
		this.facade = facade;

        if(!(ORYX.READONLY == true || ORYX.VIEWLOCKED == true)) {
            this.facade.offer({
                'name':ORYX.I18N.View.migratejPDL,
                'functionality': this.migrateJPDL.bind(this),
                'group': 'importgroup',
                'icon': ORYX.BASE_FILE_PATH + "images/jpdl_import_icon.png",
                dropDownGroupIcon : ORYX.BASE_FILE_PATH + "images/import.png",
                'description': ORYX.I18N.View.migratejPDLDesc,
                'index': 3,
                'minShape': 0,
                'maxShape': 0,
                'isEnabled': function(){
                    return !(ORYX.READONLY == true || ORYX.VIEWLOCKED == true);
    //				profileParamName = "profile";
    //				profileParamName = profileParamName.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    //				regexSa = "[\\?&]"+profileParamName+"=([^&#]*)";
    //		        regexa = new RegExp( regexSa );
    //		        profileParams = regexa.exec( window.location.href );
    //		        profileParamValue = profileParams[1];
    //				return profileParamValue == "jbpm";
                }.bind(this)
            });
        }
	},

	migrateJPDL : function() {
		this._showImportDialog();
	},
	_showImportDialog: function( successCallback ) {
		var dialogSize = ORYX.Utils.getDialogSize(450, 500);
		var panelHeight = Math.max(50, (dialogSize.height - 150) / 2);
		var panelWidth = dialogSize.width - 50;

	    var form = new Ext.form.FormPanel({
		baseCls: 		'x-plain',
	        labelWidth: 	50,
	        defaultType: 	'textfield',
	        items: [
	        {
	            text : 		ORYX.I18N.jPDLSupport.selectFile,
				style : 	'font-size:12px;margin-bottom:10px;display:block;',
	            //anchor:		'100%',
				xtype : 	'label'
	        },
	        {
	            fieldLabel: ORYX.I18N.jPDLSupport.file,
	            name: 		'subject',
				inputType : 'file',
				style : 	'margin-bottom:10px;display:block;',
				itemCls :	'ext_specific_window_overflow'
	        },
	        {
	            xtype: 'textarea',
	            hideLabel: true,
	            name: 'msg',
		        grow: false,
				width: panelWidth,
				height: panelHeight
	        }
	        ]
	    });

	    var form2 = new Ext.form.FormPanel({
			baseCls: 		'x-plain',
	        labelWidth: 	50,
	        defaultType: 	'textfield',
	        items: [
	        {
	            text : 		ORYX.I18N.jPDLSupport.selectGpdFile,
				style : 	'font-size:12px;margin-bottom:10px;display:block;',
	            //anchor:		'100%',
				xtype : 	'label'
	        },
	        {
	            fieldLabel: ORYX.I18N.jPDLSupport.gpdfile,
	            name: 		'subject',
				inputType : 'file',
				style : 	'margin-bottom:10px;display:block;',
				itemCls :	'ext_specific_window_overflow'
	        },
	        {
	            xtype: 'textarea',
	            hideLabel: true,
	            name: 'msg',
		        grow: false,
                width: panelWidth,
                height: panelHeight
	        }
	        ]
	    });

		// Create the panel
		var dialog = new Ext.Window({
			autoCreate: true,
			autoScroll:true,
			//layout: 	'fit',
			plain:		true,
			bodyStyle: 	'padding:5px;',
			title: 		ORYX.I18N.jPDLSupport.impJPDL,
			height: 	dialogSize.height,
			width:		dialogSize.width,
			modal:		true,
			fixedcenter:true,
			shadow:		true,
			proxyDrag: 	true,
			resizable:	true,
			items: 		[form,form2],
			buttons:[
				{
					text:ORYX.I18N.jPDLSupport.impBtn,
					handler:function(){

                        this.facade.raiseEvent({
                            type 		: ORYX.CONFIG.EVENT_NOTIFICATION_SHOW,
                            ntype		: 'info',
                            msg         : ORYX.I18N.jPDLSupport.impProgress,
                            title       : ''

                        });

						window.setTimeout(function(){

							var jpdlString =  form.items.items[2].getValue();
							var gpdString =  form2.items.items[2].getValue();

							this._sendRequest(
									ORYX.CONFIG.TRANSFORMER_URL(),
									'POST',
									{ 'jpdl' : jpdlString,
									  'gpd'  : gpdString,
									  'transformto' : 'jpdl2bpmn2',
									  'profile' : ORYX.PROFILE,
									  'uuid' :  window.btoa(encodeURI(ORYX.UUID))
									},
									function( arg ) { this._loadJSON( arg );  dialog.hide(); }.bind(this),
									function() { dialog.hide(); }.bind(this)
								);

						}.bind(this), 100);

					}.bind(this)
				},{
					text:ORYX.I18N.jPDLSupport.close,
					handler:function(){

						dialog.hide();

					}.bind(this)
				}
			]
		});

		// Destroy the panel when hiding
		dialog.on('hide', function(){
			dialog.destroy(true);
			delete dialog;
		});

		// Show the panel
		dialog.show();

		// Adds the change event handler to
		form.items.items[1].getEl().dom.addEventListener('change',function(evt){
			var reader = new FileReader();
			reader.onload = function(e) {
				form.items.items[2].setValue( e.target.result );
			}
			reader.readAsText(evt.target.files[0], 'UTF-8');
		}, true);
		form2.items.items[1].getEl().dom.addEventListener('change',function(evt){
			var reader = new FileReader();
			reader.onload = function(e) {
				form2.items.items[2].setValue( e.target.result );
			}
			reader.readAsText(evt.target.files[0], 'UTF-8');
        }, true);
	},
	_loadJSON: function( jsonString ){
		if (jsonString) {
			var jsonObj = jsonString.evalJSON();
			this.facade.importJSON(jsonString);
		} else {
			this._showErrorMessageBox(ORYX.I18N.Oryx.title, ORYX.I18N.jPDLSupport.impFailedJson);
		}
	},
	_sendRequest: function( url, method, params, successcallback, failedcallback ){

		var suc = false;

		new Ajax.Request(url, {
           method			: method,
           asynchronous	: false,
           parameters		: params,
		   onSuccess		: function(transport) {

				suc = true;

				if(successcallback){
					successcallback( transport.responseText )
				}

			}.bind(this),

			onFailure		: function(transport) {

				if(failedcallback){

					failedcallback();

				} else {
					this._showErrorMessageBox(ORYX.I18N.Oryx.title, ORYX.I18N.jPDLSupport.impFailedReq);
					ORYX.log.warn("jPDL migration failed: " + transport.responseText);
				}

			}.bind(this)
		});

		return suc;
	}
});
## 内容5
### 文件路径：
jbpm-designer-client/src/main/resources/org/jbpm/designer/public/js/Plugins/plugins.xml
### 代码内容：
<?xml version="1.0" encoding="utf-8"?>
<config>
	<plugins>
		<plugin source="toolbar.js" name="ORYX.Plugins.Toolbar" core="true" />
		<plugin source="footer.js" name="ORYX.Plugins.Footer" core="true" />
		<plugin source="syntaxchecker.js" name="ORYX.Plugins.SyntaxChecker"
			core="true" />
        <plugin source="visualvalidation.js" name="ORYX.Plugins.VisualValidation" core="true" />
		<!-- <plugin source="toolbar2.js" name="ORYX.Plugins.Toolbar2" /> -->

		<plugin source="shapemenu.js" name="ORYX.Plugins.ShapeMenuPlugin"
			core="true" />
		<plugin source="selectssperspective.js" name="ORYX.Plugins.SelectStencilSetPerspective" />
		<plugin source="shaperepository.js" name="ORYX.Plugins.ShapeRepository" />
		<plugin source="propertywindow.js" name="ORYX.Plugins.PropertyWindow" />
		<plugin source="dataioeditor.js" name="ORYX.Plugins.DataIOEditorPlugin" />
		<plugin source="loading.js" name="ORYX.Plugins.Loading" core="true" />
		<plugin source="canvasResize.js" name="ORYX.Plugins.CanvasResize">
			<notUsesIn namespace="http://b3mn.org/stencilset/xforms#" />
		</plugin>
		<plugin source="renameShapes.js" name="ORYX.Plugins.RenameShapes" />
		<plugin source="erdfSupport.js" name="ORYX.Plugins.ERDFSupport" />
		<plugin source="jsonSupport.js" name="ORYX.Plugins.JSONSupport">
			<property name="color" value="red" />
		</plugin>
		<plugin source="rdfExport.js" name="ORYX.Plugins.RDFExport" />
		<plugin source="undo.js" name="ORYX.Plugins.Undo" />

		<plugin source="epcSupport.js" name="ORYX.Plugins.EPCSupport">
			<requires namespace="http://b3mn.org/stencilset/epc#" />
		</plugin>

		<plugin source="jpdlSupport.js" name="ORYX.Plugins.JPDLSupport">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
			<!-- plugin loads dynamically the needed extension <requires namespace="http://oryx-editor.org/stencilsets/extensions/jbpm#"/> -->
		</plugin>

		<plugin source="jpdlmigration.js" name="ORYX.Plugins.JPDLMigration"/>
		<plugin source="servicerepo.js"   name="ORYX.Plugins.ServiceRepoIntegration"/>

		<!-- User Interface Aggregation -->
		<plugin source="bpmn2xforms.js" name="ORYX.Plugins.BPMN2XForms">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
		</plugin>

		<plugin source="bpmn2bpel.js" name="ORYX.Plugins.BPMN2BPEL">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
		</plugin>

		<plugin source="processLink.js" name="ORYX.Plugins.ProcessLink">
			<requires namespace="http://b3mn.org/stencilset/epc#" />
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
		</plugin>

		<plugin source="adHocCC.js" name="ORYX.Plugins.AdHocCC">
			<requires namespace="http://b3mn.org/stencilset/bpmnexec#" />
		</plugin>

		<!-- Colored Petri Nets -->
		<plugin source="cpntoolsSupport.js" name="ORYX.Plugins.CPNToolsSupport">
			<requires namespace="http://b3mn.org/stencilset/coloredpetrinet#" />
		</plugin>

		<!-- following plugins don't require Ext -->
		<plugin source="arrangement.js" name="ORYX.Plugins.Arrangement">
			<notUsesIn namespace="http://b3mn.org/stencilset/xforms#" />
		</plugin>
		<plugin source="file.js" name="ORYX.Plugins.File" />
		<plugin source="file.js" name="ORYX.Plugins.Save" />
		<plugin source="uuidRepository.js" name="ORYX.Plugins.UUIDRepository" />
		<plugin source="view.js" name="ORYX.Plugins.View">
			<property zoomLevel="2" maxFitToScreenLevel="1.24" />
		</plugin>
		<plugin source="dragdropresize.js" name="ORYX.Plugins.DragDropResize" />
		<plugin source="grouping.js" name="ORYX.Plugins.Grouping">
			<notUsesIn namespace="http://b3mn.org/stencilset/xforms#" />
		</plugin>
		<plugin source="shapeHighlighting.js" name="ORYX.Plugins.HighlightingSelectedShapes" />
		<plugin source="dragDocker.js" name="ORYX.Plugins.DragDocker">
			<notUsesIn namespace="http://b3mn.org/stencilset/xforms#" />
		</plugin>
		<plugin source="addDocker.js" name="ORYX.Plugins.AddDocker">
			<notUsesIn namespace="http://b3mn.org/stencilset/xforms#" />
		</plugin>
		<plugin source="shapeConnector.js" name="ORYX.Plugins.ShapeConnector"/>
		<plugin source="addssextension.js" name="ORYX.Plugins.SSExtensionLoader" />

		<plugin source="selectionframe.js" name="ORYX.Plugins.SelectionFrame">
			<notUsesIn namespace="http://b3mn.org/stencilset/xforms#" />
		</plugin>
		<plugin source="shapeHighlighting.js" name="ORYX.Plugins.ShapeHighlighting" />
		<plugin source="overlay.js" name="ORYX.Plugins.Overlay" />
		<plugin source="edit.js" name="ORYX.Plugins.Edit" />
		<plugin source="keysMove.js" name="ORYX.Plugins.KeysMove" />
		<plugin source="Layouter/containerLayouter.js" name="ORYX.Plugins.ContainerLayouter" />

        <plugin source="formeditingplugin.js" name="ORYX.Plugins.FormEditing" />

		<!-- plugin for PNML export and deployment -->
		<plugin source="pnmlexport.js" name="ORYX.Plugins.Pnmlexport">
			<requires namespace="http://b3mn.org/stencilset/bpmnexec#" />
		</plugin>
		<plugin source="simplepnmlexport.js" name="ORYX.Plugins.SimplePnmlexport">
			<requires namespace="http://b3mn.org/stencilset/bpmnexec#" />
			<requires namespace="http://b3mn.org/stencilset/bpmn#" />
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
			<requires namespace="http://b3mn.org/stencilset/ibpmn#" />
			<requires namespace="http://b3mn.org/stencilset/interactionpetrinets#" />
			<requires namespace="http://b3mn.org/stencilset/petrinet#" />
		</plugin>

		<plugin source="desynchronizabilityOverlay.js" name="ORYX.Plugins.DesynchronizabilityOverlay">
			<requires namespace="http://b3mn.org/stencilset/ibpmn#" />
			<requires namespace="http://b3mn.org/stencilset/interactionpetrinets#" />
		</plugin>

		<plugin source="enforceabilityOverlay.js" name="ORYX.Plugins.EnforceabilityOverlay">
			<requires namespace="http://b3mn.org/stencilset/ibpmn#" />
			<requires namespace="http://b3mn.org/stencilset/interactionpetrinets#" />
		</plugin>
		<plugin source="ibpmn2bpmn.js" name="ORYX.Plugins.IBPMN2BPMN">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
		</plugin>
		<plugin source="validator.js" name="ORYX.Plugins.BPMNValidator">
			<requires namespace="http://b3mn.org/stencilset/bpmn#" />
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
		</plugin>
		<plugin source="validator.js" name="ORYX.Plugins.EPCValidator">
			<requires namespace="http://b3mn.org/stencilset/epc#" />
		</plugin>

		<plugin source="stepThroughPlugin.js" name="ORYX.Plugins.StepThroughPlugin">
			<requires namespace="http://b3mn.org/stencilset/bpmn#" />
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
			<requires namespace="http://b3mn.org/stencilset/epc#" />
		</plugin>
		<plugin source="stepThroughPlugin.js" name="ORYX.Plugins.PetriNetStepThroughPlugin">
			<requires namespace="http://b3mn.org/stencilset/petrinet#" />
		</plugin>

		<!-- plugins for XForms editor -->
		<plugin source="xformsexport.js" name="ORYX.Plugins.XFormsExport">
			<requires namespace="http://b3mn.org/stencilset/xforms#" />
		</plugin>
		<plugin source="xformsexportorbeon.js" name="ORYX.Plugins.XFormsExportOrbeon">
			<requires namespace="http://b3mn.org/stencilset/xforms#" />
		</plugin>

		<plugin source="xformsimport.js" name="ORYX.Plugins.XFormsImport">
			<requires namespace="http://b3mn.org/stencilset/xforms#" />
		</plugin>

		<plugin source="rowlayouting.js" name="ORYX.Plugins.RowLayouting">
			<requires namespace="http://b3mn.org/stencilset/xforms#" />
		</plugin>

		<plugin source="xforms.js" name="ORYX.Plugins.XForms">
			<requires namespace="http://b3mn.org/stencilset/xforms#" />
		</plugin>

		<!-- BPMN1.1 specific plugins -->
		<plugin source="bpmn11.js" name="ORYX.Plugins.BPMN11">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
		</plugin>

		<plugin source="bpmnLayouter.js" name="ORYX.Plugins.BpmnLayouter">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
		</plugin>

		<!-- Begin: BPMN2.0 specific plugins -->
		<plugin source="bpmn2.0/bpmn2.0.js" name="ORYX.Plugins.BPMN2_0">
			<requires namespace="http://b3mn.org/stencilset/bpmn2.0#" />
		</plugin>

		<plugin source="bpmn2.0/bpmn2conversation.js" name="ORYX.Plugins.BPMN2CONVERSATION">
			<requires namespace="http://b3mn.org/stencilset/bpmn2.0conversation#" />
		</plugin>

		<plugin source="bpmn2.0/bpmn2.0choreography.js" name="ORYX.Plugins.Bpmn2_0Choreography">
			<requires namespace="http://b3mn.org/stencilset/bpmn2.0#" />
		</plugin>

		<plugin source="bpmn2.0/bpmn2.0serialization.js" name="ORYX.Plugins.BPMN2_0Serialization">
			<requires namespace="http://b3mn.org/stencilset/bpmn2.0#" />
			<requires namespace="http://b3mn.org/stencilset/bpmn2.0conversation#" />
		</plugin>

		<plugin source="tbpmsupport.js" name="ORYX.Plugins.TBPMSupport">
			<requires namespace="http://b3mn.org/stencilset/bpmn2.0#" />
		</plugin>

		<!-- End: BPMN2.0 specific plugins -->

		<plugin source="Layouter/edgeLayouter.js" name="ORYX.Plugins.Layouter.EdgeLayouter" />

		<plugin source="epcLayouter.js" name="ORYX.Plugins.EPCLayouter">
			<requires namespace="http://b3mn.org/stencilset/epc#" />
		</plugin>

		<plugin source="transformationDownloadDialog.js" name="ORYX.Plugins.TransformationDownloadDialog">
			<requires namespace="http://b3mn.org/stencilset/bpmnplus#" />
			<requires namespace="http://b3mn.org/stencilset/bpel#" />
			<requires namespace="http://b3mn.org/stencilset/bpel4chor#" />
		</plugin>

		<plugin source="transformationDownloadDialogForBPEL4Chor.js"
			name="ORYX.Plugins.TransformationDownloadDialogForBPEL4Chor">
			<requires namespace="http://b3mn.org/stencilset/bpel4chor#" />
		</plugin>

		<!-- plugin for BPMN+ to BPEL4Chor transformation -->
		<plugin source="bpmnplus2bpel4chor.js" name="ORYX.Plugins.Bpel4ChorTransformation">
			<requires namespace="http://b3mn.org/stencilset/bpmnplus#" />
		</plugin>

		<!-- BPMN+ specific plugins -->
		<plugin source="bpmnplusLayout.js" name="ORYX.Plugins.BPMNPlusLayout">
			<requires namespace="http://b3mn.org/stencilset/bpmnplus#" />
		</plugin>

		<plugin source="bpmnplusSerialization.js" name="ORYX.Plugins.BPMNPlusSerialization">
			<requires namespace="http://b3mn.org/stencilset/bpmnplus#" />
		</plugin>

		<!-- plugin for BPEL and BPEL4Chor editor -->
		<plugin source="bpelSupport.js" name="ORYX.Plugins.BPELSupport">
			<requires namespace="http://b3mn.org/stencilset/bpel#" />
		</plugin>

		<plugin source="bpel4chorSupport.js" name="ORYX.Plugins.BPEL4ChorSupport">
			<requires namespace="http://b3mn.org/stencilset/bpel4chor#" />
		</plugin>

		<plugin source="bpel4chor2bpelSupport.js" name="ORYX.Plugins.BPEL4Chor2BPELSupport">
			<requires namespace="http://b3mn.org/stencilset/bpel4chor#" />
		</plugin>

		<plugin source="bpelLayout.js" name="ORYX.Plugins.BPELLayouting">
			<requires namespace="http://b3mn.org/stencilset/bpel#" />
			<requires namespace="http://b3mn.org/stencilset/bpel4chor#" />
		</plugin>

		<!-- plugin for workflownets -->
		<plugin source="workflownets.js" name="ORYX.Plugins.Workflownets">
			<requires namespace="http://www.example.org/workflownets#" />
		</plugin>

		<plugin source="bpmn2pn.js" name="ORYX.Plugins.BPMNImport">
			<requires namespace="http://b3mn.org/stencilset/petrinet#" />
		</plugin>

		<plugin source="bpmn2yawl.js" name="ORYX.Plugins.BPMN2YAWLMapper">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
		</plugin>

		<plugin source="petriNetSoundnessChecker.js" name="ORYX.Plugins.PetriNetSoundnessChecker">
			<requires namespace="http://b3mn.org/stencilset/petrinet#" />
		</plugin>

		<plugin source="petrinet.js" name="ORYX.Plugins.PetriNet">
			<requires namespace="http://b3mn.org/stencilset/petrinet#" />
		</plugin>

		<plugin source="bpmn2pn.js" name="ORYX.Plugins.PNExport">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
			<requires namespace="http://b3mn.org/stencilset/bpmn#" />
		</plugin>

		<plugin source="bpel2bpmn.js" name="ORYX.Plugins.BPEL2BPMN">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
			<requires namespace="http://b3mn.org/stencilset/bpmn#" />
		</plugin>

		<!-- Replaced by BPMN2XPDL 2.0 <plugin source="bpmn2xpdl.js" name="ORYX.Plugins.BPMN2XPDL">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#"/> </plugin> -->

		<plugin source="bpmn2xhtml.js" name="ORYX.Plugins.BPMN2XHTML">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
		</plugin>

		<plugin source="bpmn2dtrp-xmi.js" name="ORYX.Plugins.BPMN2DTRPXMI">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
		</plugin>
		<!-- Added by Ahmed Awad on behalf of Steffen Ryll -->
		<!-- Plugin for BPMN-Q querying support -->
		<plugin source="queryevaluator.js" name="ORYX.Plugins.QueryEvaluator">
			<requires namespace="http://b3mn.org/stencilset/bpmnq#" />
		</plugin>
		<plugin source="queryResultHighlighter.js" name="ORYX.Plugins.QueryResultHighlighter">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
		</plugin>
		<!-- End of Added by Ahmed Awad -->
		<!-- Resource Perspective -->
		<plugin source="bpmnResourcesSoDAdd.js" name="ORYX.Plugins.ResourcesSoDAdd">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.2resources#" />
		</plugin>
		<plugin source="bpmnResourcesSoDShow.js" name="ORYX.Plugins.ResourcesSoDShow">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.2resources#" />
		</plugin>
		<plugin source="bpmnResourcesBoDAdd.js" name="ORYX.Plugins.ResourcesBoDAdd">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.2resources#" />
		</plugin>
		<plugin source="bpmnResourcesBoDShow.js" name="ORYX.Plugins.ResourcesBoDShow">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.2resources#" />
		</plugin>
		<plugin source="bpmnResourceAssignment.js" name="ORYX.Plugins.ResourceAssignment">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.2resources#" />
		</plugin>
		<plugin source="bpmnClearSodBodHighlights.js" name="ORYX.Plugins.ClearSodBodHighlights">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.2resources#" />
		</plugin>

		<!-- Following Plugins are examples to demonstrate certain functionality -->

		<plugin source="epc2bpmn.js" name="ORYX.Plugins.EPC2BPMN">
			<requires namespace="http://b3mn.org/stencilset/bpmn#" />
		</plugin>

		<plugin source="uml.js" name="ORYX.Plugins.UML">
			<requires namespace="http://b3mn.org/stencilset/UML2.2Class#" />
		</plugin>

		<!-- only enable autolayouter if ruby is active -->
		<!--<plugin source="autoLayout.js" name="ORYX.Plugins.AutoLayout" /> -->

		<plugin source="overlayexample.js" name="ORYX.Plugins.OverlayExample" />

		<!-- Disable pluginLoader to avoid user-driven plugin loading -->
		<plugin source="pluginLoader.js" name="ORYX.Plugins.PluginLoader" />
		<plugin source="bpmn.js" name="ORYX.Plugins.BPMN" />

		<plugin source="feedback.js" name="ORYX.Plugins.Feedback">
			<property name="cssfile" value="/oryx/css/feedback.css" />
			<!-- configure subjects and info in localization: /editor/data/I18N#ORYX.I18N.Feedback.subjects -->
		</plugin>

		<plugin source="dictionary.js" name="ORYX.Plugins.Dictionary"/>
		<plugin source="canvastitle.js" name="ORYX.Plugins.CanvasTitle"/>
		<plugin source="taskpropertiesupdater.js" name="ORYX.Plugins.TaskPropertiesUpdater"/>
		<plugin source="inlinetaskformeditor.js" name="ORYX.Plugins.InlineTaskFormEditor"/>
		<plugin source="processinfo.js" name="ORYX.Plugins.ProcessInfo"/>
		<plugin source="servicenodeeditor.js" name="ORYX.Plugins.ServiceNodeEditor"/>
		<plugin source="theme.js" name="ORYX.Plugins.Theme"/>
		<plugin source="simulation.js" name="ORYX.Plugins.Simulation"/>
		<plugin source="simulationresults.js" name="ORYX.Plugins.SimulationResults"/>
		<plugin source="locknode.js" name="ORYX.Plugins.Paint"/>
    <plugin source="paint.js" name="ORYX.Plugins.LockNode"/>
    <plugin source="defdeletemanager.js" name="ORYX.Plugins.DefDeleteManager"/>
		<plugin source="voicecommand.js" name="ORYX.Plugins.VoiceCommand"/>
        <plugin source="patterncreator.js" name="ORYX.Plugins.PatternCreator"/>
        <plugin source="localhistory.js" name="ORYX.Plugins.LocalHistory"/>
        <plugin source="notificationsplugin.js" name="ORYX.Plugins.NotificationsPlugin"/>
        <plugin source="saveplugin.js" name="ORYX.Plugins.SavePlugin"/>
        <plugin source="activenodeshighlighter.js" name="ORYX.Plugins.ActiveNodesHighlighter"/>

		<!-- <plugin source="stencilsetmanipulator.js" name="ORYX.Plugins.StencilSetManipulator"
			/> -->

		<plugin source="fileRepository.js" name="ORYX.Plugins.FileRepositorySave" />
		<plugin source="dockerCreation.js" name="ORYX.Plugins.DockerCreation" />
		<plugin source="labelLayout.js" name="ORYX.Plugins.LabelLayout" />

		<plugin source="bpmn2xpdl20.js" name="ORYX.Plugins.BPMN2XPDL20">
			<requires namespace="http://b3mn.org/stencilset/bpmn1.1#" />
		</plugin>
		<plugin name="ORYX.Plugins.UUIDRepositorySave" source="uuidRepository.js" />
		<plugin name="ORYX.Plugins.UUIDRepositoryDummySave" source="uuidRepository.js" />
		<plugin source="dragTracker/laneDragTracker.js" name="ORYX.Plugins.DragTracker.LaneDragTracker" />
		<plugin source="dragTracker/poolDragTracker.js" name="ORYX.Plugins.DragTracker.PoolDragTracker" />

	    <plugin source="nodeXMLViewer.js" name="ORYX.Plugins.NodeXMLViewer" />

		<plugin source="regexTextEditor.js" name="ORYX.Plugins.RegexTextEditor" />
		<plugin source="constraintExpressionEditor.js" name="ORYX.Plugins.ConstraintExpressionEditor">
			<property name="useFixedPackage" value="false" />
			<!--property name="fixedPackage" value="mortgages" / -->
			<property name="category" value="Home Mortgage" />
			<property name="hideRHS" value="true" />
			<property name="hideAttributes" value="true" />
		</plugin>
                <plugin source="DataAssignment/extendedDataAssignmentEditor.js" name="ORYX.Plugins.ExtendedDataAssignmentEditor" />
                <plugin source="DataAssignment/FieldDataAssignmentEditors.js" name="ORYX.Plugins.FieldDataAssignmentEditors" />
	</plugins>

	<properties>
		<property group="File" index="1" />
		<property group="Edit" index="2" />
		<property group="Undo" index="3" />
		<!-- ZZZZ assures that it is always at the end Feedback Plugin, ... -->
		<property group="Help" index="ZZZZZZ" />
	</properties>
</config>

## 内容6
### 文件路径：
jbpm-designer-client/src/main/resources/org/jbpm/designer/public/profiles/jbpm.xml
### 代码内容：
<?xml version="1.0" encoding="utf-8"?>

<profiles>
    <profile name="jbpm" stencilset="bpmn2.0jbpm">
        <plugin name="ORYX.Plugins.SelectStencilSetPerspective"/>
        <plugin name="ORYX.Plugins.Toolbar"/>
        <plugin name="ORYX.Plugins.JPDLMigration"/>
        <plugin name="ORYX.Plugins.ServiceRepoIntegration"/>
        <plugin name="ORYX.Plugins.SavePlugin"/>
        <plugin name="ORYX.Plugins.ShapeMenuPlugin"/>
        <plugin name="ORYX.Plugins.DataIOEditorPlugin"/>
        <plugin name="ORYX.Plugins.ShapeRepository"/>
        <plugin name="ORYX.Plugins.PropertyWindow"/>
        <plugin name="ORYX.Plugins.CanvasResize"/>
        <plugin name="ORYX.Plugins.View"/>
        <plugin name="ORYX.Plugins.DragDropResize"/>
        <plugin name="ORYX.Plugins.RenameShapes"/>
        <plugin name="ORYX.Plugins.Arrangement"/>
        <plugin name="ORYX.Plugins.Grouping"/>
        <plugin name="ORYX.Plugins.DragDocker"/>
        <plugin name="ORYX.Plugins.AddDocker"/>
        <plugin name="ORYX.Plugins.SelectionFrame"/>
        <plugin name="ORYX.Plugins.ShapeHighlighting"/>
        <plugin name="ORYX.Plugins.Edit"/>
        <plugin name="ORYX.Plugins.Undo"/>
        <plugin name="ORYX.Plugins.KeysMove"/>
        <!--<plugin name="ORYX.Plugins.Layouter.EdgeLayouter"/>-->
        <!--<plugin name="ORYX.Plugins.ContainerLayouter" />-->
        <plugin name="ORYX.Plugins.VisualValidation"/>
        <plugin name="ORYX.Plugins.RegexTextEditor"/>
        <plugin name="ORYX.Plugins.ConstraintExpressionEditor"/>
        <plugin name="ORYX.Plugins.Overlay"/>
        <plugin name="ORYX.Plugins.Dictionary"/>
        <plugin name="ORYX.Plugins.CanvasTitle"/>
        <plugin name="ORYX.Plugins.InlineTaskFormEditor"/>
        <plugin name="ORYX.Plugins.ExtendedDataAssignmentEditor"/>
        <plugin name="ORYX.Plugins.FieldDataAssignmentEditors"/>
        <!-- <plugin name="ORYX.Plugins.ServiceNodeEditor"/> -->
        <plugin name="ORYX.Plugins.NodeXMLViewer"/>
        <plugin name="ORYX.Plugins.Theme"/>
        <plugin name="ORYX.Plugins.LockNode"/>
        <plugin name="ORYX.Plugins.Paint"/>
        <plugin name="ORYX.Plugins.Simulation"/>
        <plugin name="ORYX.Plugins.SimulationResults"/>
        <plugin name="ORYX.Plugins.DockerCreation"/>
        <plugin name="ORYX.Plugins.TaskPropertiesUpdater"/>
        <plugin name="ORYX.Plugins.VoiceCommand"/>
        <plugin name="ORYX.Plugins.PatternCreator"/>
        <plugin name="ORYX.Plugins.LocalHistory"/>
        <plugin name="ORYX.Plugins.NotificationsPlugin"/>
        <plugin name="ORYX.Plugins.ActiveNodesHighlighter"/>
        <plugin name="ORYX.Plugins.FormEditing"/>
        <plugin name="ORYX.Plugins.DefDeleteManager"/>
        <localhistory enabled="false" timeout="60000"/>
        <storesvgonsave enabled="false"/>
        <zorder enabled="true"/>
        <!--<repository id="vfs">-->
            <!-- acceptable attributes for parameter
                name - name of the property
                value - value of the property
                system-property - (optional) if set tu true property will be set as JVM system property
            -->
            <!-- simple file system based vfs configuration
            <parameter name="root" value="default:///tmp/designer-repo" />
            <parameter name="globaldir" value="/global" /> -->
            <!--<parameter name="name" value="Designer Repository"/>-->

            <!-- git based cfs configuration-->
            <!--<parameter name="root" value="git://uf-playground" />-->
            <!--<parameter name="globaldir" value="/global" />-->
            <!--<parameter name="username" value="guvnorngtestuser1" />-->
            <!--<parameter name="password" value="test1234" />-->
            <!--<parameter name="origin" value="https://github.com/guvnorngtestuser1/guvnorng-playground.git" />-->
            <!--<parameter name="fetch.cmd" value="?fetch" />-->
            <!--<parameter name="org.kie.nio.git.dir" value="/tmp/designer-git-repo" system-property="true"/>    –>-->
        <!--</repository>-->
	<!--
        <repository id="guvnor">
            <property name="protocol" value="http" />
            <property name="host" value="localhost:8080" />
            <property name="subdomain" value="drools-guvnor/org.drools.guvnor.Guvnor/oryxeditor" />
            <property name="usr" value="admin" />
            <property name="pwd" value="admin" />
        </repository>
        -->
    </profile>
</profiles>

Output:
【漏洞类型】jPDL Migration Plugin Removal
【严重性】Low
【漏洞摘要】jPDL migration插件及其在jbpm-designer中的使用被移除。这一更改的主要目的是为了消除与jPDL相关的依赖项和功能，以避免潜在的兼容性和安全问题。具体表现为移除`pom.xml`中的jPDL migration依赖项，以及删除`TransformerServlet`中的相关代码逻辑和`jbpm-designer-client`项目中的插件文件。
【关键代码模式】
- `TransformerServlet`中处理jPDL到BPMN2转换的代码逻辑。
- `pom.xml`中包含jPDL migration依赖项的配置。
- `jbpm-designer-client`项目中的`jpdlmigration.js`文件及其在`plugins.xml`中的注册。
【修复方法说明】通过移除jPDL migration插件及其在`TransformerServlet`和`plugins.xml`中的相关引用，解决了与jPDL相关的潜在兼容性和安全问题。遵循了最佳实践，即移除不再需要的代码和依赖项，以减少潜在的安全风险和维护负担。