使用OSWorkflow的API[原]

原创 2004年09月07日 13:49:00

六、使用OSWorkflowAPI

1. 接口选择

OSWorkflow提供了com.opensymphony.workflow.Workflow接口的多个实现类,你可以在你的程序中直接使用。

(1) BasicWorkflow

BasicWorkflow不支持事务处理,但是可以通过外覆BasicWorkflow的方式来支持事务,这要以来于你的持久化的实现。BasicWorkflow通过下面的方式创建:

              Workflow wf = new BasicWorkflow(username);

username是当前请求的用户名。

(2) EJBWorkflow

EJBWorkflow使用EJB容器来管理事务。这是在ejb-jar.xml文件中配置的。它是这样建立的:

              Workflow wf = new EJBWorkflow();

这里不需要指定用户名,因为一旦用户被授权,它会从EJB容器中自动将用户名载入。

(3) OfbizWorkflow

OfbizWorkflowBasicWorkflow唯一不同的地方在于,通过ofbizTransactionUtil调用可以支持事务处理。

2. 创建一个新的工作流

下面简单介绍了如何使用OSWorkflowAPI来创建一个新的工作流。首先应该创建定义工作流的文件。然后,你的程序必须知道初始化步骤的值,以便进行流程实例的初始化。在你初始化一个工作流之前,你必须创建它,这样的话,你就可以得到这个工作流的引用。下面是例程代码:

       Workflow wf = new BasicWorkflow(username);

       HashMap inputs = new HashMap();

       inputs.put("docTitle", request.getParameter("title"));

       wf.initialize("workflowName", 1, inputs);

注意:一般情况下,你应该使用一个Workflow类型的引用,而不应该是BasicWorkflow的引用。

3. 执行动作

OSWorkflow中,执行一个动作非常简单:

       Workflow wf = new BasicWorkflow(username);

       HashMap inputs = new HashMap();

       inputs.put("docTitle", request.getParameter("title"));

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

       wf.doAction(id, 1, inputs);

4. 查询

OSWorkflow 2.6中,引入了新的ExpressionQuery API

注意:不是所有的workflow的存储都支持查询。目前,HibernateJDBC和内存存储都支持查询。然而,hibernate存储不支持混合类型的查询(例如:一个历史和当前步骤的查询信息的查询)。要执行查询,就要建立一个WorkflowExpressionQuery对象,然后在WorkflowExpressionQuery对象中调用查询方法。

下面是一个查询的例子:

//Get all workflow entry ID's for which the owner is 'testuser'

new WorkflowExpressionQuery(

  new FieldExpression(FieldExpression.OWNER,             //Check the OWNER field

  FieldExpression.CURRENT_STEPS,                             //Look in the current steps context

  FieldExpression.EQUALS,                                           //check equality

  "testuser"));                                                                //the equality value is 'testuser'

//Get all workflow entry ID's that have the name 'myworkflow'

new WorkflowExpressionQuery(

  new FieldExpression(FieldExpression.NAME,                //Check the NAME field

  FieldExpression.ENTRY,                                              //Look in the entries context

  FieldExpression.EQUALS,                                           //Check equality

  'myworkflow'))                                                          //equality value is 'myworkflow'

 

下面是一个嵌套查询的例子:

// Get all finished workflow entries where the current owner is 'testuser'

Expression queryLeft = new FieldExpression(

  FieldExpression.OWNER,

  FieldExpression.CURRENT_STEPS,

  FieldExpression.EQUALS, 'testuser');

Expression queryRight = new FieldExpression(

  FieldExpression.STATUS,

  FieldExpression.CURRENT_STEPS,

  FieldExpression.EQUALS,

  "Finished",

  true);

WorkflowExpressionQuery query = new WorkflowExpressionQuery(

  new NestedExpression(new Expression[] {queryLeft, queryRight},

  NestedExpression.AND));

Finally, here is an example of a mixed-context query. Note that this query is not supported by the Hibernate workflow store.

 

