Activiti工作流入门筑基圆满

  • 【Activiti工作流入门筑基圆满】第十一步:关联业务表
    //关联业务表 @Test public void actionwith(){ //1、获取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、获取RuntimeService RuntimeService runtimeService = processEngine.getRuntimeService(); // 3、启动流程的过程中,添加businesskey //第二个参数:businessKey,业务表的id,就是1001 ProcessInstance instance = runtimeService. startProcessInstanceByKey("holiday", "1001"); //4、输出 System.out.println("businessKey=="+instance.getBusinessKey()); }

    运行截图:
    Activiti工作流入门筑基圆满
    文章图片

  • 第十二步:使用uel表达式创建负责人
    (一)重新创建bpmn文件
    png图片和bpmn文件见上面的步骤 ```Java 流程部署 //1、创建ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、获取RepositoryServcie RepositoryService repositoryService = processEngine.getRepositoryService(); //3、使用service进行流程的部署,定义一个流程的名字,把bpmn和png部署到数据中 Deployment deploy = repositoryService.createDeployment() .name("出差申请流程-uel") .addClasspathResource("bpmn/myEvection.bpmn20.xml") .addClasspathResource("bpmn/Evection.png") .deploy(); //4、输出部署信息 System.out.println("流程部署id="+deploy.getId()); System.out.println("流程部署名字="+deploy.getName()); ```

启动实例: ?```Java //获取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取RunTimeService RuntimeService runtimeService = processEngine.getRuntimeService(); //设定assignee的值,用来替换uel表达式 Map assigneeMap = new HashMap(); assigneeMap.put("assignee0","张三"); assigneeMap.put("assignee1","李经理"); assigneeMap.put("assignee2","王总经理"); assigneeMap.put("assignee3","赵财务"); //启动流程实例 runtimeService.startProcessInstanceByKey("myEvection",assigneeMap); ?```

数据库表信息更改:
Activiti工作流入门筑基圆满
文章图片

Activiti工作流入门筑基圆满
文章图片

  • 第十三步:候选人实例
    创建bpmn文件
    参考上面步骤,在bpmn文件中的部门经理审核加上一句话,添加候选人

    代码步骤:
    /** * 创建候选人实例 * 第一步部署定义 */ @Test public void testCandate(){ //1、创建ProcessEngine ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //2、获取RepositoryServcie RepositoryService repositoryService = processEngine.getRepositoryService(); //3、使用service进行流程的部署,定义一个流程的名字,把bpmn和png部署到数据中 Deployment deploy = repositoryService.createDeployment() .name("出差申请流程-Candidate") .addClasspathResource("bpmn/testCandate.bpmn20.xml") .addClasspathResource("bpmn/testCandate.png") .deploy(); }/** * 第二步流程部署实例 */ @Test public void StartTestCandate(){ //获取流程引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取RunTimeService RuntimeService runtimeService = processEngine.getRuntimeService(); runtimeService.startProcessInstanceByKey("candidateUsers"); } /** * 完成提交申请 */ @Test public void EndTest(){ //获取引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取操作任务的服务 TaskService TaskService taskService = processEngine.getTaskService(); //获取jerry 对应的任务 Task task = taskService.createTaskQuery() .processDefinitionKey("candidateUsers") .taskAssignee("橘子1") .singleResult(); //完成提交申请的任务 taskService.complete(task.getId()); System.out.println("流程实例id=" + task.getProcessInstanceId()); System.out.println("任务Id=" + task.getId()); System.out.println("任务负责人=" + task.getAssignee()); System.out.println("任务名称=" + task.getName()); } //查询任务 @Test public void other(){ //获取引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取TaskService TaskService taskService = processEngine.getTaskService(); //查询组任务 List taskList = taskService.createTaskQuery() .processDefinitionKey("candidateUsers") .taskCandidateUser("wangwu") //根据候选人查询任务 .list(); for (Task task : taskList) { System.out.println("========================"); System.out.println("流程实例ID="+task.getProcessInstanceId()); System.out.println("任务id="+task.getId()); System.out.println("任务负责人="+task.getAssignee()); }}

    运行完数据库表:
    • ACT_RU_TASK结果(当前负责人为空):
      Activiti工作流入门筑基圆满
      文章图片
    • ACT_HI_ACTINST结果(部门经理审批负责人为空):
      Activiti工作流入门筑基圆满
      文章图片
    • ACT_HI_TASKINST结果 (部门经理审批负责人为空):
      Activiti工作流入门筑基圆满
      文章图片

      找到候选人拾取任务
    /** * wangwu拾取任务 */ @Test public void finshTest(){ //获取引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取TaskService TaskService taskService = processEngine.getTaskService(); //当前任务的id String taskId = "5002"; //任务候选人 String candidateUsers = "wangwu"; //查询任务 Task task = taskService.createTaskQuery() .taskId(taskId) .taskCandidateUser(candidateUsers) .singleResult(); if(task != null){ //拾取任务 taskService.claim(taskId,candidateUsers); System.out.println("taskid-"+taskId+"-用户-"+candidateUsers+"-拾取任务完成"); } }

    • ACT_RU_TASK结果图(回归正常流程):
      Activiti工作流入门筑基圆满
      文章图片
    • ACT_HI_ACTINST结果(回归正常流程):
      Activiti工作流入门筑基圆满
      文章图片
    • ACT_HI_TASKINST结果 (回归正常流程):
      Activiti工作流入门筑基圆满
      文章图片

      更改负责人:将wangwu改成lisi,简而言之就是ASSIGNEE字段
    /** * 更改负责人为lisi */ @Test public void updata(){ //获取引擎 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); //获取TaskService TaskService taskService = processEngine.getTaskService(); //当前任务的id String taskId = "5002"; //任务负责人 String assignee = "wangwu"; //根据key 和负责人来查询任务 Task task = taskService.createTaskQuery() .taskId(taskId) .taskAssignee(assignee) .singleResult(); if(task != null){ //归还任务 ,就是把负责人 设置为空 taskService.setAssignee(taskId,null); taskService.setAssignee(taskId,"lisi"); System.out.println("taskid-"+taskId+"-归还任务完成"); }}

    终于圆满了,踏入修真界

    推荐阅读