gee引擎mysql数据库如何假设_流程引擎SmartEngine 2.0 UserGuide

Overview

SmartEngine 是阿里巴巴一款业务治理和服务编排引擎。业务治理引擎专注于解决互联网场景下和传统工作流行业的流程相关问题,服务编排引擎专注于用统一的标准来解决复杂链路服务上的服务编排问题。

Getting Started

Custom vs DataBase

SmartEngine 区别于传统的流程引擎,提供了两种模式供用户选择。

DataBase 模式聚焦于服务于传统的审批流场景,比如说传统的请假,审批,会签(并发会签和顺序会签)场景。 这些场景下,一般对于数据的范式查询,待办列表有着大量的诉求。 一般而言,这种场景的工单实例数据规模不会特别大。

Custom 模式聚焦于服务于高并发海量数据低成本的业务流程治理以及针对微服务架构体系下的服务编排。针对前者的话,经典场景如请求密集型的互联网业务,这种业务对高并发和存储成本比较敏感。 针对后者的话,我们支持和Spring,HSF体系无缝集成,方便用户高效去编排各种微服务。 通过服务编排,可以业务带来更多的可视化,帮助相关人理解业务和系统。

要求软件

JDK6+

背景知识

BPMN

id="test"

xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" targetNamespace="Examples">

targetRef="executeTask">

approve == 'agree'

targetRef="advancedAuditTask">

approve == 'upgrade'

smart:class="com.alibaba.simplest.bpm.util.AuditProcessServiceTaskDelegation">

targetRef="exclusiveGw2"/>

targetRef="executeTask">

approve == 'agree'

targetRef="theEnd">

approve == 'deny'

流程定义解释说明

process,表示一个流程。

id="exclusiveTest" version="1.0.0",分别表示流程定义的id和版本。这两个字段唯一区分一个流程定义。

startEvent,表示流程开始节点。只允许有一个开始节点。

endEvent,表示流程结束节点。可以有多个结束节点。

sequenceFlow,表示环节流转关系。sourceRef="theStart" targetRef="submitTask" 分别表示起始节点和目标节点。该节点有个子节点,approve == 'agree' ,这个片段很重要,用来描述流程流转的条件.approve == 'upgrade'使用的是MVEL表达式语法. 另外,还值得注意的是,在驱动流程运转时,需要传入正确的参数。 比如说,在后面介绍的api中,通常会需要在Map中传递业务请求参数。 那么需要将map中的key 和 Mvel的运算因子关联起来。 以这个例子来说, request.put("approve", "agree"); 里面的approve 和 approve == 'agree' 命名要一致。

exclusiveGateway,表示互斥网关。该节点非常重要。用来区分流程节点的不同转向。 互斥网关在引擎执行conditionExpression 后,有且只能选择一条匹配的sequenceFlow 继续执行。

serviceTask,服务任务,用来表示执行一个服务,所以他会有引擎默认的扩展:smart:class="com.alibaba.smart.framework.example.AuditProcessServiceTaskDelegation". Client Developer使用时,需要自定义对应的业务实现类。在该节点执行时,它会自动执行服务调用,执行 smart:class 这个 delegation 。 该节点不暂停,会自动往下一个流转。

receiveTask,接收任务。在引擎遇到此类型的节点时,引擎执行会自动暂停,等待外部调用signal方法。 当调用signal方法时,会驱动流程当前节点离开。 在离开该节点时,引擎会自动执行 smart:class 这个 delegation。 在一般业务场景中,我们通常使用receiveTask来表示等需要等待外部回调的节点。

userTask,表示用户任务节点,仅用于DataBase模式。该节点需要人工参与处理,并且通常需要在待办列表中展示。 在Custom 模式下,建议使用receiveTask来代替。

parallelGateway,这个节点并未在上述流程定义中体现,这里详细说一下。 parallelGateway 首先必须成对出现,分别承担fork 和join 职责。 其次,在join时需要实现分布式锁接口:LockStrategy。第三,fork 默认是顺序遍历多个sequeceFlow,但是你如果需要使用并发fork功能的话,则需要实现该接口:ExecutorService。

API DOC

整体风格是类似CQRS(Command Query Responsibility Segregation)的,主要对外API见api模块下的两个package: com.alibaba.smart.framework.engine.service.command ,com.alibaba.smart.framework.engine.service.query

SmartEngine 是核心Facade类,所有流程引擎相关的服务都可以从该类中获取。

ProcessEngineConfiguration 是引擎初始化的配置类。这个类有几个重要的相关类,详细介绍如下:

InstanceAccessor:必须实现该接口。该接口主要用于获取业务的Delegation对象。在生产环境中,一般会结合Spring 获取这个Bean,后文会有示例代码。

DefaultDelegationExecutor: 一般不需要扩展,这个主要服务于高级扩展特性。该类允许客户重新定义Delegation的执行和异常处理机制。

AnnotationScanner: 一般不需要扩展,这个主要服务于高级扩展特性。该类允许客户重新替换对应Annotation下扩展类实现。

ExceptionProcessor:默认不需要扩展,业务根据需要进行扩展。该类主要用于处理Delegation执行时的异常处理逻辑。

TaskAssigneeDispatcher:仅用于DataBase模式。必须实现该接口。 在传统工作流里面,需要设置任务的处理者时,则需要这个接口,后文会有示例代码。

VariablePersister: 仅用于DataBase模式。默认不需要扩展,业务根据需要进行扩展。该类支持根据选定的序列化方式,自动存储 command 里面的 request 参数,同时支持黑名单机制。

MultiInstanceCounter:仅用于DataBase模式,主要用于会签场景。后文会有示例代码。

ExecutorService: 默认不需要扩展,业务根据需要进行扩展。该类主要服务于并行网关。该实现该接口时,并行网关的fork 将从顺序执行模式转为并发执行模式。

IdGenerator:建议结合 分布式id 生成器来实现这个接口。

RepositoryCommandService :流程定义部署,将流程定义文件解析到单机内存中。

RepositoryQueryService: 获取单机中的内存中的流程定义。

DeploymentCommandService: 将流程定义文件持久化到 数据库里面,并负责调用 RepositoryCommandService 完成解析。

DeploymentQueryService: 获取存储到DB中流程定义内容。

ProcessCommandService : 流程实例管理服务,不包括流程实例启动,终止等等。

ProcessQueryService : 流程实例查询服务。

ActivityQueryService : 活动实例查询服务。

ExecutionCommandService : 驱动引擎流转服务,主要支持signal,markDone,jump和retry 等。 该服务区别于 TaskCommandService,主要负责驱动 ReceiveTask 这样暂停型的节点。

ExecutionQueryService : 执行实例查询服务。

TaskCommandService : 主要负责人工任务处理服务,主要支持transfer,markDone,add/remove TaskAssigneeCandidate。在TaskCommandService内部实现中,调用了ExecutionCommandService方法。 该类仅用于DataBase模式。

TaskQueryService : 任务实例查询服务。

VariableQueryService : 变量实例查询服务。

TaskAssigneeQueryServ

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值