首页 > 其他 > 详细

Activity02流程基本功能使用

时间:2021-06-03 11:38:18      阅读:35      评论:0      收藏:0      [点我收藏+]

主要分为一下几个步骤:

  1.画图

  2.部署流程-把图的信息转入到数据表格中

  3.创建流程实例-开始一个流程-实际发起了一个流程

  4.执行任务:获取任务+完成任务

1.画图

  一个简单的流程图,名称:qj01.bpmn

  技术分享图片技术分享图片

 

 

 技术分享图片

 

 2.部署流程

2.1方法1

  (本地测试可以用下,实际项目不使用)

 

  private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

    //流程定义
    @Test
    public void deploy(){
        RepositoryService repositoryService = processEngine.getRepositoryService();
        Deployment de = repositoryService.createDeployment().addClasspathResource("bpmn/qj01.bpmn").name("请假").deploy();  //这里"请假"中文到act_re_deployment表可能出现乱码
        System.out.println("部署id"+de.getId());

        /*
        流程定义:
        流程部署表 re_deployment
        流程定义表 re_procdef
        资源信息表 ge_bytearray
        */
    }

 

执行,影响到3张数据表格:流程部署表 re_deployment  流程定义表 re_procdef  资源信息表 ge_bytearray

 

2.2方法2:上传压缩文件的方式

2.2.1第一步:把bpmnt图形文件压缩车zip文件

  技术分享图片

 

 

2.2.2编码

 

  这里我省略了上传zip文件的过程,直接从本地读取的


@Test
public void deploy2() throws FileNotFoundException {
    RepositoryService repositoryService = processEngine.getRepositoryService();
    InputStream in = new FileInputStream("C:\\Users\\Administrator\\IdeaProjects\\jsnhcopy\\src\\main\\resources\\bpmn\\qj01.zip"); //zip文件路径
    ZipInputStream zipInputStream = new ZipInputStream(in);
    Deployment deploy = repositoryService.createDeployment().addZipInputStream(zipInputStream).name("qjlc").deploy();

    System.out.println("部署id"+deploy.getId());

    /*
    流程定义:
    流程部署表 re_deployment
    流程定义表 re_procdef
    资源信息表 ge_bytearray
    */
}
2.3问题
  

 

3.创建流程实例-启动流程

 

  //启动流程实例
    @Test
    public void run(){
        RuntimeService runtimeService = processEngine.getRuntimeService();
        ProcessInstance myProcess_1 = runtimeService.startProcessInstanceByKey("myProcess_1");//表re_procdef里面的key字段

        System.out.println("实例id"+myProcess_1.getId());
        System.out.println("流程定义id"+myProcess_1.getProcessDefinitionId());

        /*
        启动流程实例
            运行时任务表:ru_task
            运行时流程执行表:ru_execution
            运行时执行主体信息表:ru_identitylink
        */
    }

 

其中 myProcess_1是表act_re_procdef里面的KEY_的值

执行,影响到三张表 运行时任务表:ru_task   运行时流程执行表:ru_execution   运行时执行主体信息表:ru_identitylink,此时一个流程被发起,有了任务act_ru_task  

技术分享图片

 

 

 

 

4.执行任务

4.1获取任务

    @Test
    public void findtask(){
        //获取任务
        TaskService taskService = processEngine.getTaskService();
        List<Task> task_list = taskService.createTaskQuery().taskAssignee("dcc").list();//查询dcc的任务
        task_list.stream().forEach((x)->{
            System.out.println("任务id"+x.getId());
            System.out.println("任务名称"+x.getName());
        });

这里是通过任务执行人来获取的任务,获取的是dcc的任务。这里获取到id为25005的任务

技术分享图片

 

 

4.2完成任务

 

   @Test
    public void complete() {

        TaskService taskService = processEngine.getTaskService();
        taskService.complete("25005");
        System.out.println("完成任务");

           /*
                任务id2505
                完成任务id2505
                */
               /*
               完成任务:
                    ru的几张表的数据清楚了
                    历史相关表:
              历史任务表:hi_taskinst
                历史流程实例表:hi_procinst
                历史流程参与者表:hi_identitylink
                历史活动节点表:hi_actinst
*/ }

 

  这里通过任务id来完成任务

  在完成了这个任务后,流程就走到了审批流程,表中ru_task表中id为25005任务没有了,出现了一个新的任务-审批

技术分享图片

 

   再依照上面,获取任务-完成任务,整个流程就走完了。

  此时act_ru_的几张表的数据会清空,历史信息进入历史表,涉及到一下四张表

        历史任务表:hi_taskinst
          历史流程实例表:hi_procinst
           历史流程参与者表:hi_identitylink
           历史活动节点表:hi_actinst

  

 

Activity02流程基本功能使用

原文:https://www.cnblogs.com/jthr/p/14841605.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!