//Get all workflow entries that were finished in the past

//or are currently marked finished

Expression queryLeft = new FieldExpression(

  FieldExpression.FINISH_DATE,

  FieldExpression.HISTORY_STEPS,

  FieldExpression.LT, new Date());

Expression queryRight = new FieldExpression(

  FieldExpression.STATUS,

  FieldExpression.CURRENT_STEPS,

  FieldExpression.EQUALS, "Finished");

WorkflowExpressionQuery query = new WorkflowExpressionQuery(

  new NestedExpression(new Expression[] {queryLeft, queryRight},

  NestedExpression.OR));

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

关键字:osworkflow 入门教程, 初体验,环境搭建,示例,笔记,用法。。。。。。   在研究osworkflow详细配置之前,先整明白这玩意咋在网页里用呢? 看例子: 页面都在os...
  • baixiaozhe
  • baixiaozhe
  • 2012年12月06日 10:03
  • 906

osworkflow的使用

OSWorkflow是一个Java开源的工作流,使用Apache许可。OSWorkflow的最大特点是灵活,它所面向的使用对象是专业开发人员,如果最终用户想调整工作流,那是不太现实的。OSWorkfl...
  • nanjing0412
  • nanjing0412
  • 2017年04月12日 16:17
  • 516

osworkflow的使用

jar file 將以下jar file放置到WEB-INF/lib底下… activation.jar bsh-1.2b7.jar commons-logging.jar designer...
  • familyGo
  • familyGo
  • 2011年09月09日 17:07
  • 918

用OSWorkFlow和JBPM开发工作流异同

一、用OSWorkFlow和JBPM开发工作流,首先要做的都是编写工作流描述文件,在此基础上再进一步做相关的配置和调用。二、编写流程描述文件方式1、  JBPM是通过图形化的编辑工具(JBPM自带的E...
  • victor16345
  • victor16345
  • 2010年05月21日 17:10
  • 12914

osworkflow工作流引擎学习笔记

本指导资料假定你已经部署OSWorkflow的范例应用在你的container上。范例应用部署是使用基于内存的数据存储,这样你不需要担心如何配置其他持久化的例子。范例应用的目的是为了说明如何应用OSW...
  • wacky
  • wacky
  • 2016年08月12日 10:55
  • 1853

OSWorkFlow流程配置文件详解

AbstractWorkflow>> osworkflow中有关工作流流转的所有核心代码都在AbstractWorkflow中,BasicWorkflow就是派生自它,不过这个BasicWorkfl...
  • lifuxiangcaohui
  • lifuxiangcaohui
  • 2014年09月04日 11:32
  • 3137

OsWorkFlow工作流简介

OsWorkFlow工作流
  • gaowenhui2008
  • gaowenhui2008
  • 2016年04月07日 14:42
  • 1019

j2ee常用工作流比较(shart、osworkflow、jbpm)

工作流引擎   Shark(EnhydraShark) Osworkflow opensymphony Jbpm(JBoss JBPM) 工作流描述语言...
  • shadowkiss
  • shadowkiss
  • 2013年05月07日 15:14
  • 2208

osworkflow介绍例子

自己刚刚涉入工作流,也看到很多人写了很多关于工作流方面的文章,有关于osworkflow的,有关于jbpm的,还有其他什么的!总是不如自己写下自己的经历比较真实一些,这样才能问清楚自己到底懂了什么,写...
  • shuangyidehudie
  • shuangyidehudie
  • 2013年05月13日 13:17
  • 834

OsWorkFlow工作流简介

OsWorkFlow工作流简介: Osworkflow是完全用java语言编写的开放源代码的工作流引擎,具有显著的灵活性及完全面向有技术背景的用户的特点。用户可以根据自身的需求利用这款开源软件设计简...
  • niuhea
  • niuhea
  • 2013年06月23日 09:01
  • 6910
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用OSWorkflow的API[原]
举报原因:
原因补充:

(最多只允许输入30个字)