Atitit flowable使用总结 目录 1. flowable 1 1.1. 添加依赖 1 1.2. Flowable的启动接口 2 2. 还是使用简单流程来完成业务流程的学习, 2 2.1.
Atitit flowable使用总结
目录
2.5. d. 最后一步,完成实现申请通过后执行的自动逻辑,在现实中,这个逻辑可以做任何事情,例子中只做任务处理 6
- flowable存储数据默认采用h2内存数据库,但我这里还是用熟悉的mysql
- flowable内部采用SLF4J作为其日志框架
- 部署前我们编辑了一个普通的流程文件,需要加载下改文件来防止文件有错误,把文件转换为BPMNModel来校验,核心接口为BpmnXMLConverter,通过API接口convertToBpmnModel来实现xml到模型的转换
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-engine</artifactId>
<version>6.4.1</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
- 加载完成流程后,我们将流程启动,Flowable的启动接口为runtimeService,运行时服务调用startProcessInstanceByKey启动一个流程,并且返回流程对象ProcessInstance。该对象包含ID,后续我们将经常用到该ID。
目前流程只包含一个开始节点/用户任务节点/结束节点。给用户任务节点配置一个分配人为admin.如下图所示:
当客户有这么一个需求:下一个任务我需要自动执行一些操作,并且这个节点不需要任何的人工干涉,也就是说这个节点是自动化的。那么,这个当前面一个经办人员把任务发送下去的时候,自然而然的下一个节点就会开始马上执行。这个时候。我们就需要使用Activiti工作流的ServiceTask任务。
搞个类左右
ProcessEngineConfiguration config=ProcessEngineConfiguration.createStandaloneInMemProcessEngineConfiguration()
.setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE)
.setJdbcUrl("jdbc:h2:mem:my-own-db;DB_CLOSE_DELAY=1000")
.setAsyncExecutorActivate(false);
ProcessEngine processEngine =config.buildProcessEngine();
运行后表目录为
5.1创建一个bpmn文件:使用eclipse bpmn2插件
process_1.bpmn
注意地方
<bpmn2:process id="process_1" name="Default Process" isExecutable="true">
xmlns:activiti="http://activiti.org/bpmn"
/*创建了一个新的部署*/
RepositoryService repositoryService = processEngine.getRepositoryService();
Deployment deployment = repositoryService.createDeployment()
.addClasspathResource("process_1.bpmn") //TODO holiday.xml命名为何不行?
.deploy();
//启动一个流程结点
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance =
runtimeService.startProcessInstanceByKey("process_id2", new HashMap());
System.out.println("--finis");
<serviceTask id="externalSystemCall" name="Enter holidays in external system" activiti:class="cn.thinvent.first.CallExternalSystemDelegate"/>
创建Java类,实现JavaDelegate
public class CallExternalSystemDelegate implements JavaDelegate {
public void execute(DelegateExecution execution) {
System.out.println("Calling the external system for employee "
+ execution.getVariable("employee"));
}
}