快捷搜索: 王者荣耀 脱发

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

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

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

看例子:

页面都在osworkflow-2.8.0srcwebapp下:

首先是首页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.0srcwebappWEB-INFclassesexample.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.0srcwebappWEB-INFclassesexample.xml里定义了,例如:

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

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

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

经验分享 程序员 微信小程序 职场和发展