Time of Update: 2018-12-05
jbpm解析流程定義有三種方式:1)par包static ProcessDefinition auctionProcess = ProcessArchive.parse("org/jbpm/tdd/auction.par");注意,必須在classes的org/jbpm/tdd/目錄下有一個auction.par檔案2)xml檔案方式static ProcessDefinition auctionProcess =
Time of Update: 2018-12-05
流程執行個體中,存有contextInstance來管理token和variable.contextInstance是通過一個map來進行管理的,這個map的key是token的全名,value是一個TokenVariableMap的對象.TokenVariableMap本身並不是個map,而是一個普通的Object,我個人認為jbpm把這個類的名稱取為...Map是一個錯誤的使用方法.TokenVariableMap有三個屬性,一個是token的全名,一個是Token對象本身,還有一個是一個M
Time of Update: 2018-12-05
BeanShell的確是一個簡單強大的工具,我們看看jbpm是怎麼樣使用它的://指令碼用的變數private Collection usedVariableNames = null;//指令碼語句 private String statements = null; //結果變數 private String resultVariableName = null; //Token用來擷取輸入的變數 public Object eval( Token token ) {
Time of Update: 2018-12-05
一個流程定義有一個TaskMgmtDefinition;一個TaskMgmtDefinition對應多個Actor,同時對應多個Task;一個Actor有多個Task,可以從TaskMgmtDefinition中通過task的名稱直接擷取相應的task;一個流程執行個體有一個TaskMgmtInstance;一個TaskMgmtInstance對應多個actorInstance,同時對應多個taskInstance;一個actorInstance有多個taskInstance,可以從TaskMg
Time of Update: 2018-12-05
我們知道,Spring中,HibernateTemplate是依靠回呼函數HibernateCallBack來實現其功能的,但在我們的系統中,這個CallBack可能不滿足我們的要求,這時,我們就需要實現自己的HibernateCallBack,本文討論實現自己的HibernateCallBack的方法.1:聲明回調介面public interface HongSoftCallback { Object doInHongSoft(Connection aConn, Object arg)
Time of Update: 2018-12-05
Decision是jbpm中非常重要的一種Node,在我們的一般的工作流程系統中使用的也很頻繁,本文談談它的使用.1:如果用戶端能夠比較容易的判斷decision後應該到哪個transition,我們只需要把transition的名稱作為signal發給Token就可以了,此時,引擎將驅動流程轉向該transition.2:如果是直接使用Decision,則它是基於BeanShell的.BeanShell指令碼必須把選擇的轉移的名稱賦給"transitionName"變數.指令碼中可以使用的變數
Time of Update: 2018-12-05
Jbpm對外提供了很多的服務,這些服務統稱Service,我們看看Service的階層圖:--Service |----DefinitionService |----DefinitionServiceImpl |-----ExecutionService |----ExecutionServiceImpl |-----SchedulerServer |----SchedulerServerImpl |-----SchedulerService
Time of Update: 2018-12-05
根據jbpm3的最新代碼,分析出jpdl3於jpdl2比較的可能的變化1.添加了merge<!ELEMENT merge (description?)><!ATTLIST merge name CDATA #REQUIRED>merge對應於以前的decision,它們的關係就如同fork和join的關係2.添加了node<!ELEMENT node
Time of Update: 2018-12-05
一個流程執行個體可以有多個Token,Token間是有父子關係的:Token tokenAB=new Token(tokenA,"ab");上行代碼的意思是在tokenA下面建立一個TokenAB,該建立的Token的名字是"ab".ci.createVariable(tokenA, "a", new Integer(3));表示在tokenA範圍內建立一個variable,它的名稱為"a",值為new
Time of Update: 2018-12-05
下面是調用JbpmServiceFactory.getInstance()時背景debug資訊,我們通過學習它就可以理解JbpmConfiguration的運作方式:15:11:33,403 DEBUG JbpmConfiguration : jBpm configuration://下面是hibernate的配置資訊,您可以在jbpm.properties檔案中進行修改 15:11:33,423 DEBUG JbpmConfiguration :
Time of Update: 2018-12-05
在osworkflow中,Trigger Function是通過Quartz來實現的,我們看看LocalWorkflowJob.java的實現代碼:public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { //JobDataMap是在schedule開始前放入的 JobDataMap data =
Time of Update: 2018-12-05
在jbpm中,我們可以在很多地方看到這樣的測試代碼:pd = new ProcessDefinition( new String[] { "start-state start", "state first", "state second", "state third", "end-state end" }, new String[] {
Time of Update: 2018-12-05
1.需要的軟體jBpm 2.0 is tested on a Windows XP machine with following software packages installed : 1)'J2SE SDK v 1.4.2_03', downloaded from http://java.sun.com/j2se/1.4.2/download.html 說明:我用1.4.1也可以2)'Apache Ant version 1.6.1', downloaded from
Time of Update: 2018-12-05
下面是調用persistenceSessionFactory.openPersistenceSession()時背景debug資訊,從這裡我們可以學習到兩點:1)jbpm的表結構是什麼樣的,看hbm檔案就可以了2)jbpm怎麼樣使用hibernate的,如使用了什麼最佳化器,使用的什麼串連池等15:11:33,653 DEBUG HibernateSessionFactory : creating the hibernate session factory15:11:33,754 INFO
Time of Update: 2018-12-05
jbpm3的持久化實現基於hibernate3,由於與jboss的關係,估計以後要採用ejb3方式的實現;而它目前的實現,與AgileFlow的方式基本類同:1)JbpmSessionFactoryJbpmSessionFactory按順序先後從下面的檔案中讀取hibernate.cfg.xml的位置:a)使用者指定 buildDbSessionFactory(String configResource)b)從jbpm.properties中指定 if
Time of Update: 2018-12-05
1.都使用了單例模式我想這個是最基本的,一般的程式員寫解析程式都會這樣使用;要說明的是,AgileFlow除了使用單例模式,還實現了設定檔的動態裝載,如果使用者修改了設定檔,它能夠在運行中動態擷取這些變化.使用jbpm時,第一句話就要使用該模式:JbpmServiceFactory.getInstance()....2.都實現了預設配置和定製配置Shark中,預設配置放在一個深層次的目錄中,定製配置放在config目錄,兩個配置檔案的內容差不多;jbpm中,預設配置放在代碼中實現,如下:prop
Time of Update: 2018-12-05
在jbpm中,對象間的關係是通過RelationMgr來管理的,用它管理非常方便我們的使用,因為它實現的是多層次的雙向的管理員模式.我們看看它的具體實現原理:1)RelationMgr是該管理員模式提供給我們的介面,我們主要是與這個類打交道;2)RelationMgr引用了ReferenceMgr對象,由該對象來實現具體的管理員模式3)ReferenceMgr是一個介面,它有兩個實現:CollectionMgr和PropertyMgr,前者管理1對多的關係,後者管理一對一(多對一是與一對一統一處
Time of Update: 2018-12-05
在jbpm3中,採用反射實現了從設定檔中構造一個新的對象的功能,使用方法如下: String configuration = "<s>hello</s>" + "<stringConstructor>" + " i want yoghurt" + "</stringConstructor>" + "<structuredElement>" + "
Time of Update: 2018-12-05
jbpm3的process define designer將發布在eclipse jboss ide中,它實際上是同時解析處理兩個檔案:1)processdefinition.xml2)processdiagram.xml前者實現流程定義,後者實現流程元素的布局,如下:<?xml version="1.0" encoding="UTF-8"?><process-diagram name="process-definition"> <node
Time of Update: 2018-12-05
經過總結以前的開發教訓和經驗,在實際環境中測試後,準備把agileflow的持久層設計如下:<agile> <流程定義號1> <流程執行個體號> <欄位1>""</欄位1> <欄位2>""</欄位2> <欄位3>""</欄位3> <欄位4>""</欄位4&