activiti学习(二)

130 阅读2分钟

image.png 持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

Activiti中的一些概念

上一篇文章讲到了SOA架构,在SOA架构中服务与服务间是不能直接通信的,如果我们有个业务就是要调用两个以上的服务,必须是通过SOA提供的ESB(企业服务总线),将业务放在ESB中,ESB会帮忙进行调度。ESB作为一个业务调度中心,本身只是协调外部的业务调用,如果将业务代码直接放在ESB也不是不行,只是每次新增业务都需要重启ESB,不够灵活。所以工作流就出现了,activiti作为工作流的具体实现,提供了许多开发常用的节点类型,如ServiceTask、UserTask、ScriptTask等。在业务调用出现异常的时候,activiti还提供了异常捕获机制,捕获异常之后我们可以调用补偿逻辑,这些都可以在activiti中通过图形界面的方式完成。这大大提高了软件发布的灵活性。当然,以这种方式开发软件,开发者需要的掌握的知识负担增大了不少。而且如果对activiti不够了解的话,如果是activiti本身的问题,那么定位问题会变得非常困难,于是,SOA的架构也就慢慢发展成为微服务,算是对SOA的一种补充吧。

流程定义(Process Definition)

activiti作为流程编排工具,要组合各种服务,activiti就需要知道执行的流向是怎么样的,流程定义就是表达流程走向的一种工具。在activiti中是使用bpmn规范来描述流程的,bpmn其实就是一串xml的字符串,只不过bpmn规定了xml里面只能出现的标签,以及标签的属性,以及流程连线等,有了这些信息,activit就可以将流程启动并按预先编排好的顺序走下去了。activiti中用ProcessDefinition类来抽象流程定义。