2023年8月1日发(作者:)
Activiti⼯作流之流程分⽀回顾:⼯作流之flow管理10张表:select * from act_re_deployment;select * from act_re_procdef;select * from act_ge_bytearray;select * from act_ru_execution;select * from act_ru_task;select * from act_hi_taskinst;select * from act_hi_procinst;select * from act_hi_actinst;select * from act_hi_varinst;select * from act_ru_variable;新建bpmn图, 流程定义的key设置为"ruzhi":在"经理审批通过"和"发送⽼板审批"的分⽀上设置流程变量:① 测试: 部署-->启动流程, 此时流程执⾏到"经理审批"的节点上, 然后选择流程变量的分⽀为"经理审批通过"执⾏下去package 1;import p;import ;import sEngine;import sEngines;import toryService;import eService;import rvice;import mentBuilder;import ;import ;import ;public class ActivitiTest1 { //定义⼀个成员变量 RepositoryService repositoryService;
RuntimeService runtimeService;
TaskService taskService;
/** * 获取流程引擎 */ @Before public void setUp() throws Exception { //获取流程引擎对象, 默认是读取配置⽂件"" ProcessEngine processEngine = aultProcessEngine(); //获取RepositoryService接⼝的实现类 repositoryService = ositoryService(); runtimeService = timeService(); taskService = kService(); } /** * 部署流程①: 通过单⽂件的形式加载部署 * 部署流程①: 通过单⽂件的形式加载部署 */ @Test public void delpoyActiviti1() { //获取部署对象 DeploymentBuilder deploymentBuilder = Deployment(); sspathResource("diagrams1/") .name("⼊职流程").category("⼊职") .addClasspathResource("diagrams1/"); //部署流程 (); }
/** * 启动流程 */ @Test public void startProcess() { //根据流程的key来启动相对应的流程, 默认是启动最新版本的流程 rocessInstanceByKey("ruzhi"); }
/** * 完成任务: 执⾏"经理审批通过"分⽀ */ @Test public void completeTask1(){ String assignee = "manager"; Task task = TaskQuery() .processDefinitionKey("ruzhi").taskAssignee(assignee).singleResult(); Map
}结果: "经理审批通过"分⽀完成, 任务结束.② 测试: 执⾏"发送⽼板审批"分⽀/** * 完成任务: 执⾏"发送⽼板审批"分⽀ */ @Test public void completeTask2(){ String assignee = "manager"; Task task = TaskQuery() .processDefinitionKey("ruzhi").taskAssignee(assignee).singleResult(); Map
/** * ⽼板办理任务 */ @Test public void completeTask3(){ String assignee = "boss"; Task task = TaskQuery() .processDefinitionKey("ruzhi").taskAssignee(assignee).singleResult(); te(()); }结果: "发送⽼板审批"分⽀完成, 任务结束.
获取outcome和income的连接线获取分⽀连接线⾮常重要, 可以在项⽬中⾃动⽣成按钮.测试代码:@Test public void getOutcomeFlow(){ String assignee = "manager"; Task task = TaskQuery() .processDefinitionKey("ruzhi").taskAssignee(assignee).singleResult(); //获取流程定义// ProcessDefinitionQuery().processDefinitionKey("ruzhi").singleResult(); //或者 //获取流程定义实体的对象(不需要创建查询对象*****) ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) repositoryService .getProcessDefinition(cessDefinitionId()); //获取流程实例 ProcessInstance processInstance = ProcessInstanceQuery() .processInstanceId(cessInstanceId()).singleResult(); //获取当前流程实例的活动id String activityId = ivityId(); //获取当前流程定义中的活动节点(包括开始和结束节点) ActivityImpl activityImpl = tivity(activityId); //获取输出的flow List
/** * 获取当前节点的来路 * ① 获得当前节点的所有来路(其中⼀条是来路) * ② 拿到上⼀步的节点(历史节点),找到它的所有出路(其中有⼀条出路是当前节点的来路) * ③ 找到以上两步中的重复的连线就是当前节点的来路 */ @Test public void getIncomingFlow(){ String assignee = "employee"; String assignee = "employee"; List
String incomeFlow = null; loop : for(String income: incomeFlows){ for(String outcome: preActivityOutcomeList){ if((outcome)){ incomeFlow = income;//incomeFlow = outcome; break loop; } } } n("当前节点的来路是: "+incomeFlow); }
发布者:admin,转转请注明出处:http://www.yc00.com/web/1690873945a452183.html
评论列表(0条)