Jboss seam Todo list待办事项列表说明

来源:互联网 发布:深圳云计算培训 编辑:程序博客网 时间:2024/05/05 04:06

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_

 

 

原创粉丝点击