SpringMVC集成Activiti5.22

1、搭建SpringMVC項目

2、添加activiti-engine和activiti-spring包

3、Resource下添加spring-activiti.xml

<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
<!-- ==================== Activiti配置 start =================== -->
<!-- 單例json對象 -->
    <bean id="objectMapper" class="com.fasterxml.jackson.databind.ObjectMapper"/>
<!-- activiti的processEngine配置 -->
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
  <property name="dataSource" ref="dataSource" />
  <property name="transactionManager" ref="transactionManager" />
  <!-- 沒有表創建表 -->
  <property name="databaseSchemaUpdate" value="true" />
  <!-- 是否激活Activiti的任務調度 -->
  <property name="jobExecutorActivate" value="false" />
  </bean>
    <!-- 加載activiti引擎processEngine --> 
<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean" destroy-method="destroy">
  <property name="processEngineConfiguration" ref="processEngineConfiguration" />
</bean>
<!-- activiti的7大服務接口 -->
<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="formService" factory-bean="processEngine" factory-method="getFormService" />
<bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" />
<bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" />
<bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService" />
<!-- ==================== Activiti配置 end =================== -->
</beans>

4、web.config中添加spring-activiti.xml配置

5、訪問報錯

java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/util/DefaultIndenter

參考:http://blog.csdn.net/xiongge2005/article/details/71172861

6、MySql數據庫中要有名稱爲activiti的數據庫,啓動網站後,則可以生成25張表,代表以上配置成功了,現在項目架構爲:

7、Copy $\Activiti源碼\modules\activiti-webapp-explorer2\src\main\webapp源代碼diagram-viewer、editor-app、modeler.html到webapp下邊

       Copy $\Activiti源碼\modules\activiti-webapp-explorer2\src\main\resources源代碼stencilset.json到resource下邊

8、添加activiti-modeler依賴

9、創建ModuleController類

package com.lhr.springmvc.activiti.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.activiti.editor.constants.ModelDataJsonConstants;
import org.activiti.engine.RepositoryService;
import org.activiti.engine.repository.Model;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
@RestController
public class ModuleController {
@Autowired
private RepositoryService repositoryService;
@RequestMapping(value = "model/create")
public void create(@RequestParam("name") String name, @RequestParam("key") String key, 
@RequestParam("description") String description, 
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, name);
modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);
description = StringUtils.defaultString(description);
modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
modelData.setMetaInfo(modelObjectNode.toString());
modelData.setName(name);
modelData.setKey(StringUtils.defaultString(key));

repositoryService.saveModel(modelData);
repositoryService.addModelEditorSource(modelData.getId(), editorNode.toString().getBytes("utf-8"));;

response.sendRedirect(request.getContextPath() + "/modeler.html?modelId=" + modelData.getId());

} catch(Exception e){
}
}
}
10、spring-mvc.xml中添加

<mvc:resources location="diagram-viewer/" mapping="diagram-viewer/**"/>
<mvc:resources location="editor-app/" mapping="editor-app/**"/>
<mvc:resources location="/" mapping="/**.html"/>
<mvc:resources location="/" mapping="/**.jsp"/>
<context:component-scan base-package="com.springdemo.controller"/>
<context:component-scan base-package="org.activiti.rest.editor.model"/>
<context:component-scan base-package="org.activiti.rest.editor.main"/>

11、app-cfg.js改成自己項目的名稱

我這改成:'contextRoot' : '/lhr-spring-mvc-activiti',

12、訪問:localhost:8080/lhr-spring-mvc-activiti/model/create?name=Demo&key=DemoProcess&description=test,走ModuleController類中的create方法,跳轉到

http://localhost:8080/lhr-spring-mvc-activiti/modeler.html?modelId=1這個地址,即爲編輯界面


13、要想使用中文下載:http://download.csdn.net/detail/xiongge2005/9834209進行替換即可。

14、源代碼訪問:http://download.csdn.net/detail/xiongge2005/9836531


發佈了32 篇原創文章 · 獲贊 9 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章