jbpm4 架构

Jbpm4 架构
Jbpm4 在架构上分为4种类型API来满足不同的应用场景,


从上图可以看出,黑色线条的是服务API,他通过服务的方式暴露给应用,通常这也是最简单最方便的方式,蓝色线条表示客户端API


Activity API:
活动API用来实现活动在运行时的行为。 因此一个活动类型实际上是一个组件,核心是实现了ActivityBehaviour接口。 活动行为实现可以控制执行的流程

继承下面接口即可:
public interface ActivityBehaviour extends Serializable {
void execute(ActivityExecution execution) throws Exception;
}
public interface ActivityExecution extends OpenExecution {
void waitForSignal();
void take(String transitionName);
void execute(String activityName);
...
}
Event Listener API:
事件监听API允许使用java开发监听器, 并在特定的流程事件发生时调用,像进入一个活动或离开一个活动。 它与活动API类似, 不同的是不能控制执行流程的传播

只要继承接口
public interface EventListener extends Serializable {
void notify(EventListenerExecution execution) throws Exception;
}
Client API:
Client api 是相对service api而已的,我个人认为其实service api 相关的内部api都可以归为client api;同样Activity API和Event Listener API也可以认为是client API一类,只是Activity API就是针对Activity来继承,Event Listener API针对的是事件,通过事件模式来编写自己代码嵌入到jbpm中。这个API是面对的特定的某个点。

Service API:
三个主要服务:RepositoryService, ExecutionService和ManagementService。
RepositoryService管理 流程定义的资源。
public interface RepositoryService {
Deployment createDeployment();
ProcessDefinitionQuery createProcessDefinitionQuery();
...
}
ExecutionService管理 运行时的执行。
public interface ExecutionService {
ProcessInstance startProcessInstanceById(String processDefinitionId);
ProcessInstance signalExecutionById(String executionId);
...
}
ManagementService包含了所有管理操作 来保持系统启动运行。
public interface ManagementService {
JobQuery createJobQuery();
void executeJob(long jobDbid);
...
}
从上面架构图可以看出,client api 根据需要将操作封装Command
public interface Command<T> extends Serializable {
T execute(Environment environment) throws Exception;
}
三个主要服务通过委派CommandService来执行操作:
public interface CommandService {
<T> T execute(Command<T> command);
}
一个CommandService链可以看做环绕在一个命令周围的一些拦截器。 这就是如何在不同的环境下 进行持久化和事务支持的核心机制。(这种设计模式可以探讨)

retry-interceptor会获取hiberate的StaleObjectExceptions (因为乐观锁失败)并重新尝试执行命令。
environment-interceptor会把一个环境块 放到命令执行的周围。
standard-transaction-interceptor会初始化一个 StandardTransaction。hibernate会话/事务会被作为 标准事务的一个资源。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值