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”了