?? readme.txt
字號:
理解JBPM(java Business Process Management)的基本概念:
jPDL - JBPM Process Definition Language
JBPM簡要過程:
1、定義流程(利用JPDL)
2、部署流程(部署到數據庫)
3、創建公文并與流程實例綁定
4、可通過JBPM的接口,觸發流程向下流動
5、可通過JBPM的接口,獲得流動到某個用戶那里的文檔(即待處理任務列表)
6、可通過JBPM的接口,結束某個用戶的任務(這將觸發流程繼續向下流動)
7、如此,直到結束
----------------------------------------------
測試:
1、安裝JBPM
- 引入Hibernate依賴包
- 引入JBPM依賴包
* bsh.jar
* jcr-1.0.jar
* jbpm-identity.jar
* jbpm-jpdl.jar
- 引入數據庫驅動
* mysql-connector-java-3.1.13-bin.jar
2、定義相關配置文件
- Hibernate配置文件
* 提供hibernate配置文件(可以從config/目錄下拷貝,并修改其中的數據庫連接設置即可)
3、假設現在有一個公文,需要經過:張三、李四、王五的審批之后才能結束
4、我們定義一個Document對象,及其hibernate映射,并將修改hibernate配置文件,將映射添加到其配置中(以便創建相應的數據庫表)
5、現在讓我們來測試一下:
- 創建數據庫表: JbpmConfiguration.getInstance().createSchema();
- 定義流程: 參考process.xml
- 部署流程:
* JbpmConfiguration.getInstance() - 創建jbpmConfiguration對象
* ProcessDefinition.parseXmlResource(String); - 讀取流程定義文件,創建processdefinition對象
* jbpmConfiguration.createJbpmContext(); - 創建jbpmContext對象
* context.deployProcessDefinition(definition); - 部署流程到數據庫
* context.close(); - 關閉context對象
- 創建公文
- 將公文與流程綁定(即需要創建流程實例)
* JbpmConfiguration.getInstance() - 創建jbpmConfiguration對象
* jbpmConfiguration.createJbpmContext(); - 創建jbpmContext對象
* context.setSessionFactory(sessionFactory),將JBPM與程序中的session綁定
* context.getGraphSession().findLatestProcessDefinition("流程名稱");
* new ProcessInstance(definition); - 創建流程實例
* context.save(processInstance); - 存儲流程實例
* 在Document中添加Long processInstanceId 屬性
* context.getSession().load 操作,加載Document對象
* document.setProcessInstanceId - 綁定流程實例到公文
* processInstance.getContextInstance.createVariable("document",document.getId()) - 綁定公文到流程實例
- 公文創建者提交公文
* (Document)context.getSession().load(Document.class, 1); - 加載公文信息
* context.getProcessInstance(從公文中獲取的流程實例ID); - 即根據流程實例ID加載流程實例
* processInstance.getRootToken().signal(); - 觸發流程往下走(即到達第一個節點)
- 這時候,我們可以測試一下,看看流程當前所處的節點
* processInstance.getRootToken().getNode().getName()
- 第一個節點對應的用戶登錄,應該能夠查詢到其當前的任務(有公文等待其審批)
* List tasks = context.getTaskMgmtSession().findTaskInstances("張三"); - 查找張三的任務列表
* 列表元素是TaskInstance實例
* 通過:taskInstance.getProcessInstance().getContextInstance().getVariable("document"); 可以找到其綁定的公文ID
- 查找到當前的任務對應的公文之后,即可對其審批,并繼續往下走
* taskInstance.end();
- 如此,直到結束
* processInstance.hasEnded() - 如果流程已經到達終點,本調用將返回true
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -