Autumn工作流引擎理解
流程实例被系统加载进来的时候,工作流引擎会得到通知,然后发布这个流程实例,同时会启动主流程的开始事件,并为用户任务的操作步注册拦截器。
1.插件org.autumn.bpm.core的util包下的ProcessManager类的addMainProcess(IMainProcess process)方法里,执行BPMEngine.onRegister(process)。
2.插件org.autumn.bpm.engine的BPMEngine类的onRegister(IMainProcess process)方法里,执行Depolyment. depoly(process)。
3.插件org.autumn.bpm.commons的deploy.impl包下的Depolyment类的depoly(IMainProcess process)方法里,执行InterceptorRegister. registerInterceptor(process),启动主流程的开始事件。
4.插件org.autumn.bpm.commons的InterceptorRegister类的registerInterceptor(IProcess process)方法里,为UserTask的processStep注册WorkItemInterceptor。
5.插件org.autumn.action.model的包processor.impl下的BusinessProcessorSettingImpl类的createHandler()方法里,获取到processStep的RuntimeInterceptorOptions,通过ProcessorProxy这个动态代理类生成代理实例,被代理的接口是BusinessProcess。
流程的执行(流程指针的移动)是通过PointerExecutor线程来完成的。
1.插件org.autumn.bpm.engine的Activator类的start(BundleContext bundleContext)方法里,执行BPMEngine .srart()方法。
2.插件org.autumn.bpm.engine的BPMEngine类的srart()方法里,为缓存里取到的每一个流程实例都分配一个对应的PointerExecutor线程。
3.PointerExecutor执行活跃的指针队列(按时间戳升序),执行完后标识指针为Completed状态。