基于Spring配置activiti

一、引入依赖的jar包

		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-engine</artifactId>
			<version>5.15.1</version>
		</dependency>
		<dependency>
			<groupId>org.activiti</groupId>
			<artifactId>activiti-spring</artifactId>
			<version>5.15.1</version>
		</dependency>

二、设置Spring配置文件

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

  <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">  
    <property name="driverClass" value="com.mysql.jdbc.Driver" />  
    <property name="url" value="jdbc:mysql://localhost:3310/activiti_5_15" />  
    <property name="username" value="root" />  
    <property name="password" value="" />  
  </bean>  

  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
    <property name="dataSource" ref="dataSource" />  
  </bean>  

 <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" />  
  </bean>  

  <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">  
    <property name="processEngineConfiguration" ref="processEngineConfiguration" />  
  </bean>  

  <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="managementService" factory-bean="processEngine" factory-method="getManagementService" />  
  
</beans>


三、初始化数据库

初始化的sql脚本在activiti-engine-5.15.1.jar\org\activiti\db\create文件夹中,使用对应于数据库的sql进行建表即可。

四、bpm流程定义文件

testOneUserTask.bpmn20.xml

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="Examples">
  <process id="oneTaskProcess" name="The One Task Process" isExecutable="true">
    <startEvent id="theStart"></startEvent>
    <sequenceFlow id="flow1" sourceRef="theStart" targetRef="theTask"></sequenceFlow>
    <userTask id="theTask" name="my task"></userTask>
    <sequenceFlow id="flow2" sourceRef="theTask" targetRef="theEnd"></sequenceFlow>
    <endEvent id="theEnd"></endEvent>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_oneTaskProcess">
    <bpmndi:BPMNPlane bpmnElement="oneTaskProcess" id="BPMNPlane_oneTaskProcess">
      <bpmndi:BPMNShape bpmnElement="theStart" id="BPMNShape_theStart">
        <omgdc:Bounds height="35.0" width="35.0" x="470.0" y="176.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="theTask" id="BPMNShape_theTask">
        <omgdc:Bounds height="60.0" width="100.0" x="550.0" y="161.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="theEnd" id="BPMNShape_theEnd">
        <omgdc:Bounds height="35.0" width="35.0" x="700.0" y="176.0"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
        <omgdi:waypoint x="505.0" y="193.0"></omgdi:waypoint>
        <omgdi:waypoint x="512.0" y="191.0"></omgdi:waypoint>
        <omgdi:waypoint x="512.0" y="191.0"></omgdi:waypoint>
        <omgdi:waypoint x="550.0" y="191.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
        <omgdi:waypoint x="650.0" y="191.0"></omgdi:waypoint>
        <omgdi:waypoint x="662.0" y="191.0"></omgdi:waypoint>
        <omgdi:waypoint x="662.0" y="191.0"></omgdi:waypoint>
        <omgdi:waypoint x="700.0" y="193.0"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>


五、测试代码

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.activiti.engine.RuntimeService;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.spring.ProcessEngineFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;



@Controller
@RequestMapping(value = "test/bpm")
public class TestBpmController {

    @Autowired
    private ProcessEngineFactoryBean processEngine;
    
    @Autowired
    private RuntimeService runtimeService;
    
    
    @RequestMapping("/ok")
    @ResponseJson
    public String returnMessage() {
        return "ok";
    }

    @RequestMapping(value = "/startProcess.do")
    @ResponseJson
    public String startProcess() {
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
        return "启动流程:" + processInstance.getId();
    }

    @RequestMapping( value="/completeTask/{id}" )
    @ResponseJson
    public String completeProcess(HttpServletRequest request,HttpServletResponse response,@PathVariable String id){
         processEngine.getProcessEngineConfiguration().getTaskService().complete(id);
        return "完成任务:" + id;
    }
    
    @RequestMapping( value="/signalProcess/{executionId}" )
    @ResponseJson
    public String signalProcess(HttpServletRequest request,HttpServletResponse response,@PathVariable String executionId){
        processEngine.getProcessEngineConfiguration().getRuntimeService().signal(executionId);
        return "完成:"+executionId;
    }
}


六、使用activiti-explorer

1、下载地址 http://activiti.org/download.html

2、copy to lib
mysql-connector-java-5.1.19.jar

3、修改db.properties
db=mysql
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3310/activiti_5_15
jdbc.username=root
jdbc.password=

4、打开浏览器访问http://localhost:8080/activiti-explorer。 使用kermit/kermit登录

5、发布流程

管理->部署包->添加新的部署包->选择一个文件(testOneUserTask.bpmn20.xml)

七、测试

1、浏览器中输入:http://localhost:8080/testAAA/test/bpm/startProcess.do 

      执行后,将打印processId

2、修改数据库,将流程分配给用户kermit:

update act_hi_procinst set start_user_id_='kermit' where PROC_INST_ID_='39701' limit 1;
3、查看activiti-explorer流程图,如下:

4、完成该人工任务

--获取指定流程的taskId
select id_ from act_ru_task where PROC_INST_ID_='39701'
执行
http://localhost:8080/testAAA/test/bpm/completeTask/{taskId}


      



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值