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