技术开发 频道

利用osworkflow实现业务流程


  下面在描述符中加入每个环节的所有者,正如我们在基本概念一节看到的那样,所有者通常代表了环节间交互的角色,角色的引入默认情况下通过osuser框架来实现。
  用户既可以手写XML描述符文件,也可以通过osworkflow提供的设计器来实现。读者可以在OpenSymphony的网站上试用这个工具。

  
测试实现

  测试时,我们可以应用osworkflow提供的例子,把bank.xml放到WEB-INF/classes文件夹下,在文件workflows.xml中添加一行以使引擎能够识别这个工作流。

  把工作流集成到应用程序

  在建模及测试工作流之后,我们即可以通过下面的几行代码把osworkflow集成到我们的程序中。
Workflow wf = new BasicWorkflow(username); HashMap inputs = new HashMap(); inputs.put("docTitle", request.getParameter("title")); wf.initialize("workflowName", 1, inputs);
  inputs哈希表包含了初始工作流动作中需要传出的参数,有几个实现了Workflow接口的类,其中BasicWorkflow是不支持事务的简单实现。在工作流执行过程中可以在流程中调用外部的方法,这种方法应该是实现了FunctionProvider接口的方法类。然后我们就可以用以下的方式调用它:
<action id="1" name="Execute business rule"> <pre-functions> <function type="class"> <arg name="class.name">java.net.DroolsExecutorFunction</arg> <arg name="ruleBaseName">BusinessRules.drl</arg> </function> </pre-functions> ...
  用户可以通过实现Condition接口,添加自己的条件控制。FunctionProvider及Condition接口可以调用工作流中的已知方法,这两个接口都可以接受来自于XML描述符文件中的参数。

  结论

  把一个业务流程抽象成一个工作流的任务并不容易,需要好的方法和合适的工具,osworkflow是一个为我们提供了许多可重用结构的理想工具。希望通过对本文的阅读,读者能够理解最基本的osworkflow概念。本文论述过程中所采用的方法非常基础和简单,但却值得借鉴。
0
相关文章