Activiti User Guide(Activiti用戶指南)-Chapter 18. JBPM Migration(JBPM 遷移)(2)
Posted on 2011-03-08 21:40 網(wǎng)路冷眼@BlogJava 閱讀(3241) 評論(2) 編輯 收藏 所屬分類: Java 、BPMExtend the migration logic
擴(kuò)展遷移邏輯
The migration logic is written in such a way, that it is easy to extend to suit your needs. The source code is available as a Maven 2 project in the srcsubfolder of the downloaded zip file. To build a new zip file, after having changed or extended the logic, simply execute a
遷移邏輯可以編寫,以便輕松地滿足你的需求。源代碼在所下載zip文件里src子文件夾里作一個Maven 2項(xiàng)目來使用。為了構(gòu)建一個新的zip文件,在已經(jīng)改變或者擴(kuò)展邏輯之后,簡單執(zhí)行下面指令
to produce a new zip file in the target folder.
在target文件下產(chǎn)生一個新的zip文件。
Following picture gives a high-level overview of the classes in the migration logic.
下圖提供了在遷移邏輯里類的高層次概貌。
- Both the ProcessConversion and ProcessDataMigration classes have a main method that directly is called from the ant build script in the root of the migration zip.
- ProcessConversion and ProcessDataMigration 這兩個類都有在遷移zip的根目錄下的ant構(gòu)建腳本里調(diào)用的main方法。
- These classes construct a ServiceFactory based on the two properties files, using a static factory method
- 通過使用靜態(tài)的工廠方法,基于兩個properties文件這些類構(gòu)建一個ServiceFactory
ServiceFactory.configureFromProperties(jbpmDbProperties, activitiDbProperties);
- The services are constructed by the ServiceFactory (eg. getProcessConversionService()) and are used to execute the migration logic:
- 通過ServiceFactory (eg. getProcessConversionService())構(gòu)建這些服務(wù),這些服務(wù)被用來執(zhí)行遷移邏輯:
1 public void execute() throws IOException {
2
3 // convert processes
4 ServiceFactory serviceFactory = createServiceFactory();
5 ProcessConversionService processConversionService = serviceFactory.getProcessConversionService();
6 Map<String, Document> migratedProcesses = processConversionService.convertAllProcessDefinitions();
7
8 // write results to bpmn20.xml files
9 writeConvertedProcesses(migratedProcesses, workingDir);
10
11 // Deploy processes to Activiti
12 ActivitiService activitiService = serviceFactory.getActivitiService();
13 activitiService.deployConvertedProcesses(migratedProcesses);
14
15 // data migration
16
17 }
- The ProcessConversionService is an interface that contains process conversion and process definition data retrievel operations. It uses an implementation of Jbpm3Dao. The default implementation of this class uses a Hibernate SessionFactory to retrieve all the data from jBPM 3 tables.
The ActivitiService offers operation needed to get the migrated data in the Activiti tables. For example, deploying the converted process definitions is such an operation
ProcessConversionService 是一個包含流程轉(zhuǎn)換和數(shù)據(jù)檢索的流程定義借口。它使用了 Jbpm3Dao.的實(shí)現(xiàn)。這個類的缺省實(shí)現(xiàn)使用了Hibernate的SessionFactory從jBPM 3的數(shù)據(jù)庫表里檢索所有的數(shù)據(jù)。
ActivitiService 提供需要從Activiti數(shù)據(jù)庫表遷移數(shù)據(jù)的操作。例如,部署轉(zhuǎn)換之后的流程定義就是如此的操作。
- All these dependencies, ProcessConversionService, Jbpm3Dao, Sessionfactory, ActivitiService and ProcessEngine, are interfaces and can be implemented by your own implementation. You can inject them into the ServiceFactory using regular JavaBean setters. When no such custom implementation is set, the ServiceFactory will fall back to creating the default implementation:
- 所有這些依賴, ProcessConversionService, Jbpm3Dao, Sessionfactory, ActivitiService 和 ProcessEngine都是接口,并能由你自己實(shí)現(xiàn)。采用正常的JavaBean設(shè)置器,能將它們注入到ServiceFactory。當(dāng)沒有設(shè)置這些實(shí)現(xiàn),ServiceFactory將后退一步,建立缺省的實(shí)現(xiàn):
1 public ProcessConversionService getProcessConversionService() {2 if (processConversionService == null) {
3 this.processConversionService = createDefaultProcessConversionService();
4 }
5 return processConversionService;
6 }
7
8 protected ProcessConversionService createDefaultProcessConversionService() {
9 ProcessConversionServiceImpl service = new ProcessConversionServiceImpl(getJbpm3Dao());
10 return service;
11 }