Activiti工作流框架——控制操作流程

Activiti工作流框架——控制操作流程

2023年8月1日发(作者:)

Activiti⼯作流框架——控制操作流程部署流程定义启动流程实例查询流程定义查询最新版本的流程定义查询流程实例状态导出流程图到⽂件夹下删除流程定义删除key相同的所有不同版本的流程定义设置流程变量获取流程变量查询历史任务查询历史流程实例查询历史流程变量查询历史活动部署流程定义classpath⽅式Deployment deployment = ositoryService()// 与流程定义和部署对象相关的Service .createDeployment()// 创建⼀个部署对象 .name("开⼯")// 添加部署的名称 .addClasspathResource("diagrams/Process_")// 从classpath的资源中加载,⼀次只能加载⼀个⽂件 .addClasspathResource("diagrams/Process_")// 从classpath的资源中加载,⼀次只能加载⼀个⽂件 .deploy();// 完成部署 n("部署ID:" + ()); n("部署名称:" + e());zip⽅式InputStream in = ss().getClassLoader().getResourceAsStream("diagrams/"); ZipInputStream zipInputStream = new ZipInputStream(in); Deployment deployment = ositoryService()// 与流程定义和部署对象相关的Service .createDeployment()// 创建⼀个部署对象 .name("流程定义")// 添加部署的名称 .addZipInputStream(zipInputStream)// 指定zip格式的⽂件完成部署 .deploy();// 完成部署 n("部署ID:" + ()); n("部署名称:" + e());使⽤key启动流程实例String processDefinitionKey = "process_1";// 流程定义的key,对应⽂件中id的属性值 // 使⽤key值启动,默认是按照最新版本的流程定义启动

ProcessInstance pi = timeService()// 与正在执⾏的流程实例和执⾏对象相关的Service .startProcessInstanceByKey(processDefinitionKey);// 使⽤流程定义的key启动流程实例 n("流程实例ID:" + ());// n("流程定义ID:" + cessDefinitionId());//查询流程定义通过流程定义ID、部署对象ID、流程定义的key以及流程定义的名称查询按照流程定义的key、版本、名称、ID、分类以及后缀ID升序或者降序排序返回的结果集是:⼀个集合列表、唯⼀的结果集、结果集的数量、分页查询List list = ositoryService()// 与流程定义和部署对象相关的Service .createProcessDefinitionQuery()// 创建⼀个流程定义的查询 /** 指定查询条件,where条件 */ .processDefinitionId("流程定义ID")// 使⽤流程定义ID查询 // .deploymentId(deploymentId)//使⽤部署对象ID查询 // .processDefinitionKey(processDefinitionKey)//使⽤流程定义的key查询 // .processDefinitionNameLike(processDefinitionNameLike)//使⽤流程定义的名称模糊查询 /** 排序 */ .orderByProcessDefinitionKey()// 按照流程定义的key // .orderByProcessDefinitionVersion()// 按照流程定义的版本 // .orderByProcessDefinitionName()//按照流程定义的名称 // .orderByProcessDefinitionId()//按照流程定义的ID排列 // .orderByProcessDefinitionCategory()//按照流程定义的分类 // .orderByDeploymentId()//按照流程定义的后缀ID .asc()// 升序排序 // .desc()//降序排序 /** 返回的结果集 */ .list();// 返回⼀个集合列表,封装流程定义 // .singleResult();//返回惟⼀结果集 // .count();//返回结果集数量 // .listPage(firstResult, maxResults);//分页查询 if (list != null && () > 0) { for (ProcessDefinition pd : list) { n("流程定义ID:" + ());// 流程定义的key+版本+随机⽣成数 n("流程定义的名称:" + e());// 对应⽂件中的name属性值 n("流程定义的key:" + ());// 对应⽂件中的id属性值 n("流程定义的版本:" + sion());// 当流程定义的key值相同的相同下,版本升级,默认1 n("资源名称bpmn⽂件:" + ourceName()); n("资源名称png⽂件:" + gramResourceName()); n("部署对象ID:" + loymentId()); } }查询最新版本的流程定义List list = ositoryService()// .createProcessDefinitionQuery()// .orderByProcessDefinitionVersion().asc()// 使⽤流程定义的版本升序排列 .list(); /** * Map map集合的key:流程定义的key map集合的value:流程定义的对象 * map集合的特点:当map集合key值相同的情况下,后⼀次的值将替换前⼀次的值 */ Map map = new LinkedHashMap(); if (list != null && () > 0) { for (ProcessDefinition pd : list) { ((), pd); } } List pdList = new ArrayList(()); if (pdList != null && () > 0) { for (ProcessDefinition pd : pdList) { n("流程定义ID:" + ());// 流程定义的key+版本+随机⽣成数 n("流程定义的名称:" + e());// 对应⽂件中的name属性值 n("流程定义的key:" + ());// 对应⽂件中的id属性值 n("流程定义的版本:" + sion());// 当流程定义的key值相同的相同下,版本升级,默认1 n("资源名称bpmn⽂件:" + ourceName()); n("资源名称png⽂件:" + gramResourceName()); n("部署对象ID:" + loymentId()); n("#########################################################"); } }查询流程实例状态已经结束没有结束ProcessInstance processInstance = timeService()// 表⽰正在执⾏的流程实例和执⾏对象 .createProcessInstanceQuery()// 创建流程实例查询 .processInstanceId("流程实例ID")// 使⽤流程实例ID查询 .singleResult(); if (processInstance == null) { n("流程已经结束"); } else { n("流程没有结束"); }导出流程图到⽂件夹下/** 将⽣成图⽚放到⽂件夹下 */ String deploymentId = "流程部署ID";// 流程部署ID // 获取图⽚资源名称 List list = ositoryService()// .getDeploymentResourceNames(deploymentId);// 流程部署ID // 定义图⽚资源的名称 String resourceName = "图⽚资源的名称"; if (list != null && () > 0) { for (String name : list) { if (f(".png") >= 0) { resourceName = name; } } } // 获取图⽚的输⼊流 InputStream in = ositoryService()// .getResourceAsStream(deploymentId, resourceName); // 将图⽚⽣成到D盘的⽬录下 File file = new File("C:/Users/Administrator/Desktop/新建⽂件夹diagrams/" + resourceName); // 将输⼊流的图⽚写到D盘下 putStreamToFile(in, file);删除流程定义// 使⽤部署ID,完成删除 String deploymentId = "1"; /* * 不带级联的删除 只能删除没有启动的流程,如果流程启动,就会抛出异常 */ // ositoryService()// // .deleteDeployment(deploymentId); /** * 级联删除 不管流程是否启动,都能可以删除 */ ositoryService()// .deleteDeployment(deploymentId, true); n("删除成功!");删除key相同的所有不同版本的流程定义// 流程定义的key String processDefinitionKey = "process_1"; // 先使⽤流程定义的key查询流程定义,查询出所有的版本 List list = ositoryService()// .createProcessDefinitionQuery()// .processDefinitionKey(processDefinitionKey)// 使⽤流程定义的key查询 .list(); // 遍历,获取每个流程定义的部署ID if (list != null && () > 0) { for (ProcessDefinition pd : list) { // 获取部署ID String deploymentId = loymentId(); ositoryService()// .deleteDeployment(deploymentId, true); } }设置流程变量使⽤基本数据类型 // 任务服务 TaskService taskService = kService(); // 任务ID String taskId = "任务ID"; /** ⼀:设置流程变量,使⽤基本数据类型 */ iableLocal(taskId, "请假天数", 5);// 与任务ID绑定 iable(taskId, "请假⽇期", new Date()); iable(taskId, "请假原因", "回家探亲,⼀起吃个饭");使⽤Javabean类型当⼀个javabean(实现序列号)放置到流程变量中,要求javabean的属性不能再发⽣变化 * 如果发⽣变化,再获取的时候,抛出异常,解决⽅案:在Person对象中添加: private static final long erialVersionUID = 6757393795687480331L; 同时实现Serializableimport izable;/* * 序列化 */public class Person implements Serializable { /* * 固定化 */ private static final long serialVersionUID = -552699342L; private int id;// 编号 private String name;// 名称

