activiti model5.22 與 spring4.3.10 整合

遇到的異常解決

「SAX2 driver class org.apache.crimson.parser.XMLReaderImpl not found」 when using Batik in a webapp on Tomcat

解決css

<dependency>
			<groupId>batik</groupId>
			<artifactId>batik-transcoder</artifactId>
			<version>1.6-1</version>
			<exclusions>
            <exclusion>
                <artifactId>fop</artifactId>
                <groupId>fop</groupId>
            </exclusion>
        </exclusions>
		</dependency>

activiti5.22 版本與SpringMVC 4.3.10 整合

一、下載activiti5.22
https://pan.baidu.com/s/1jIacfaA
二、解壓activiti5.22
找到wars在的activiti-explorer.war,將其放在tomcat的webapps下,啓動tomcat將其解壓,找activiti-explorer\WEB-INF\lib,拷貝全部jar包到bamboo-activiti的lib下
本人採用的是maven 因此在pom文件中加入相關jar包html

<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-explorer</artifactId>
			<version>5.19.0.2</version>
		</dependency>
		<!-- <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-engine</artifactId> 
			<version>5.21.0</version> </dependency> -->

		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-modeler</artifactId>
			<version>5.22.0</version>
		</dependency>
		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-rest</artifactId>
			<version>6.0.0</version>
		</dependency>

		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-diagram-rest</artifactId>
			<version>5.22.0</version>
		</dependency>

		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-bpmn-model</artifactId>
			<version>5.22.0</version>
		</dependency>


		<dependency>
			<groupId>batik</groupId>
			<artifactId>batik-transcoder</artifactId>
			<version>1.6-1</version>
			<exclusions>
				<exclusion>
					<artifactId>fop</artifactId>
					<groupId>fop</groupId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>org.apache.xmlgraphics</groupId>
			<artifactId>batik-dom</artifactId>
			<version>1.7</version>
		</dependency>

		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-json-converter</artifactId>
			<version>5.19.0</version>
			<exclusions>
				<exclusion>
					<artifactId>commons-collections</artifactId>
					<groupId>commons-collections</groupId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>batik</groupId>
			<artifactId>batik-bridge</artifactId>
			<version>1.6-1</version>
		</dependency>

		<dependency>
			<groupId>org.codeartisans.thirdparties.swing</groupId>
			<artifactId>batik-all</artifactId>
			<version>1.8pre-r1084380</version>
		</dependency>


		<dependency>
			<groupId>batik</groupId>
			<artifactId>batik-css</artifactId>
			<version>1.6-1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.xmlgraphics</groupId>
			<artifactId>batik-codec</artifactId>
			<version>1.9</version>
		</dependency>

		<dependency>
			<groupId>batik</groupId>
			<artifactId>batik-ext</artifactId>
			<version>1.6-1</version>
		</dependency>
		<dependency>
			<groupId>batik</groupId>
			<artifactId>batik-gvt</artifactId>
			<version>1.6-1</version>
		</dependency>
		<dependency>
			<groupId>batik</groupId>
			<artifactId>batik-script</artifactId>
			<version>1.6-1</version>
		</dependency>
		<dependency>
			<groupId>batik</groupId>
			<artifactId>batik-parser</artifactId>
			<version>1.6-1</version>
		</dependency>
		<dependency>
			<groupId>batik</groupId>
			<artifactId>batik-svg-dom</artifactId>
			<version>1.6-1</version>
		</dependency>
		<dependency>
			<groupId>batik</groupId>
			<artifactId>batik-svggen</artifactId>
			<version>1.6-1</version>
		</dependency>
		<dependency>
			<groupId>batik</groupId>
			<artifactId>batik-util</artifactId>
			<version>1.6-1</version>
		</dependency>
		<dependency>
			<groupId>batik</groupId>
			<artifactId>batik-xml</artifactId>
			<version>1.6-1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.xmlgraphics</groupId>
			<artifactId>batik-js</artifactId>
			<version>1.7</version>
		</dependency>

		<dependency>
			<groupId>xml-apis</groupId>
			<artifactId>xml-apis-ext</artifactId>
			<version>1.3.04</version>
		</dependency>
		<dependency>
			<groupId>xml-apis</groupId>
			<artifactId>xml-apis</artifactId>
			<version>1.3.04</version>
		</dependency>
		<dependency>
			<groupId>org.apache.xmlgraphics</groupId>
			<artifactId>xmlgraphics-commons</artifactId>
			<version>1.2</version>
		</dependency>
		<dependency>
			<groupId>batik</groupId>
			<artifactId>batik-awt-util</artifactId>
			<version>1.6-1</version>
		</dependency>
		<dependency>
			<groupId>commons-collections</groupId>
			<artifactId>commons-collections</artifactId>
			<version>3.2.1</version>
		</dependency>
		<dependency>
			<groupId>commons-lang</groupId>
			<artifactId>commons-lang</artifactId>
			<version>2.6</version>
		</dependency>

