下载麻烦可以下我这个整理的整包:
链接:https://pan.baidu.com/s/1Vgbyxt1PO3Kex1r47pKPlA
提取码:9r1a
下载zeebe
zeebe发布页面,选择zeebe-distribution-X.Y.Z.tar.gz下载
下载zeebe-modeler
zeebe-modeler发布页面,选择zeebe-modeler-x.x.x-win-x64.zip
下载camunda-operate
zeebe发布页面,选择camunda-operate-X.Y.Z.tar.gz
下载elasticsearch 6.8.1
启动es
[es@localhost es]$ cd /usr/local/es/
[es@localhost es]$ ./bin/elasticsearch
启动zeebe borker
放开这三行配置的注解,用来打开elasticsearch exporter:
vi /usr/local/zeebe/conf/zeebe.cfg.toml
... ...
[[exporters]]
id = "elasticsearch"
className = "io.zeebe.exporter.ElasticsearchExporter"
... ...
启动zeebe borker:
cd /usr/local/zeebe
./bin/broker
启动operate
cd /usr/local/operate/
./bin/operate
访问http://192.168.153.138:8080,默认账号密码:demo/demo
客户端使用
zeebe示例源码:https://gitee.com/tanwubo/zeebe-quickstart-demo
修改zeebe borker的连接信息:
@BeforeEach
public void initZeebeClient(){
client = ZeebeClient.newClientBuilder()
.brokerContactPoint("192.168.153.138:26500")
.usePlaintext()
.build();
System.out.println("connected...");
}
依次执行:
- deployOrderProcessTest
- createOrderPayWorkerTest
- createNoInsuranceWorkerTest
- createHaveInsuranceWorkerTest
- createInstance1Test
执行到这里,可以去operate查看一下:
工作流阻塞在already paid处,等待pay-received类型的Message消息
继续执行第6步createPayReceivedMessageTest
其他的组件使用示例都可以在项目中找到。
service task
图标:
最常见的组件了,可以理解为一个任务,关键的属性是type,一个完整的service task的属性如下:
name:能够见名知意即可,描述任务目的
type:全局唯一,定义任务类型,以次做为凭证,分发任务给相关的某一个工作人员实例。
receive task
图标:
工作流实例在执行到receive task时会阻塞在这,直到接受到对应的message实例,属性列表如下:
message name:全局唯一,指定任务等待接受的message名称
subscription correlation key:基本可以理解为工作流实例的主键,作用就是通过这个属性值,匹配到唯一的一个工作流实例
exclusive gateway
图标:
排他网关类似于JAVA中的多重if else结构,所以本身只有一个name属性,关键在于连接线的condition expression属性:
condition expression:值可以为空或者是一个布尔表达式,为空表示默认执行流程,布尔表达式中可以使用工作流实例所携带的参数,结果为true时执行这条流程,执行任意一条流程,其他的表达式无需再执行。
parallel gateway
图标:
并行网关会同时执行与网关连线的所有任务,语义简单明了,没有特殊的属性,只要注意使用场景即可。
并行网关可以放在俩个位置,如下图:
放在多个任务流程前表示后面连接的任务并行执行,放在多个任务流程后会等待连接的任务全部执行完成才继续后面的流程。
event-based gateway
图标:
事件网关流程后只能连接timer even或者message even,等待某一个事件触发,则仅仅执行该事件的后续流程。
使用示例如下图:
none event
可用于无其他含义的开始或结束。
message event
图标:
与receive task类似,也是会阻塞在message event处,等待对应的message,这是一种使用方法:
还有一种用法叫边界事件,可以给task添加消息边界事件,这样可以实现在任务执行时,通过message event来中断任务,执行另一条流程,例如:
timer event
timer event可以用于工作流的开始,表示每各一个周期重复做某件事情,像这样:
也可以放在工作流中间,表示等待一段时间继续往后执行,像这样:
还可以用于边界事件,表示任务执行超时,取消任务,执行另一条超时流程:
error event
error event通常只能用于任务的边界事件,表示任务出现错误时的执行流程:
error event的核心属性是error code,只有任务抛出的error code匹配的上才能捕获得到:
embedded subprocess
embedded subprocess是以嵌入的形式存在在主工作流当中:
可以理解为将一些任务包裹了起来,包裹之后的好处在于可以对整个子流程使用边界事件。
call activity
call activity是一种将其他工作流引入当前工作流的组件:
call activity的核心属性是process id:
相较于embedded subprocess的好处在于可重用,例如此处other_process工作流可在多个不同的工作流模型中使用。