工作流总结(三)JBPM 六个流程服务接口

在说明六个核心服务之前,需要提到的是ProcessEngine对象。类似一个工厂提供流程过程中所需的服务,抽象工厂设计模式的体现。而ProcessEngine对象是由Configruation对象来创建的,ProcessEngine是一个线程安全的对象,保证我们在开发过程中可以将这个对象放置到静态对象中,或者通过JNDI协议来获取对象;也能够方便开发者去开发使用。所有的请求都可以使用同一个ProcessEngine对象,读到这里大家也应该想到了单例模式的使用。

1.创建ProcessEngine对象

通过Configruation配置对象直接就可以获取ProcessEngine,前提是开发者的定义配置文件jbpm.cfg.xml放在在classpath路径下,并且名字没有改变。

ProcessEngine processEngine=Configuration.getProcessEngine();

当然如果要使用其他的配置文件也是可以的。这时候通过setResource来配置

/** provide an classpath resource as the configuration file */
public Configuration setResource(String resource) 

2.六个流程操作接口

获取操作对象

repositoryService=processEngine.getRepositoryService();
executionService=processEngine.getExecutionService();
taskService=processEngine.getTaskService();
historyService=processEngine.getHistoryService();
managementService=processEngine.getManagementService();
identityService=processEngine.getIdentityService();

RepositoryService

流程资源服务接口,提供流程部署、查询、删除等操作。

如:

repositoryService.createDeployment().addResourceFromClasspath("offJbpm.jpdl.xml").deploy();

ExecutionService

流程服务执行接口,负责流程执行、流程推进、流程变量的设定等。

如:

Map map=new HashMap();
map.put("userId","1");
map.put("userName","cfl"); 
//id jbpm4_deployprop 
ProcessInstance processInstance= executionService.startProcessInstanceByKey("offJbpm", map);

TaskService

任务服务接口,提供流程任务的创建、保存、删除、查询、完成。
如:

 taskService.completeTask("30001"); 

HistoryService

流程历史服务接口,提供历史流程信息的查询、以及对这些历史流程信息的分析。

ManagementService

控制流程服务接口,提供job的异步控制执行查询。

IdentityService

在流程控制中存在相关人员,既然有相关人员就会相关人员但认证。

3.jbpm中的命令模式

工作流总结(三)JBPM 六个流程服务接口_第1张图片

在jbpm的流程服务接口的上层定义了一个抽象的服务Abstractimpl,抽象服务接口持有一个抽象的CommandService的对象,各个服务接口实现抽象服务接口。这样在实现过程中,具体的命令实现抽象接口后,执行自己内部的方法实际上是执行的抽象CommandServcie的excute泛型方法来实现的。

通过将消息发送者和消费者分开,并将消息封装为一个对象。达到消息消费者和消息发送者之间的解耦合,以此能够控制消息的撤销和恢复。并且在消息传递的过程中,无需去考虑消息具体实现。

如同其他的知识一样,在jbpm中常用的只有那么一些小众的api。在这里,笔者不是对于那些大包大揽的学习痴狂者的批评。只是在学习之初,往往需要掌握的就是这些常用的api。

你可能感兴趣的:(【工作流】)