三、 將wars下面的activiti-explorer.war 解壓縮
將webapp下的diagram-viewer、editor-app、modeler.html,將其加到項目的webapp下面
四、activiti 的配置文件以下前端

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="
	http://www.springframework.org/schema/beans
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context.xsd
	http://www.springframework.org/schema/mvc    
	http://www.springframework.org/schema/mvc/spring-mvc.xsd ">

	<!-- <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> 
		鏈接數據的配置 <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property> 
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti"></property> 
		<property name="jdbcUsername" value="root"></property> <property name="jdbcPassword" 
		value="123123"></property> 沒有表建立表 <property name="databaseSchemaUpdate" value="true"></property> 
		</bean> -->

	<!-- spring負責建立流程引擎的配置文件 -->
	<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
		<!-- 數據源 -->
		<property name="dataSource" ref="dataSource" />
		<!-- 配置事務管理器,統一事務 -->
		<property name="transactionManager" ref="transactionManager" />
		<!-- 設置建表策略,若是沒有表,自動建立表 -->
		<property name="databaseSchemaUpdate" value="true" />

		<!-- 做業執行器 -->
		<property name="jobExecutorActivate" value="false" />
		<property name="enableDatabaseEventLogging" value="false" />
		<!-- 歷史級別 -->
		<!-- <property name="history" value="activity" /> -->
		<property name="processDefinitionCacheLimit" value="10" />
		<!-- 生成流程圖的字體 -->
		<property name="activityFontName" value="宋體" />
		<property name="labelFontName" value="宋體" />
		<!-- 全局監聽器 -->
		<!-- <property name="typedEventListeners"> <map> <entry key="ENTITY_CREATED"> 
			<list> <bean class="com.ssm.activiti.listener.MyJobEventListener" /> </list> 
			</entry> <entry key="TASK_CREATED"> <list> <bean class="com.ssm.activiti.listener.MyJobEventListener" 
			/> </list> </entry> <entry key="TASK_COMPLETED"> <list> <bean class="com.ssm.activiti.listener.MyJobEventListener" 
			/> </list> </entry> <entry key="PROCESS_COMPLETED"> <list> <bean class="com.ssm.activiti.listener.MyJobEventListener" 
			/> </list> </entry> </map> </property> -->
	</bean>
	<!-- 建立流程引擎對象 -->
	<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
		<property name="processEngineConfiguration" ref="processEngineConfiguration" />
	</bean>

	<!-- 至關於下面的代碼 RepositoryServicie repositoryService = processEngine.getRepositoryService(); 
		RuntimeServicie repositoryService = processEngine.getRuntimeServicie(); TaskServicie 
		taskServicie = processEngine.getTaskServicie(); HistoryServicie historyServicie 
		= processEngine.getHistoryServicie(); -->
	<!-- 由流程引擎對象,提供的方法,建立項目中使用的Activiti工做流的Service -->
	<bean id="repositoryService" factory-bean="processEngine"
		factory-method="getRepositoryService" />
	<bean id="runtimeService" factory-bean="processEngine"
		factory-method="getRuntimeService" />
	<bean id="taskService" factory-bean="processEngine"
		factory-method="getTaskService" />
	<bean id="historyService" factory-bean="processEngine"
		factory-method="getHistoryService" />
	<bean id="formService" factory-bean="processEngine"
		factory-method="getFormService" />
	<bean id="identityService" factory-bean="processEngine"
		factory-method="getIdentityService" />
	<bean id="managementService" factory-bean="processEngine"
		factory-method="getManagementService" />

	<bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper" />

	<context:component-scan base-package="com.ssm.activiti.model" use-default-filters="false">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
	</context:component-scan>

