camunda常见功能解析

从camunda desktop modeler的角度来分析一下,camunda到底有那些功能

一些重要的概念

external task

类似用户任务,设计的意图,比如可以调用外部系统,但是和用户任务的设计意图不一样,只是使用方式一样

job execution

当一个time event发起,或者当一个任务被标记成异步以后,它就变成了job,成为了job,以后,有以下的优点

  1. 非阻塞,任务可以继续执行
  2. 增加了重试的机制

Asynchronous Continuations

一篇很好的解释

1
2
3
4
5
6
7
<!-- AFTER (new) -->
<serviceTask id="service1" name="Generate Invoice" camunda:asyncAfter="true"
camunda:class="my.custom.Delegate" />

<!-- BEFORE -->
<serviceTask id="service1" name="Generate Invoice" camunda:asyncBefore="true"
camunda:class="my.custom.Delegate" />

before

  1. 非阻塞,异步执行,主要用于创建异步的任务,还可以重试

after

  1. 创建安全点,防止任务失败没有记录,而且也可以重试

execution listeners

类似前面一样的存在,可以看到,而且可以加到任何地方,比如事件,任务,还有流程里面

  1. event type,只有start 和 end,可以有多个,按照顺序来,好像是start前面的先执行,然后end前面的后面执行
  2. listener type有java class,expression,delegate expression,script
  3. expression 就是value的意思,根据你填的类型,来填,比如是java calss,就是java全类名,如果和spring集成了,还可以是spring的bean,这里需要选择类型是delegate expression
  4. 字段注入的名字,java使用的时候,类似自动注入 字段注入的文档
  5. 字段注入的类型,可以是string或者是expression
  6. 字段注入的值

task listeners

和execution listeners不一样,task listeners专门用于task任务
task listener文档

  1. event type,相比execution listeners,非常多,create assignment complete delete update timeout
  2. 可选的id,相比execution listeners,有自己的id
  3. 这个和execution listeners 类似
  4. 也和execution listener类似

inputs and outputs

多了一种机制存在,让业务更灵活,input只有当前task可以获取,然后output,可以当前以后的task可以获取,而且input和output在多实例的时候,特别有效
camunda文档

  1. 只有当前task只能获取input
  2. output当前之后的task都可以获取
  3. 和普通上下文的变量获取没有什么区别,都是用名字获取
  4. 多实例的时候特别有效
  5. 可以放string,expression,还可以放list和map

组件panel

流程panel

  1. 名字这里更像是一个简短的描述,只起到文档的作用
  2. id在这里必须是唯一,可以用来启动流程,启动流程的时候,是runtimeService.startProcessInstanceByKey(id)
  3. version tag类似于git的tag功能,相当于语义化的版本,而且执行的时候还可以根据version tag来选择版本,成为了机制
  4. executable表示流程是否可以执行,如果配置了自动扫描流程,那么不是executable就不会被解析
  5. 文档,就是描述,是语义性质的东西
  6. time to live,应该是history的cleanup,类似TTL
  7. startable表示是否作为顶级流程,因为它的web应用,会只能启动startable的应用,否则只能作为子流程调用
  8. 只有该组的用户才能启动这个流程,类似所有权
  9. 只有该用户才能启动这个流程,类似所有权
  10. external task的优先级,external task类似userTask,但是应用的场景不一样
  11. job execution优先级

start event的panel

  1. 名字
  2. id
  3. 表单
  4. start initiator流程发起人,可以是固定值,也可以是变量,然后可以通过api来获取
  5. 异步设置

user task的panel

用户任务,就是留白任务,走到这里会阻塞,然后调用相关api完成即可,本意是只让用户审批,工作流的审批节点几乎都是用户任务

  1. id
  2. 文档
  3. 用户任务分配,分配人员 用户任务分配
  4. 可选组
  5. 可选用户
  6. 到期时间,过期了,会产生timeout事件,可以实现自己的逻辑
  7. 用途为止,根据 camunda论坛的答案, 可以过滤使用
  8. 优先级
  9. 表单,可以和表单绑定
  10. input
  11. output

service task的panel

服务任务,就是干活的任务,相比于用户任务,是阻塞任务,服务任务是自动任务

  1. name
  2. id,不能重复
  3. 文档
  4. implemention,type,一共有五种,分别是external,java class,expression,delegate expression,connector
  5. value,分别不同的类型,填不同的值

总结

其实camunda的desktop modeler已经涵盖了大部分camunda的常见功能,已经足够用了