制作bpmn html,BPMN 2.0规范详解
3.10.?完全的實例(包括控制臺任務表單)
前提條件:為了運行實例,我們假設 已經在JBoss server中安裝了jBPM控制臺。如果沒有, 請先執行'demo.setup.jboss'安裝腳本。
我們實現的業務流程實現起來像下面這樣:
你可能已經看過這個例子了,因為我們也在發布包中的 實例中使用jPDL實現過它了。
業務流程很簡單:一個員工可以啟動一個新流程, 申請一定時間的假期。在請求任務完成之后, 經理會在任務列表中看到審核任務。 經理可以決定批準或駁回這個申請。 根據outcome(那是外向順序流上的小菱形 - 這意味著在順序流上有條件表達式), 會發送一個駁回信息或者流程結束。注意,實際上我們這里使用了簡寫: 不是在'verify request'任務的外向順序流上設置表達式, 我們可以在用戶任務之后使用一個唯一網關來控制流程的流向。 也要注意,因為我們還沒有實現泳道(可能在下一個版本會實現), 所以很難看到誰在業務流程中。
流程的XML版本看起來像下面這樣:
sourceRef="start" targetRef="requestVacation" />
implementation="other">
user
org/jbpm/examples/bpmn/usertask/taskform/request_vacation.ftlname="fromRequestVacationToVerifyRequest" sourceRef="requestVacation"
targetRef="verifyRequest" />
implementation="other">
manager
org/jbpm/examples/bpmn/usertask/taskform/verify_request.ftlsourceRef="verifyRequest" targetRef="theEnd">
${verificationResult == 'OK'}
name="fromVerifyRequestToSendRejectionMessage" sourceRef="verifyRequest"
targetRef="sendRejectionMessage">
${verificationResult == 'Not OK'}
scriptLanguage="bsh">
name="fromSendRejectionMessageToEnd" sourceRef="sendRejectionMessage"
targetRef="theEnd" />
注意:當你在安裝demo時,自己都已經安裝了。 也要注意,我們這里使用了腳本任務,為了快速的編寫一些輸出, 而不是發送真實的信息(圖形顯示了一個service task)。 也要注意,我們這里在任務分配中做了一些簡略 (會在下一個版本進行修復)。
在這個實現使用的結構中覆蓋了之前章節中的所有內容。 也要注意我們這里使用了任務表單功能, 這是一個自定義jBPM擴展, 可以為用戶任務渲染元素。
implementation="other">
user
org/jbpm/examples/bpmn/usertask/taskform/verify_request.ftlBPMN 2.0里任務表單的機制與jPDL里完全一樣。 表單自身是一個Freemarker模板文件, 需要放在發布中。比如,這個 'verify_request.ftl' 看起來像下面這樣:
Your employee, ${employee_name} would like to go on vacation
Number of days: ${number_of_days}
In case you reject, please provide a reason:
注意,流程變量可以使用 ${my_process_variable}來訪問。也要注意輸入控件的名稱。 (比如,輸入文本框,提交表單)可以用來?定義新流程變量。 比如,下面的輸入文本會被保存為 流程變量'reason'。
注意這里有兩個提交按鈕(這是當然的,如果你看到'OK'和'Not OK'兩個順序流 從'request vacation'任務里出去了。通過點擊其中一個按鈕, 流程變量'verificationResult'會被保存起來。 它可以用來執行外出的順序流:
sourceRef="verifyRequest" targetRef="theEnd">
${verificationResult == 'OK'}
流程現在可以發布了。你可以使用ant的發布任務來做這些事情(參考實例), 或者你可以指定你的jBPM配置到控制臺的數據庫。 為了用編程的方式發布你的流程,你需要把任務表單添加到你的發布中:NewDeployment deployment = repositoryService.createDeployment();
deployment.addResourceFromClasspath("org/jbpm/examples/bpmn/usertask/taskform/vacationrequest.bpmn.xml");
deployment.addResourceFromClasspath("org/jbpm/examples/bpmn/usertask/taskform/request_vacation.ftl");
deployment.addResourceFromClasspath("org/jbpm/examples/bpmn/usertask/taskform/verify_request.ftl");
deployment.deploy();
你現在可以嵌入(或在單獨的服務器中)這個業務流程,使用熟悉的jBPM API操作。 比如,流程實例現在可以使用 key來啟動(比如,BPMN 2.0的流程id):ProcessInstance pi = executionService.startProcessInstanceByKey("vacationRequestProcess");
任務列表可以這樣獲得:Task requestTasktask = taskService.createTaskQuery().candidate("peter").uniqueResult();
當像jBPM控制器數據庫發布時,你應該看到我們的新業務流程了。
在你啟動一個新流程后,一個新任務應該在員工的任務列表中了。 當點擊'view'以后,任務表單會被顯示出來, 在這里填寫未來會在流程中使用的變量。
在任務結束之后,經理會在他的任務列表中看到新的審核任務。 他現在可以通過或駁回請假申請,基于員工的輸入。
因為數據庫表結構沒有變化,我們只是把BPMN 2.0添加到了jBPM PVM上面, 所有已存的報表都可以用于我們的新BPMN 2.0流程中。
總結
以上是生活随笔為你收集整理的制作bpmn html,BPMN 2.0规范详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生命html文档,Web前端第一季(HT
- 下一篇: 学计算机是什么猿,卡内基梅隆大学生物计算