Jboss seam Todo list待辦事項列表說明

Jboss seam Todo list待辦事項列表說明

 

滿江紅翻譯的seam  reference中沒有對todo list 進行工作原理的說明,故做一些補充

此爲較簡單的流程示例,並沒有真正的業務數據關聯。

 

通過Loginlogin方法來實現對流程參與者綁定,使用TodoList類說明,  創建todo流程實例,節點自動流轉。

 

1 提交一個參與者

Login.jsp

        <h:inputText value="#{login.user}"/>

        <h:commandButton value="Login" action="#{login.login}"/>

 

2 流程參與者綁定

綁定org.jboss.seam.bpm.actor的一個實例

 

Login.jave的代碼如下:

@In private Actor actor;

   public String login()

   {

      actor.setId(user);

      return "/todo.jsp";

   }

3 todo.jsp頁面

注:如下#{task.字段}對應實例表的字段,seam封閉了jbpm其實對應的是taskentity.

<! - - 1 taskInstancePriorityList   說明:

支持優先的任務列表顯示(不確定的顯示支持在標籤組件構建時調用),用於顯示任務實例數據對應 jbpm_taskinstance數據表。

Support for a task list ordered by priority.

Author:

Gavin King  - - >

 

         <h:outputText value="There are no todo items." rendered="#{empty taskInstancePriorityList}"/>

       <!- - 輸出數據表格 - - >

         <h:dataTable value="#{taskInstancePriorityList}" var="task" rendered="#{not empty taskInstancePriorityList}">

            <h:column>

                <f:facet name="header">

                    <h:outputText value="Description"/>

                </f:facet>

                <h:inputText value="#{task.description}" style="width: 400"/>

            </h:column>

            <h:column>

                <f:facet name="header">

                    <h:outputText value="Created"/>

                </f:facet>

<! - - 顯示實例的開始時間 - - >

                <h:outputText value="#{task.taskMgmtInstance.processInstance.start}">

                    <s:convertDateTime type="date"/>

                </h:outputText>

            </h:column>

            <h:column>

                <f:facet name="header">

                    <h:outputText value="Priority"/>

                </f:facet>

                <h:inputText value="#{task.priority}" style="width: 30"/>

            </h:column>

            <h:column>

                <f:facet name="header">

                    <h:outputText value="Due Date"/>

                </f:facet>

                <h:inputText value="#{task.dueDate}" style="width: 100">

                    <s:convertDateTime type="date" dateStyle="short"/>

                </h:inputText>

            </h:column>

            <h:column>

 < ! - -  用於節點的流轉,此示例對應的方法是直接完成方式 @StartTask @EndTask - - >

                <s:button action="#{todoList.done}" taskInstance="#{task}" value="Done"/>

            </h:column>

         </h:dataTable>

      </div>

      <div>

      <h:messages/>

      </div>

      <div>

         <h:commandButton value="Update Items" rendered="#{not empty taskInstanceList}"/>

      </div>

   </h:form>

   <h:form id="new">

      <div>

         <h:inputText value="#{todoList.description}" style="width: 400"/>

<! - - 調用 createTodo 創建流程實例- - >

         <h:commandButton value="Create New Item" action="#{todoList.createTodo}"/>

      </div>

   </h:form>

</f:view>

</body>

</html>

 

4 TodoList類說明

  

   private String description;

 

 創建todo流程實例  

   @CreateProcess(definition="todo")

   public void createTodo() {}

 

節點自動流轉

   @StartTask @EndTask

   public void done() {}

 

5 流程定義文件說明

 

<process-definition name="todo"   >

   開始節點

   <start-state name="start">

      <transition to="todo"/>

   </start-state>

   任務節點

   <task-node name="todo">

     直接從session會話週期當中得到session bean的屬性值,用於節點描述

 <task name="todo" description="#{todoList.description}">

設置參與者,通過參與者可以得到一個參與者的多個任務實例

         <assignment actor-id="#{actor.id}"/>

      </task>

  結束指向

      <transition to="done"/>

   </task-node>  

結束節點

   <end-state name="done"/>

  

</process-definition>

6 最終對應的部分工作流表數據與頁面說明

每一個行都是重新開始一個流程實例,執行done按鈕後,bpm系統會自動結束流程

 

定義的流程圖

 

 

流程定義表,此時只有一個流程,可以有多個流程實例

 

 

 

流程實例表

 

 

任務實例表,與頁面內容對應,DESCRIPTION_ACTORID_

 

 

發佈了88 篇原創文章 · 獲贊 0 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章