jBPM4的PVM实现解析

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

jBPM4的PVM荣浩2009.7什么是PVM(流程虚拟机)•对流程图建模并执行的•内嵌的•可扩展支持多流程语言的形容词运行期环境(IOC、Environment)流程定义模型(ProcessDefinition、Activity、Transition)引擎过程调度(Execution)事件异步消息运行实例时间服务PVM对外服务PVM总览ObservableElementCompositeElementProcessDefinitionActivityTransitionEventEventListener-events*-event0..1-eventReferences**-activities**-source-destination-outgoingTransitions-incomingTransitionsPVM的流程定义模型executionActivity1Wait2Activity3AtomicOperationPVM的运行过程调度ExecuteActivitySignalTransitionTakeMoveToParentActivityMoveToChildActivityTransitionEndActivityTransitionStartActivityParentActivityJusteventexecutesignalAtomicOperation等等,节点的异步执行JOBSIDLOCK_OWNERLOCK_TIME…AtomicOperationMessageJobExecutorDispatcherThreadBlockingQueueJobExecutorThreadMessageSessionnotifycreateAsyncMessagesendsavePVM的Job执行那么,事件呢Activity1Activity2EndTakeStartExecuteEventListenerfireAtomicOperationeventListenerIndex++performAtomicOperationPVM的事件处理PVM的事件处理•在jbpm4中则采用观察者模式来触发事件的。所有用户自己定义的动作,全部要实现EventListener接口,这些动作作为监听者(就是事件Event的观察者Observer)注册到相应的流程定义对象上(ProcessElement或者Node),而事件Event则作为被观察的对象(实际上就是Observerable),实际上在jbpm4中专门定义出了一个对象ObservableElementImpl,流程定义中的NodeImpl、TransitionImpl、ProcessDefinitionImpl均继承自此对象,因此这些元素本身就可以作为Observerable而被观察者来监控。数据库里都有啥运行库和历史库executionfireHistoryEventhistorySessionhistoryEventprocesshistoryInstancesavehistoryProcessInstancehistoryActivityInstanceProcessInstanceStartProcessInstanceEndactivityStartactivityEndPVM的历史数据处理如何管理数据库连接、查找组件…JbpmConfigurationEngineIOCprocess-engine-context/transaction-context/读取WireDefinitionenvironmentEngineIOCTransactionIOCThreadLocalputjbpm.cfg.xmlopenEnvironmentEnvironment.getCurrentPVM的运行期环境XMLWireParserBinding……objectsclassname=‘a‘class-name=‘com…’/……classname=‘b‘class-name=‘com…’//objects读取DescriptorBindingDescriptorWireDefinitionContextObjectCacheWireDefinition初始化PVM的IOC容器谁来openEnvironmentProcessEngineCommandServiceRepositoryServiceExecutionServiceHistoryServiceEnvironmentInterceptoropenEnvironment客户端接口•在jbpm4中对客户端的接口统一为7个服务接口:ProcessService、ExecutionService、CommandService、TaskService、ManagementService、HistoryService、IdentityService,这7个接口可以从ProcessEngine接口中获得,jbpm4在启动的过程中由JbpmConfiguration负责构建引擎。•ØProcessService-流程定义的服务接口,包括对流程定义的部署、查询、删除操作;•ØExecutionService-执行服务接口,包括启动流程、实例推进、设置变量等操作;•ØCommandService-Command模式的服务接口,实际上就是将客户端的请求全部封装在一个调用接口中,然后由这个接口去调用Command接口的众多实现(StartExecutionCmd、SignalCmd、SetVariablesCmd、GetTimersCmd、DeployCmd、NewTaskCmd、SubmitTask、ExecuteJobCmd等等,具体可参加pvm/internal/cmd,task/internal/cmd包及其它包下实现Command接口的类),这是典型的Command模式的应用,感兴趣的读者可以去了解设计模式中的Command模式;•ØTaskService-人工活动的服务接口,包括对任务的创建、提交、查询、保存、删除等操作;•ØManagementService-web管理控制台的服务接口,目前只有获得消息及计时器的接口实现;•ØHistoryService-目前有对历史库中的流程实例、活动实例进行查询、某个流程定义中的所有活动的平均持续时间、某个流程定义中的某个活动实例的转移的执行次数•ØIdentityService-用户、组、成员关系的相关操作方法听说支持多流程语言,如何扩展Activity1Activity2Activity3JPDL/XPDL…parsePVMModelRuntimeBehaviorStartActivityStateActivityEndActivityActivityBehaviourExternalActivityBehaviourPVMActivity1Activity2Activity3JPDLparseProcessDefinitionrun扩展要点•实现自己的Parse,模型适配•实现自定义节点运行期行为Q&A谢谢!

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功