快速业务通道

OsWorkflow初探 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-21
L中

3.存储在URL中.

4.存储在资源文件中

该示例是存储在XML中,XML的名称为workflows.xml,下面看一下workflows.xml:

<workflows> <workflow name="example" type="resource" location="example1.xml"/> <workflow name="example" type="resource" location="example2.xml"/> </workflows>

这里定义了两个工作流定义example1.xml和example2.xml.

和权限系统的整合

流程定义详细过程,这里先不列出,这里的重点是如何与Osworkflow其它的权限系统进行整合.流程定义中每个Action的restrict-to节点都会有condition的定义,如下:

<condition type="class">         <arg name="class.name">os.TestCondition</arg>         <arg name="group">foos</arg> </condition>

其中的os.TestCondition既是我们需要实现的,osworkflow系统实现了一个简单的权限系统osuser,基于osuser它实现了一套简单的约束条件.如果想实现自己的工作流参与人的约束条件,必须实现OSWorkflow提供的com.opensymphony.workflow.Condition接口.改接口定义如下:

/* * Copyright (c) 2002-2003 by OpenSymphony * All rights reserved. */ package com.opensymphony.workflow; import com.opensymphony.module.propertyset.PropertySet; import java.util.Map; /** * Interface that must be implemented to define a java-based condition in your workflow definition. * * @author <a href="mailto:plightbo@hotmail.com">Patrick Lightbody</a> * @version $Revision: 1.7 $ */ public interface Condition {    public boolean passesCondition(Map transientVars, Map args, PropertySet ps) throws WorkflowException; }

该接口有一个方法需要实现passesCondition,下面对它的几个参数加以阐述:

1.transientVars :存放了当前流程运转的所有信息,比如,流程的上下文信息,流程的定义,流程的存储,在我们的实现里我们可以得到一下信息:

WorkflowContext context = (WorkflowContext) transientVars.get("context");    WorkflowEntry entry = (WorkflowEntry) transientVars.get("entry"); WorkflowStore store = (WorkflowStore) transientVars.get("store"); //取得当前登陆操作员 String caller = context.getCaller();

2.args里存储了流程定义里的参数.在该示例里是:

<arg name="group">foos</arg>

3.是PropertySet对象,记录了流程实例所需要保存的数据,可以理解成osworkflow所描述的流程相关数据

OsWorkflow初探(3)

时间:2011-01-15 csdn博客 鹿鸣山居

3.如果我们想该Action必须是group为foos组里的成员,那么我们可以这样实现我们的os.TestCondition.下面是示例代码:

public class TestCondtion implements Condition {    //~ Methods ////////////////////////////////////////////////////////////////    public boolean passesCondition(Map transientVars, Map args, PropertySet ps) {      try {        //得到工作流上下文        WorkflowContext context = (WorkflowContext) transientVars.get("context");        //得到当前操作员        String caller = context.getCaller();        //得到当前操作员信息.        User user = UserManager.getInstance().getUser(caller);        //得到允许操作的组   

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号