</beans>

上面對於數據源的配置,我已經在mybatis配置的時候已經配置,這裏面直接用了datasource 在Spring 配置文件 spring.xml 引入上面的配置
<import resource="classpath:activiti.cfg.xml" />java

四、Activiti 5.22.0的libs中找到activiti-modeler-5.22.0-sources.jar 解壓
將三個java文件拷貝到本身的文件夾下 com.ssm.activiti.model ModelEditorJsonRestResource.java
ModelSaveRestResource.java
StencilsetRestResource.javamysql

五、activiti 配置文件添加配置web

<context:component-scan base-package="com.ssm.activiti.model" use-default-filters="false">
		<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
	</context:component-scan>

六、在editor-app中找到app-cfg.js文件,將'contextRoot' : '/activiti-explorer/service',修改成本項目的路徑spring

ACTIVITI.CONFIG = {
	'contextRoot' : '/api',
};

api是個人項目名稱sql

七、 建立Controller model 以下express

@Controller
@RequestMapping(EnvConstant.WORKFLOW_PROJECT_NAME + EnvConstant.WORKFLOW_VERSION + "model/")
public class ActivitiModelController {
    @Autowired
    private RepositoryService repositoryService;

    @RequestMapping("create")
    public void create(HttpServletRequest request, HttpServletResponse response) {
        try {

            ObjectMapper objectMapper = new ObjectMapper();
            ObjectNode editorNode = objectMapper.createObjectNode();
            editorNode.put("id", "canvas");
            editorNode.put("resourceId", "canvas");
            ObjectNode stencilSetNode = objectMapper.createObjectNode();
            stencilSetNode.put("namespace", "http://b3mn.org/stencilset/bpmn2.0#");
            editorNode.put("stencilset", stencilSetNode);
            Model modelData = repositoryService.newModel();

            ObjectNode modelObjectNode = objectMapper.createObjectNode();
            modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, "hello1111");
            modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);
            String description = "hello1111";
            modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
            modelData.setMetaInfo(modelObjectNode.toString());
            modelData.setName("hello1111");
            modelData.setKey("12313123");

            //保存模型
            repositoryService.saveModel(modelData);
            repositoryService.addModelEditorSource(modelData.getId(),
                    editorNode.toString().getBytes("utf-8"));
            response.sendRedirect(
                    request.getContextPath() + "/modeler.html?modelId=" + modelData.getId());
        } catch (Exception e) {
            System.out.println("建立模型失敗:");
        }
    }
}

八、將stencilset.json 拷貝到 /src/main/resources 下面
若是是從activiti-export war裏面拷貝過來的是model是英文的,須要進行漢化。
參考漢化版本
https://pan.baidu.com/s/1skKoTU9 八、前端頁面index.jsp 裏面加上連接apache

<div style="margin-top: 20px;">
		<a href="activiti/v0_1_0/model/create/">Spring-MVC 跳轉</a><br /> <a href="activiti/v0_1_0/model/create/">activiti-modele-index</a><br />
	</div>

點擊連接跳轉到model界面

參考連接:http://blog.csdn.net/u010411264/article/details/71480354

相關文章
相關標籤/搜索