Activiti工作流3

原文转载:https://blog.csdn.net/c1225992531/article/details/81181017
https://blog.csdn.net/Cs_hnu_scw/article/details/79059965

  • 1,工作流的生命周期:定义,发布,执行,监控(审批),优化
  • 2,activiti的ORM框架MyBatis3,支持spring和restful
  • 3,分配任务的三种方式:
    • 1,直接给值,在XXX.bpmn文件中指定,不够灵活
    • 2,流程变量
    • 3,使用类 监听这个类(实现一个接口),指定任务办理人
  • 4,工作流使用步骤:
    • 一,部署;流程图BPMN
      1,流程系统,客户提供流程执行的图,
      2,程序员使用activiti插件画流程图,将流程图部署到程序中
    • 二, 部署流程定义repositoryService
    • 三, 启动流动实例runtimeService
    • 四, 设置流程变量setVariable(任务ID,流程变量名称,流程变量的值)
    • 五, 查询任务
    • 六, 声明任务(一个候选人可忽略)
    • 七, 完成任务(设置流程变量,用于排他网关)
  • 5,BPMN规范
    • 1)启动和结束事件
      • 1.1启动事件(通过runtimeService.startProcessInstance(方法触发来启动一个流程实例))
        空启动事件
        定时启动事件:一次性定时启动,特定时间间隔后启动,定期循环流程
        异常启动事件:在另一个流程抛出异常结束事件的时候被触发,“捕获型”
        消息启动事件:通过消息名称触发,从而启动一个流程实例
      • 1.2结束事件
        空结束事件:抛出为空,不处理抛出结果
        异常结束事件:相对于空结束事件,有抛出结果
        终止结束事件:空启动事件结束的仅仅是一条输出流,而终止结束事件结束的是整个流程实例
        取消结束事件:取消结束事件可以取消一个事物子流程的执行
    • 2)顺序流
      1. 任务
    • 4)网关
      • 4.1排他网关(需要判断)
        如果多个线程的计算结果都为true,那么只执行第一个值为true,忽略其他的网关;如果多个网关都没有true就抛出异常
      • 4.2并行网关(不支持条件判断,设置了也会被忽视)
        拆分
        合并:注意,所有线路都执行完成才能继续向下执行
      • 4.3包容网关(排他和并行的合并)
      • 4.4事件网关
      • 4.5子流程和调用活动:最大的区别就是子流程是嵌入在主流程的,调用活动是一个完整的流程
        (还有事件子流程,事务子流程)
      • 4.6边界和中间事件(注:一旦触发边界事件,当前活动就会被中断,一个活动只能绑定一个边界)
      • 4.7监听器
        执行监听器,任务监听器(实现接口或者定义一个表达式类似于EL的语法)
  • 6,用户和组
    • 1,创建activitiRule对象,获取identityService实例
    • 2,创建用户或者组对象,保存用户或组
    • 3,将用户加入到组中(createMembershipzzz(用户名,组名))
    • 4, 启动流程
    • 5, 查询并用户作为任务候选人(可以多个候选人)
    • 6, 声明/获得任务claim(任务ID,用户名)(注:其他候选人失效)
    • 7, 完成任务complete(任务ID)
  • 7,部署流程资源
    • 流程:
      • 1)定义/获取资源,
      • 2)创建部署构造器createDeployment()
      • 3)添加资源
      • 4)执行部署deploy()
    • 资源:
      • 1)classpath方式: addClasspathResource(路径)(多用户开发测试环节)
      • 2)inputStream方式: addInputStream(bpmn文件,输入流)(产品环境常用)
      • 3)字符串方式: addString(bpmn文件,xml字符串),实现原理是将字符串内容转换成字节流
      • 4)压缩包方式: addZipInputStream(zip流)
        删除部署:repositoryService.deleteDeployment(deploymentId,true)
  • 8,流程变量(Variable)
    • 1)作用域是流程实例
    • 2)setVariable(任务ID,流程变量名称,流程变量的值)注:相同流量变量名称,会覆盖之前的值(不想覆盖使用setVariableLocal)
    • 3)javabean类型设置流程变量,需要实现serializable序列化接口
    • 4)设置流动变量时(正在执行),向ACT_RU_VARIABLE表中添加数据,历史流程变量的查询,查询ACT_HI_VARINST表
  • 9,监听器
    • 1)实现ExecutionListener流程实例接口
    • 2)实现TaskListener任务接口
  • 10,接收活动 receiveTask机器自动完成的任务,只会在act_ru_execution表中产生一条数据
    • 1)查询执行对象Execution
    • 2)使用流程变量来传递参数
    • 3)向后执行一步,如果流程处于等待状态,使得流程继续执行
      processEngine.getRuntimeService().signal(execution.getId());
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值