(9)Shark工作流的實現和WMFC&OMG規範的對比 (轉)
Shark工作流的實現和WMFC&OMG規範的對比
-----第九部分:分析obe自帶例子的過程
:namespace prefix = o ns = "urn:schemas--com::office" />
關鍵字:Shark 工作流 WMFC OMG 規範
Obe工作流的執行過程,下面來說說自帶test中的例子的執行過程:
初始化工作流引擎的時候需要一個RepositoryManager 的例項
RepositoryManager 代表工作流執行中需要的資源庫,比如:活動的參與者,活動中需要的外部工具資訊,等等。然後進行工作流引擎的初始化:
WorkflowEngine engine = new WorkflowEngine(repositoryManager);
引擎初始化後用obe的xpdl解析類從定義的xpdl流程中例項化Package。
XPDLParser parser = new 4JXPDLParser();
FileInputStream in = new FileInputStream(file);
Package pkg = null;
try{
pkg = parser.parse(in);
} catch(Exception e){
log.al("Error parsing configuration: " + e.getMessage());
e.printStackTrace();
return;
}
然後把初始化後的package加入到引擎例項中:
engine.addPackage(pkg);
隨後就執行了:
try{
log.info("Executing workflow process " + packageId + ":" + processId);
if(executionMode.equalsIgnoreCase("asynch")){
log.info("Executing asynchronously");
engine.executeAsynch(packageId, processId, getParameters());
} else {
log.info("Executing synchronously");
engine.executeSynch(packageId, processId, getParameters());
}
} catch(Exception e){
log.error("Error executing workflow process " + processId + " in package " + packageId);
e.printStackTrace();
}
。
看起來整個執行流程很簡單。
上面提到的RepositoryManager是如何初始化的呢?
例子中帶的資源庫有如下型別:
1、 BasicApplicationRepository
2、 BasicProcedureRepository
3、 BasicParticipantRepository
其中BasicParticipantRepository下面又包括:
1)RoundRobinGroup
2)WorkflowSystem
比如:新增管理和編輯人員資訊:
RoundRobinGroup editors = new RoundRobinGroup();
editors.add(new Human("Bob Smith"));
editors.add(new Human("Joe User"));
RoundRobinGroup administrators = new RoundRobinGroup();
administrators.add(new Human("Anthony Eden"));
WorkflowSystem system = new WorkflowSystem();
participantRepository.put("P1", editors);
participantRepository.put("P2", administrators);
participantRepository.put("P3", system);
participantRepository.setDefaultConnector(system);
getParticipantRepositories().add(participantRepository);
BasicApplicationRepository appRepository = new BasicApplicationRepository();
appRepository.put("A1", new DeApplicationConnector("App 1"));
appRepository.put("A2", new DebugApplicationConnector("App 2"));
appRepository.put("A3", new RuntimeApplicationConnector(TEST_EXE,
ExecutionType.SYNCHRONOUS));
appRepository.put("A4", new DebugApplicationConnector("App 4", 10000));
appRepository.put("A5", new DebugApplicationConnector("App 5"));
getApplicationRepositories().add(appRepository);
下面 我們根據obe提供的例子結合引擎分析 obe引擎的執行過程。
待續
田春峰
to:accesine@163.com">accesine@163.com
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10794571/viewspace-974827/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Shark工作流的實現和WMFC&OMG規範的對比 (轉)
- (10)Shark工作流的實現和WMFC&OMG規範的對比 (轉)
- (5)Shark工作流的實現和WMFC&OMG規範的對比 (轉)
- Event Loop的規範和實現OOP
- 強大的工作流引掣:shark
- git分支管理和工作流規範:具體規範Git
- Promise/A+ 規範的實現Promise
- git 工作流和git commit規範GitMIT
- 規範BOT專案的法律對策(轉)
- Git commit message和工作流規範GitMIT
- 前端工程工作流規範前端
- 對規範施工企業專案管理的思考(轉)專案管理
- C# 單例模式的實現和效能對比C#單例模式
- js實現繼承的幾種方式和對比JS繼承
- Memcached 與 Redis 實現的對比Redis
- memcached與redis實現的對比Redis
- 實現 CommonJs 規範中的 Require 模組JSUI
- 實現一個符合 Promise/A+ 規範的 MyPromisePromise
- git分支管理和工作流規範:基本概念說明Git
- git分支管理和工作流規範:不同場景細化和演示Git
- 測試角度看公司流程規範對比後篇
- JavaMoney規範(JSR 354)與對應實現解讀JavaJS
- Web前端——CSS的命名規範和範例Web前端CSS
- Activiti工作流與BPMN2.0規範
- Git工作流及釋出規範(App)GitAPP
- Flannel和Calico網路外掛工作流程對比
- 基於JWT規範實現的認證微服務JWT微服務
- Promise的原始碼實現(完美符合Promise/A+規範)Promise原始碼
- 手寫實現滿足 Promise/A+ 規範的 PromisePromise
- 如何實現一個符合promiseA+規範的promisePromise
- 實現一個完美符合Promise/A+規範的PromisePromise
- Ajax 跨域難題 - 原生 JS 和 jQuery 的實現對比跨域JSjQuery
- Java 程式編碼的規範(轉)Java
- 淳安縣移民工程專案實現規範化管理(轉)
- 簡單計算器的程式導向實現和麵向物件實現對比物件
- DataWorks2.0的“業務流程”與1.0的“工作流”的對比
- 用ES6實現符合promise/A+規範的PromisePromise
- 用checkstyle實現svn的程式碼規範性檢查