Activiti HelloWorld实现
来源:互联网 发布:钱箱软件 编辑:程序博客网 时间:2024/06/05 22:31
做一个最简单的HellWorld流程用代码的方式实现并且走完流程。
1.首先是需要部署流程定义。
2.启动流程实例。
3.查看流程任务以及完成流程任务。
创建一个单元测试类ActivitiHelloWorldTest,首先第一操作流程就必须要获取引擎实例:
/** * 获取默认的流程引擎实例 会自动读取activiti.cfg.xml文件 */private ProcessEngine processEngine=ProcessEngines.getDefaultProcessEngine();
把绘制的流程定义图(我在上一篇博文上绘制过),部署下:/** * 部署流程定义 */@Testpublic void deploy(){ // 获取部署对象 Deployment deployment=processEngine.getRepositoryService() // 部署Service .createDeployment() // 创建部署 .addClasspathResource("diagrams/helloWorld.bpmn") // 加载资源文件 .addClasspathResource("diagrams/helloWorld.png") // 加载资源文件 .name("HelloWorld流程") // 流程名称 .deploy(); // 部署 System.out.println("流程部署ID:"+deployment.getId()); System.out.println("流程部署Name:"+deployment.getName());}
接着需要启动流程实例,这样一个流程才开始:/** * 启动流程实例 */@Testpublic void start(){ // 启动并获取流程实例 ProcessInstance processInstance=processEngine.getRuntimeService() // 运行时流程实例Service .startProcessInstanceByKey("myFirstProcess"); // 流程定义表的KEY字段值 System.out.println("流程实例ID:"+processInstance.getId()); System.out.println("流程定义ID:"+processInstance.getProcessDefinitionId());}
查看一下李四这个用户的任务信息:/** * 查看任务 */@Testpublic void findTask(){ // 查询并且返回任务即可 List<Task> taskList=processEngine.getTaskService() // 任务相关Service .createTaskQuery() // 创建任务查询 .taskAssignee("李四") // 指定某个人 .list(); for(Task task:taskList){ System.out.println("任务ID:"+task.getId()); System.out.println("任务名称:"+task.getName()); System.out.println("任务创建时间:"+task.getCreateTime()); System.out.println("任务委派人:"+task.getAssignee()); System.out.println("流程实例ID:"+task.getProcessInstanceId()); }}
最后完成HelloWorld节点任务,把流程走完:/** * 完成任务 */@Testpublic void completeTask(){processEngine.getTaskService() // 任务相关Service .complete("2504"); // 指定要完成的任务ID}
有个很重要的概念,流程定义和流程实例的关系,可以把这两种关系理解成是类和对象的关系。
流程定义是一个模板,而流程实例就是通过模板演变出来的具体的可用的东西。
首先当运行:deploy()部署流程定义方法,在数据库中流程定义表会发生一些变化新增了一条数据,
act_re_deployment流程定义部署表:
然后act_re_prodef流程定义表也会有一条数据插入:
还有一个act_ge_bytearray表用来存储资源信息:
接着来运行start()启动流程实例:
act_ru_task运行时流程任务表新增了一条数据:
act_ru_execution运行时流程执行表:
act_ru_identitulink是用于执行主体相关信息表:
可以查看刚刚"李四”这个用户的任务:
运行findTask()查看用户任务,控制台输出如下:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.任务ID:5004任务名称:HelloWorld任务创建时间:Mon Mar 13 11:15:18 CST 2017任务委派人:李四流程实例ID:5001
查询到了数据就说明这个用户有任务可以执行,接着运行completeTask()方法完成任务:然后数据库中ru开头的运行时候所有表的数据都没了,因为现在流程结束,不需要这些数据了。
在hi开头的表里,会新增不少数据,这些数据主要是用来归档查询用的,也就是历史数据。
act_hi_taskinst 历史流程实例任务表加了一条任务数据;
act_hi_procinst 历史流程实例实例表加了一条流程实例相关信息的数据(包括开始时间,结束时间等等信息);
act_hi_identitylink 历史流程实例参数者的表加了一条数据;
act_hi_actinst 历史活动节点表加了三条流程活动节点信息的数据(每个流程实例具体的执行活动节点的信息);
刚开始学东西都是先才HelloWorld学起的。
完成代码地址:https://pan.baidu.com/s/1pLpszsJ (我上传到百度云盘了)
- Activiti HelloWorld实现
- Activiti HelloWorld流程实现及原理
- Activiti基础介绍-helloworld
- Activiti基础教程--03(HelloWorld)
- Activiti基础教程--03(HelloWorld)
- 1.activiti工作流-helloworld
- activiti HelloWorld 入门demo
- Activiti 工作流 HelloWorld 02
- [学习小结]Activiti 工作流Helloworld
- Activiti学习之HelloWorld程序
- Activiti工作流(4):编写一个HelloWorld
- Activiti进阶(一)——HelloWorld
- 【Activiti 进阶一】简单流程实例helloworld
- Activiti进阶(一)——HelloWorld
- Activiti(一)——HelloWorld
- activiti初识25张表------HelloWorld
- Activiti进阶(一)——HelloWorld
- Activiti工作流概念及入门案例HelloWorld
- Oracle 约束的定义
- windown git安装
- 分布式日志收集并统计分析
- Java之实现自己的ArrayList与LinkedList
- react学习笔记(1)
- Activiti HelloWorld实现
- jQuery中extend函数详解
- C++ 智能指针详解
- sql中的limit的用法
- CA认证简单介绍和工作流程
- 终于看完了第三部分
- 构造方法私有化
- 算法总结--数组相关】双指针法的常见应用
- 关于Settings.Global /Secure/System