jBPM之hello world
參考
http://www.aygfsteel.com/chengang/archive/2006/07/13/57986.html
下面是根據官方開發向導及自己的經驗寫的
開發向導上提供的helloworld例子,這個流程是單向的,沒有任何的分支,且沒有自定義actionHandler,使用的是默認的handler
http://www.aygfsteel.com/chengang/archive/2006/07/13/57986.html
下面是根據官方開發向導及自己的經驗寫的
開發向導上提供的helloworld例子,這個流程是單向的,沒有任何的分支,且沒有自定義actionHandler,使用的是默認的handler
public void testHelloWorldProcess() { // This method shows a process definition and one execution// of the process definition. The process definition has // 3 nodes: an unnamed start-state, a state 's' and an // end-state named 'end'.// The next line parses a piece of xml text into a// ProcessDefinition. A ProcessDefinition is the formal // description of a process represented as a java object. ProcessDefinition processDefinition = ProcessDefinition.parseXmlString( "<process-definition>" + " <start-state>" + " <transition to='s' />" + " </start-state>" + " <state name='s'>" + " <transition to='end' />" + " </state>" + " <end-state name='end' />" + "</process-definition>" ); // The next line creates one execution of the process definition.// After construction, the process execution has one main path// of execution (=the root token) that is positioned in the// start-state. ProcessInstance processInstance = new ProcessInstance(processDefinition); // After construction, the process execution has one main path// of execution (=the root token). Token token = processInstance.getRootToken(); // Also after construction, the main path of execution is positioned// in the start-state of the process definition. assertSame(processDefinition.getStartState(), token.getNode()); // Let's start the process execution, leaving the start-state // over its default transition. token.signal(); // The signal method will block until the process execution // enters a wait state.// The process execution will have entered the first wait state// in state 's'. So the main path of execution is now // positioned in state 's' assertSame(processDefinition.getNode("s"), token.getNode()); // Let's send another signal. This will resume execution by // leaving the state 's' over its default transition. token.signal(); // Now the signal method returned because the process instance // has arrived in the end-state. assertSame(processDefinition.getNode("end"), token.getNode()); }
更詳細的例子可以看參考,里面有很詳細的操作說明。
下面是根據參考例子測試時出現的一些問題及說明。
一、關于數據庫,首先要修改數據庫連接,然后創建數據庫,里面的表格jBPM提供相應的API去創建。public?void?testDeployProcessDefinition()?throws?FileNotFoundException?
{?
????????//?從?jbpm.cfg.xml?取得?jbpm?的配置?
????????JbpmConfiguration?config?=?JbpmConfiguration.getInstance();
????????config.dropSchema();//刪除數據表結構
????????config.createSchema();//創建數據表結構
????????//?創建一個?jbpm?容器?
????????JbpmContext?jbpmContext?=?config.createJbpmContext();?
????????//?由?processdefinition.xml?生成相對應的流程定義類?ProcessDefinition?
????????InputStream?is?=?new?FileInputStream("processes/simple/processdefinition.xml");?
????????ProcessDefinition?processDefinition?=?ProcessDefinition.parseXmlInputStream(is);?
????????
????????//?利用容器的方法將流程定義數據部署到數據庫上?
????????jbpmContext.deployProcessDefinition(processDefinition);?
????????//?關閉?jbpmContext?
????????jbpmContext.close();?
????}
這個是根據流程配置文件最后生成的數據庫信息的測試方法,剛開始我還有一個疑問,數據庫和數據表是系統自動創建還
是要手動創建,數據庫是要手動創建的,數據表可以自動創建的
posted on 2007-01-18 10:55 風人園 閱讀(1012) 評論(0) 編輯 收藏 所屬分類: jBPM