public int getId() { return id; } public void setId(int id) { = id; } public String getName() { return name; } public void setName(String name) { = name; }}// 任务服务 TaskService taskService = kService(); // 任务ID String taskId = "任务ID"; Person p = new Person(); (20); e("翠花"); iable(taskId, "⼈员信息(添加固定版本)", p);获取流程变量基本数据类型/** 任务服务 */ TaskService taskService = kService(); // 任务ID String taskId = "任务ID"; /** ⼀:获取流程变量,使⽤基本数据类型 */ Integer days = (Integer) iable(taskId, "请假天数"); Date date = (Date) iable(taskId, "请假⽇期"); String resean = (String) iable(taskId, "请假原因"); n("请假天数:" + days); n("请假⽇期:" + date); n("请假原因:" + resean);Javabean类型/** 任务服务 */ TaskService taskService = kService(); // 任务ID String taskId = "2904"; /** ⼆:获取流程变量,使⽤javabean类型 */ Person p = (Person) iable(taskId, "⼈员信息(添加固定版本)"); n("id:" + ()); n("name:" + e());查询历史任务String processInstanceId = "流程实例ID";// 流程实例ID List list = toryService()// 与历史数据(历史表)相关的Service .createHistoricTaskInstanceQuery()// 创建历史任务实例查询 .processInstanceId(processInstanceId)// .orderByHistoricTaskInstanceStartTime().asc().list(); if (list != null && () > 0) { for (HistoricTaskInstance hti : list) { n(() + " " + e() + " " + cessInstanceId() + " " + rtTime() + " " + Time() + " " + ationInMillis()); } }查询历史流程实例String processInstanceId = "流程实例ID"; HistoricProcessInstance hpi = toryService()// 与历史数据(历史表)相关的Service .createHistoricProcessInstanceQuery()// 创建历史流程实例查询 .processInstanceId(processInstanceId)// 使⽤流程实例ID查询 .orderByProcessInstanceStartTime().asc().singleResult(); n(() + " " + cessDefinitionId() + " " + rtTime() + " " + Time() + " " + ationInMillis());查询历史流程变量String processInstanceId = "流程实例ID";// 流程实例ID List list = toryService()// .createHistoricVariableInstanceQuery()// 创建⼀个历史的流程变量查询对象 .processInstanceId(processInstanceId)// .list(); if (list != null && () > 0) { for (HistoricVariableInstance hvi : list) { n(() + " " + cessInstanceId() + " " + iableName() + " " + iableTypeName() + " " + ue()); } }查询历史活动String processInstanceId = "流程实例ID";//流程实例ID List list = toryService()// .createHistoricActivityInstanceQuery()// 创建历史活动实例的查询 .processInstanceId(processInstanceId)// .orderByHistoricActivityInstanceStartTime().asc()// .list(); if (list != null && () > 0) { for (HistoricActivityInstance hai : list) { n(() + " " + cessInstanceId() + " " + ivityType() + " " + rtTime() + " " + Time() + " " + ationInMillis()); } }

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690873017a451974.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信