使用 Maven 集成 Activiti Modeler
Integrate Activiti Modeler using Maven
如何将 Activiti Modeler 集成到他们自己的 Web 应用程序中并保留 Maven 建议的所有优势?
问题是 Maven 中的 Activiti Modeler 是 Activiti Explorer 的一部分。想要开发自己的 Web 应用程序、使用 Modeler 编辑流程但不需要其他 Explorer 功能的人在线提出了几个问题。
例如,Activiti BPM without activiti-explorer or How To Integrate Activiti Modeller Into own Web Application
我已经设法使用 Maven 覆盖功能做到了这一点:
1) 包括 Explorer Web 应用程序的覆盖,但仅包括 Modeler 文件:
pom.xml:
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-webapp-explorer2</artifactId>
<version>${activiti-version}</version>
<type>war</type>
<scope>compile</scope>
</dependency>
....
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<overlays>
<overlay>
<groupId>org.activiti</groupId>
<artifactId>activiti-webapp-explorer2</artifactId>
<includes>
<include>WEB-INF/classes/stencilset.json</include>
<include>editor-app/**</include>
<include>modeler.html</include>
</includes>
</overlay>
</overlays>
</configuration>
</plugin>
2) 添加建模器 Spring 资源。它们用于检索和保存模型(注意:不是流程定义,这有点不同),也用于模板集:
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-modeler</artifactId>
<version>${activiti-version}</version>
</dependency>
3) 就是这样,但除非调用 "activiti-explorer",否则它不会在您的应用程序中实际工作。向您的项目添加一个名为 "editor-app/app-cfg.js" 的文件,并在其中添加以下内容:
editor-app/app-cfg.js:
'use strict';
var ACTIVITI = ACTIVITI || {};
ACTIVITI.CONFIG = {
'contextRoot' : window.location.pathname.substring(0,window.location.pathname.lastIndexOf('/')),
};
这实际上是本机 app-cfg 的副本,其中包含上下文根的奇怪“/activiti-explorer/service”设置。我们将其更改为更通用的设置。它将用于从存储库中检索模型。我们的文件将覆盖 explorer webapp 附带的文件。
备注:
a) 您必须自己管理流程定义到模型的转换。有关想法,请参阅 https://github.com/Activiti/Activiti/blob/activiti-5.19.0.1/modules/activiti-explorer/src/main/java/org/activiti/editor/ui/ConvertProcessDefinitionPopupWindow.java
b) 我不得不避免使用一个 Jackson Object 映射器来处理所有事情,我还没有研究为什么这不起作用:
<bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper">
</bean>
<mvc:annotation-driven>
<!-- using the same objectMapper leads to stencilset resource being served as string -->
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="objectMapper"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
不要这样做或进行更多研究,因为这实际上会破坏 "activiti-modeler" 的模板资源服务部分。它开始将 stencilset 作为格式错误的字符串而不是正常的 json.
c) 我不知道如何在 Modeler 保存功能中注入 CSRF 安全性 headers,所以我将其关闭 - 如果您不使用 Spring 安全性,请丢弃此
如何将 Activiti Modeler 集成到他们自己的 Web 应用程序中并保留 Maven 建议的所有优势?
问题是 Maven 中的 Activiti Modeler 是 Activiti Explorer 的一部分。想要开发自己的 Web 应用程序、使用 Modeler 编辑流程但不需要其他 Explorer 功能的人在线提出了几个问题。
例如,Activiti BPM without activiti-explorer or How To Integrate Activiti Modeller Into own Web Application
我已经设法使用 Maven 覆盖功能做到了这一点:
1) 包括 Explorer Web 应用程序的覆盖,但仅包括 Modeler 文件:
pom.xml:
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-webapp-explorer2</artifactId>
<version>${activiti-version}</version>
<type>war</type>
<scope>compile</scope>
</dependency>
....
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<overlays>
<overlay>
<groupId>org.activiti</groupId>
<artifactId>activiti-webapp-explorer2</artifactId>
<includes>
<include>WEB-INF/classes/stencilset.json</include>
<include>editor-app/**</include>
<include>modeler.html</include>
</includes>
</overlay>
</overlays>
</configuration>
</plugin>
2) 添加建模器 Spring 资源。它们用于检索和保存模型(注意:不是流程定义,这有点不同),也用于模板集:
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-modeler</artifactId>
<version>${activiti-version}</version>
</dependency>
3) 就是这样,但除非调用 "activiti-explorer",否则它不会在您的应用程序中实际工作。向您的项目添加一个名为 "editor-app/app-cfg.js" 的文件,并在其中添加以下内容:
editor-app/app-cfg.js:
'use strict';
var ACTIVITI = ACTIVITI || {};
ACTIVITI.CONFIG = {
'contextRoot' : window.location.pathname.substring(0,window.location.pathname.lastIndexOf('/')),
};
这实际上是本机 app-cfg 的副本,其中包含上下文根的奇怪“/activiti-explorer/service”设置。我们将其更改为更通用的设置。它将用于从存储库中检索模型。我们的文件将覆盖 explorer webapp 附带的文件。
备注:
a) 您必须自己管理流程定义到模型的转换。有关想法,请参阅 https://github.com/Activiti/Activiti/blob/activiti-5.19.0.1/modules/activiti-explorer/src/main/java/org/activiti/editor/ui/ConvertProcessDefinitionPopupWindow.java
b) 我不得不避免使用一个 Jackson Object 映射器来处理所有事情,我还没有研究为什么这不起作用:
<bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper">
</bean>
<mvc:annotation-driven>
<!-- using the same objectMapper leads to stencilset resource being served as string -->
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="objectMapper"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
不要这样做或进行更多研究,因为这实际上会破坏 "activiti-modeler" 的模板资源服务部分。它开始将 stencilset 作为格式错误的字符串而不是正常的 json.
c) 我不知道如何在 Modeler 保存功能中注入 CSRF 安全性 headers,所以我将其关闭 - 如果您不使用 Spring 安全性,请丢弃此