您好,登錄后才能下訂單哦!
作者:gagaghost Email:gagaghost@gmail.com
1.流程流轉方式:
在一個流程實例化后,流程的節點就會自動進入啟動節點,如果要離開啟動節點,必須調用signal()的方法.調用該方法后,流程會進入后續節點,也即進入stateOne節點,如果再signal()一次,執行的指針將會指向task1,如過再signal()一次,執行指針就會離開task1節點,移動到下一個節點,而下一個節點正好是end節點, 流程就會終止。當然在task的AssignmentHandle中用TaskInstance.end()方法也可以的。
特別需要說明的是:如果Task Node上沒有任務,則執行指針就會自動經過該節點執行到下一個節點.如果task1上沒有任務,則在stateOne上調用了signal()后,流程就會結束.
2.如何取出一個用戶的任務列表?
要取出用戶的任務列表,必須保證流程已經持久在數據庫中了,就可以用如下的語句進行提取了:
JbpmConfiguration config = JbpmConfiguration.getInstance(); JbpmContext jbpmContext = config.createJbpmContext(); TaskMgmtSession session=new TaskMgmtSession(jbpmContext.getSession()); List tasks=session.findTaskInstances("gaga"); |
3.如何把一個任務安排給用戶?
在Task node上添加Task,并添加AssignmentHandler,在
public class TaskAsignMent implements AssignmentHandler { public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception { assignable.setActorId("gaga");// assignable就是工作項 } } |
4.泳道(Swimlane)如何使用?
泳道就是用來描述角色的.如果你的某些工作項目是角色來操作的,就可以使用泳道.泳道有點批處理的意思,如果有多個節點是某個角色的用戶來完成的,就需要使用這個東西了,否則在每一個任務上設置AssignmentHandler會累死人的^_^!
5.如何將一個任務安排給用戶?
在任務上設置一個AssignmentHandler,在其execute方法中進行設置,和在任務節點上設置用戶的方法一樣.只不過這里是泳道而已.
6.如何將流程和要流轉的業務系統中的數據結構關聯起來?
在流程啟動的時候,在流程中放一個變量,該變量中存放外部數據結構的id.當用戶得到工作列表的時候,就會取出流程實例中的id,有了id就可以在業務數據庫中取出業務數據了.
7.如何區分在一個任務列表中不同節點上的處理界面?
建立一個節點和界面對應的表即可,用戶選定了任務后,系統根據用戶選定任務的節點的名稱或其他唯一標識符,找出與之對應的界面導航連接后,redirect到該頁面即可.
8.如何圖形化顯示當前流程的狀態?
寫一個servlet,將圖形顯示出來就可以了,如:
public class ProcessImageServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { long processDefinitionId = Long.parseLong( request.getParameter( "definitionId" ) ); JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext(); ProcessDefinition processDefinition = jbpmContext.getGraphSession().loadProcessDefinition(processDefinitionId); byte[] bytes = processDefinition.getFileDefinition().getBytes("processimage.jpg"); OutputStream out = response.getOutputStream(); out.write(bytes); out.flush(); // leave this in.it is in case we want to set the mime type later. // get the mime type // String contentType = URLConnection.getFileNameMap().getContentTypeFor( fileName ); // set the content type (=mime type) // response.setContentType( contentType ); } } |
在創建數據庫表時出現的錯誤
JbpmConfiguration config = JbpmConfiguration .parseResource("jbpm.cfg.xml"); config.createSchema(); config.close(); |
提示語法錯誤,更新了hibernate最新版本的就可以。
hibernate-3.1.3,jbpm
9.如何向指定的分支流轉?
用TaskInstance的end方法,如下所示:
JbpmConfiguration config = JbpmConfiguration.getInstance(); JbpmContext jbpmContext = config.createJbpmContext(); TaskInstance taskInstance=jbpmContext.getTaskMgmtSession().loadTaskInstance(taskId); String offshoot="" + param.get(Constant.OFFSHOOT); //taskInstance.end(offshoot); taskInstance.end(); jbpmContext.save(taskInstance); jbpmContext.close(); |
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。