工作流 Activiti使用记录

工作流 Activiti使用记录

一、如何画图

1、可以用eclipse 插件

下载插件,Activiti BPMN 2.0 designer

2、可以用idea插件(不太好用)

actiBPM

3、可以用acitviti提供的编辑器

activiti官网会提供 activiti-explorer.war ,可以供编辑 流程图。

二、流程图关键组件

1、开始活动节点

2、用户任务

可以指定执行人,由执行任务时传入 userId指定

3、网关

示例:排他网关,根据不同的条件流向不同的下一个任务,条件由执行任务时传入变量 指定,如下就是传入checkSuggest

4、结束节点

三、工作流核心API 

1、ProcessEngine

  • 在Activiti中最核心的类,其他的类都是由他而来。
  • ProcessEngines的getDefaultProceeEngine方法时会自动加载classpath下名为activiti.cfg.xml文件。

  • 可以产生RepositoryService
  • 可以产生RuntimeService
  • 可以产生TaskService

各个Service的作用:

RepositoryService

管理流程定义

RuntimeService

执行管理,包括启动、推进、删除流程实例等操作

TaskService

任务管理

HistoryService

历史管理(执行完的数据的管理)

IdentityService

组织机构管理

FormService

一个可选服务,任务表单管理

ManagerService

2、RepositoryService

是Activiti的仓库服务类。所谓的仓库指流程定义文档的两个文件:bpmn文件和流程图片

3、RuntimeService

是activiti的流程执行服务类。可以从这个服务类中获取很多关于流程执行相关的信息。

4:TaskService

是activiti的任务服务类。可以从这个类中获取任务的信息。

5、HistoryService

是activiti的查询历史信息的类。在一个流程执行完成后,这个对象为我们提供查询历史信息。

6、ProcessDefinition

流程定义类。可以从这里获得资源文件等。

7、ProcessInstance

代表流程定义的执行实例。

8、Execution

Activiti用这个对象去描述流程执行的每一个节点。在没有并发的情况下,Execution就是同ProcessInstance。

四、使用工作流api

1、启动流程实例

        HashMap<String, Object> map = new HashMap<String, Object>(1);
        map.put("baoXiaoId", baoXiaoId);
        ProcessInstance pi = processEngine.getRuntimeService()//管理执行对象和流程实例相关的Service(正在执行)
                .startProcessInstanceByKey("baoxiao2",map);//使用流程定义的key启动流程实例,因为当使用流程定义key的时候,默认启动的是最新版本
       Task task = taskService.createTaskQuery().processInstanceId(pi.getId()).orderByTaskCreateTime().asc().singleResult();
       taskService.complete(task.getId());

2、完成我的个人任务

        ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().variableValueEquals("baoXiaoId", baoxiaoid).singleResult();
        Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).taskName(loginUser.getStatement()).singleResult();
        HashMap<String, Object> map = new HashMap(1);
        map.put("message", "同意");


        taskService.setVariableLocal(task.getId(), "remark", remark==null?"同意":"同意:"+remark);
        taskService.complete(task.getId(), map);

3、查看我的待处理个人任务

           try {
                taskQuery = taskService.createTaskQuery().taskName(loginUser.getStatement());
            } catch (Exception e) {
               return null;
            }
            List<Task> list = taskQuery.list();
            if(list.size()>0){
                List<String> baoxiaoids=new ArrayList<String>();
                for (Task task : list) {
                    String baoXiaoId = runtimeService.getVariable(task.getExecutionId(), "baoXiaoId", String.class);
                    baoxiaoids.add(baoXiaoId);
                }
                List<BaoXiao> byBaoXiaoIds = baoXiaoService.findByBaoXiaoIds(baoxiaoids);
                return  byBaoXiaoIds;
            }

结尾:

附上我画的流程图和activiti使用参考文档(很全很方便)

https://download.csdn.net/download/weixin_41276656/87264202

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值