10. BPMN规范
业务流程模型注解(Business Process Modeling Notation -
BPMN)是业务流程模型的一种标准图形注解。这个标准 是由对象管理组(Object Management Group -
OMG)维护的。包含以下部分:
流对象:事件、活动、网关
连接对象:序列流、消息流、关联
泳道:池、道
人工制品:数据对象、组、注释
10.1 事件
启动事件:
<startEvent id="start" name="myStart" />
结束事件:
<endEvent id="end" name="myEnd" />
10.2 网关
包含网关:
<inclusiveGateway id="inclusiveGatewaySplit" default="flow3"/>
排他网关:
<exclusiveGateway id="decision" name="decideBasedOnAmountAndBankType" default="myFlow"/>
并行网关:
<parallelGateway id="myParallelGateway" name="My Parallel Gateway" />
10.3 任务
人工任务:
<userTask id="myTask" name="My task" />
服务任务:
<serviceTask id="MyServiceTask" name="My service task"
implementation="Other" operationRef="myOperation" />
11. 与Spring和Mybatis整合
<bean id="activitiDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/activiti?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</bean>
<!--配置事务管理器-->
<bean id="activitiTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="activitiDataSource"/>
</bean>
<!--流程引擎配置-->
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<property name="dataSource" ref="activitiDataSource"/>
<property name="transactionManager" ref="activitiTransactionManager"/>
<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"/>
整合思路 比如我们想把请假条保存到自己创建的表中,又想使用activiti操作请假流程, 请假条表LEAVE_APPLY
添加一个请假条之后,获得唯一标识符(如id)。
在启动activiti任务的时候,可以传入一个BUSINESS_ID,可以把请假条的id当成BUSINESS_ID传递给activiti。
runtimeService.startProcessInstanceByKey("ProcessDefinitionKey", "BUSINESS_KEY", variable);
在act_ru_task表中保存了EXECUTION_ID_和ASSIGNEE_(处理人)
act_ru_execution表中保存了BUSINESS_KEY_
如果处理人指定的是任务组,那么在act_ru_identitylink中保存了USER_ID_(处理人)和TASK_ID_(任务id)与act_ru_task表关联,其中处理人与我们自己设计的用户表关联。
如查询某个人要处理的请假条:
select L.ID,L.USER_ID,L.START_DATE,L.END_DATE,L.STATUS,L.REASON,L.ADVISE,L.TASK_ID,U.REAL_NAME
from activiti.ACT_RU_TASK RES
inner join activiti.ACT_RU_IDENTITYLINK I on I.TASK_ID_ = RES.ID_
INNER JOIN activiti.act_ru_execution RU ON RES.EXECUTION_ID_=RU.ID_
INNER JOIN test.leave_apply L ON RU.BUSINESS_KEY_=L.ID
inner join ADMIN_USER U on L.USER_ID=U.ID
WHERE RES.ASSIGNEE_ =#{userId}
or(I.TYPE_ = 'candidate' and I.USER_ID_ = #{userId} )
其中#{userId}是任务的代办者