1.13.activiti

13.activiti

1.activiti是什么

apache旗下的一款专用来处理业务审批流程的组件。前身jpbm。

2.使用activiti

选择5.22版本进行学习。

  • 安装mysql数据库表;
运行create.sql脚本创建25张数据库表(这些别中的数据绝对不允许手工改动);
认识下表结构:
	act_id_*:系统用户与角色表。需要系统自身的用户管理与角色管理的同时,把用户和角色数据在id_*表中保存。
	act_ge_*:保存的是组件的基本信息.
	act_Re_*:流程部署记录。
	act_ru_*:运行时流程数据表。
	act_hi_*:历史流程数据表。
  • ssm中安装activiti环境,配置数据库连接;
<dependency>
      <groupId>org.activiti</groupId>
      <artifactId>activiti-engine</artifactId>
      <version>5.22.0</version>
    </dependency>

    <dependency>
      <groupId>org.activiti</groupId>
      <artifactId>activiti-spring</artifactId>
      <version>5.22.0</version>
      <exclusions>
        <exclusion>
          <groupId>commons-dbcp</groupId>
          <artifactId>commons-dbcp</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-orm</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
  • ssm中配置activiti的核心bean对象到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="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
        <property name="dataSource" ref="dataSource" />
        <property name="transactionManager" ref="transactionManager" />
        <property name="databaseSchemaUpdate" value="false" />
        <property name="jobExecutorActivate" value="false" />
    </bean>

    <!--核心对象:ProcessEngine,其实就是一个工厂对象,用来创建核心的服务接口对象-->
    <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
        <property name="processEngineConfiguration" ref="processEngineConfiguration" />
    </bean>

    <!--核心的服务接口-->
    <bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService"></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" />
</beans>

3.使用identityService服务接口

1.newUser-->saveUser
2.newGroup-->saveGroup
3.createMemerShip(String userid,String groupid)

4.进行流程设计(流程定义)

bpmn是一门流程定义语言,做流程设计。

activiti提供的eclipse下的可视化流程设计插件,可以在线安装http://activiti.org/designer/update/,也支持本地离线安装。

流程设计的注意点:

1.文件一定定义id与name;

2.UserTask一定要定义assignee或candidate users或candidate groups中的一个,支持${}表达式,传入流程变量

3.网关的选择ExclusiveGateWay排他网关.用来做流程分支。

4.流程分支上一定要写明条件表达式

5.节点的listener,选择Expression,在spring环境下使用,写${beanid.方法名(形参)}.

5.部署流程

通过RepositoryService接口,去进行流程部署管理

 DeploymentBuilder deployment = rs.createDeployment();
deployment.addClasspathResource("workflow/leaveProcess.bpmn");
  deployment.addClasspathResource("workflow/leaveProcess.png");
  deployment.name("请假流程部署");
   Deployment deploy = deployment.deploy();

流程部署记录查询:

 DeploymentQuery deploymentQuery = rs.createDeploymentQuery();//流程部署查询独享
deploymentQuery.orderByDeploymenTime().desc();
//        deploymentQuery.listPage();//分页查询
        List<Deployment> list = deploymentQuery.list();

流程部署删除:前提该流程部署未启动流程实例。

 String deployid="27501";
        rs.deleteDeployment(deployid);

6、启动流程以及执行任务

RunTimeService接口来start流程实例

ProcessInstance processInstance = rs.startProcessInstanceByKey(key2,Map类型的流程变量);

TaskService接口来执行某个任务

ts.complete(taskid);

TaskService接口来添加审批意见:

 ts.addComment(任务id,流程实例id,审批结果,审批意见);

TaskService接口支持查询历史评论:

 List<Comment> comments = ts.getProcessInstanceComments(流程实例id);

TaskService接口签收多人代办任务:

ts.claim(任务id)

TaskService接口查询执行中的流程的个人代办任务:

 TaskQuery taskQuery = ts.createTaskQuery();//任务查询独享
        taskQuery.taskCandidateOrAssigned(loginUser);//指定代办人
        taskQuery.processDefinitionKey(key2);//查询某个流程下的代办任务
        List<Task> list = taskQuery.list();//待办列表

7.流程跟踪

HistoryService接口来进行历史任务查询

HistoricTaskInstanceQuery tq = hs.createHistoricTaskInstanceQuery();
tq.processInstanceId(流程实例id);//指定查询条件
tq.list()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值