`

osworkflow学习笔记-怎么在项目里用工作流呢?

阅读更多

关键字:osworkflow 入门教程, 初体验,环境搭建,示例,笔记,用法。。。。。。

 

在研究osworkflow详细配置之前,先整明白这玩意咋在网页里用呢?

看例子:

页面都在osworkflow-2.8.0\src\webapp下:

首先是首页default.jsp,创建用户啥的先不理,然后是登陆页面:login.jsp,登陆验证完进入nav.jsp

       session.setAttribute("username", username);
        response.sendRedirect("nav.jsp");

 在nav.jsp里进入创建工作流的页面:newworkflow.jsp

 

 OK重点到了,如何创建一个工作流对象:

newworkflow.jsp

   Workflow wf = new BasicWorkflow((String) session.getAttribute("username"));
    long id = wf.initialize("example", 100, null);
 

 哦,首先根据当前用户名创建一个 BasicWorkflow, 然后初始化,估计是用之前配的osworkflow-2.8.0\src\webapp\WEB-INF\classes\example.xml, 得到一个流水号id,然后进入test.jsp页面开始走流程:

test.jsp页面复杂了。。。

不过感觉需要看的就开始那点:

Workflow wf = new BasicWorkflow((String) session.getAttribute("username"));

    long id = Long.parseLong(request.getParameter("id"));

    String doString = request.getParameter("do");
    if (doString != null && !doString.equals("")) {
        int action = Integer.parseInt(doString);
        wf.doAction(id, action, Collections.EMPTY_MAP);


    }


    int[] actions = wf.getAvailableActions(id, null);
    WorkflowDescriptor wd =  wf.getWorkflowDescriptor(wf.getWorkflowName(id));



    for (int i = 0; i < actions.length; i++) {
        String name = wd.getAction(actions[i]).getName();



        %>
        <li> <a href="test.jsp?id=<%=id%>&do=<%= actions[i] %>"><%= name %></a>
        <%
    }

 无非就是获取一个流水号,然后就知道当前工作流在第几步了,

 wd.getAction(actions[i]).getName()

   然后想执行哪一步,就执行哪一步的action编号就行

wf.doAction(id, action, Collections.EMPTY_MAP);

action编号在sworkflow-2.8.0\src\webapp\WEB-INF\classes\example.xml里定义了,例如:

  <action id="1" name="Finish First Draft">

 

至于到底能执行哪一个action,什么用户才能执行,这执行完了又该咋地,这都配到example.xml里了, 得还得看那个example.xml。

反正现在终于可以对osworkflow说“hello world”了

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics