activiti之流程变量
来源:互联网 发布:下载360软件用的软件 编辑:程序博客网 时间:2024/06/06 12:55
下边我们先看一下和流程变量的数据库表都有哪些,当然我们自己建的表的不说了,都是流程变量。哈哈。
act_ru_task(正在执行的任务表)和act_hi_taskinst(正在执行的任务表)
主要记录了正在执行的任务名称,流程实例ID,流程定义DI,任务的key,和流程变量信息。
历史任务表记录的信息和正在执行的任务表信息都一样,区别就在于一个是全部的信息,一个事正在执行的任务相关信息。
act_hi_comment
因为是多用于对业务的操作,这个表主要记录了一些不同用于对同一个事件不同的看法,以方便其他用户做参考。例如请假,项目经理一说:我的员工老师加班,就得给家,主任也就直接给了。对吧。
act_ru_execute(正在执行的实例表)注意business_key,这个字段是我们自定义的,我的方法就是实例 + “.” + "业务ID"
act_ru_variable(正在执行的 流程定义表信息)
好的,activiti提供的表有流程变量的就是这些表了,既然有了这些表,那么我们看一下这些表在我们业务实现的时候都是如何来运用的。下边我通过两个实例,一个是我在画流程图是写好流程实例,一个是运用javaBean来实现。
简单实例
部署并启动流程实例
- ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
- /**部署流程定义从(inputStream)*/
- @Test
- public void deploymentProcessDefinition_input(){
- InputStream inputStreamBpmn = this.getClass().getResourceAsStream("/diagrams/porcessVariables.bpmn");
- InputStream inputStreamPng = this.getClass().getResourceAsStream("/diagrams/porcessVariables.png");
- Deployment deployment = processEngine.getRepositoryService() //用于流程定义和部署相关对象的Service
- .createDeployment() //创建一个部署对象
- .name("hellworld部门程序")
- .addInputStream("porcessVariables.bpmn", inputStreamBpmn) //使用资源名称和输入流(与资源文件的名称要一直)
- .addInputStream("porcessVariables.png", inputStreamPng)
- .deploy();
- System.out.println("deployment" + deployment.getId()); //1
- System.out.println("deployment" + deployment.getName());//部门程序
- }
- @Test
- public void startProcessInstance() {
- //流程定义的key
- String processInstenceKey = "processVariables";
- ProcessInstance pi = processEngine.getRuntimeService() //与正在执行的流程实例和执行对象相关的service
- .startProcessInstanceByKey(processInstenceKey); //使用流程定义的key来启动流程实例helloworld.bpmn的id,使用key启动,默认用最新的版本启动
- System.out.println("流程实例id:" + pi.getId()); //流程实例id
- System.out.println("流程定义id:" + pi.getProcessDefinitionId()); //流程定义ID helloworld:1:4
- }
- <pre name="code" class="java">@Test
- public void setVariables(){
- String taskId = "2004";
- TaskService taskService = processEngine.getTaskService();
- taskService.setVariableLocal(taskId, "请假天数", 3); //与任务ID绑定
- taskService.setVariable(taskId, "请假日期", new Date());
- taskService.setVariable(taskId, "请假原因", "回家看亲");
- System.out.println("设置成功了");
- }
- public class Person implements Serializable {
- /**
- *
- */
- private static final long serialVersionUID = 1L;
- private Integer id;
- private String name;
- public String getName() {
- return name;
- }
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
- @Test
- public void setVariables(){
- String taskId = "2004";
- TaskService taskService = processEngine.getTaskService();
- /**使用javaBean*/
- Person p = new Person();
- p.setId(20);
- p.setName("menghaibintest");
- taskService.setVariable(taskId, "人员信息", p);
- System.out.println("设置成功了");
- }
看一下效果显示
那么我们获取一下吧
- /**
- * 获取流程变量
- */
- @Test
- public void getVariables(){
- TaskService taskService = processEngine.getTaskService();
- String taskId = "404";
- Person p = (Person)taskService.getVariable(taskId, "人员信息");
- System.out.println("id:" + p.getId());
- System.out.println("name" + p.getName());
- }
简单总结一下就是既然要设置好流程变量,那么就要知道我们的流程变量在数据库中表的位置,和在工作流中如何设置。既然是面向对象,我们就不应该再去使用一个一个设置的方式。
- activiti之流程变量
- activiti之流程变量
- activiti之排他网关,流程变量
- activiti中的流程变量
- Activiti流程变量
- Activiti 流程变量
- Activiti流程变量
- activiti 设置流程变量
- activiti 流程变量
- Activiti 流程变量
- Activiti(四)流程变量
- Activiti基础教程--06流程变量
- Activiti(四)流程变量
- Activiti基础教程--06流程变量
- 5、Activiti 流程变量 Variables
- activiti自定义流程之Activiti Modeler汉化
- Activiti学习笔记七 流程变量
- Activiti 学习笔记五:流程变量
- unity使用NAudio/NVorbis加载外部音频文件
- unity虚拟摇杆控制 Virtual Joystick
- 字符串的压缩
- js解决按需引入文件(IOS11引入fastclick有bug)
- Python才是世界上最好的言语,php,java靠边站
- activiti之流程变量
- DrawerLayout侧滑的
- 个人学习笔记---linux物理内存空间与虚拟内存空间
- 【Struts】拦截器的执行流程
- 自定义View(二):深入解析onMeasure()
- 如何解决OA管理员绑定了动态密码卡后,因动态密码卡设备损坏等因素导致的无法登录?
- HDU-1043 Eight(经典八数码问题, A*+康拓+曼哈顿距离+逆序数判断可解性、双向搜索)
- 灵活应对流量压力,定期压测服务器,鹿晗结婚都不怕
- Spring中bean注入初始化方式—通过注解@Configuration @bean