`

用osworkflow写一个请假例子(提供代码下载)

阅读更多
    osworkflow扩展非常容易,跟我们的应用结合起来使用也很容易。假设一个请假流程:员工请假,需要经过部门经理和人力资源部经理两人共同审批,只有当两人都许可时才通过,任一人驳回就失效,也就是一个and split和and Join流程,并且我们附加一个要求,当发送请假请求、许可和驳回这几个操作时都将发送一条消息给相应的用户。
    流程定义文件如下:
<!----><?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE workflow PUBLIC "-//OpenSymphony Group//DTD OSWorkflow 2.7//EN" 
"http://www.opensymphony.com/osworkflow/workflow_2_7.dtd"
>
<workflow>
    
<initial-actions>
        
<action id="0" name="开始">
            
<pre-functions>
                
<function type="class">
                    
<arg name="class.name">
                        com.opensymphony.workflow.util.Caller
                    
</arg>
                
</function>
            
</pre-functions>
            
<results>
                
<unconditional-result old-status="Finished"
                    status
="Underway" step="1" owner="${caller}" />
            
</results>
        
</action>
    
</initial-actions>

    
<steps>
        
<step id="1" name="填假单">
            
<external-permissions>
                
<permission name="permA">
                    
<restrict-to>
                        
<conditions type="AND">
                            
<condition type="class"><!--流程处于Underway状态(流程已经启动)-->
                                
<arg name="class.name">
                                    com.opensymphony.workflow.util.StatusCondition
                                
</arg>
                                
<arg name="status">Underway</arg>
                            
</condition>
                            
<condition type="class">
                                
<arg name="class.name">
                                    com.opensymphony.workflow.util.AllowOwnerOnlyCondition
                                
</arg>
                            
</condition>
                        
</conditions>
                    
</restrict-to>
                
</permission>
            
</external-permissions>
            
<actions>
                
<action id="1" name="送出">
                    
<restrict-to>
                        
<conditions type="AND">
                            
<condition type="class"><!--流程处于Underway状态(流程已经启动)-->
                                
<arg name="class.name">
                                    com.opensymphony.workflow.util.StatusCondition
                                
</arg>
                                
<arg name="status">Underway</arg>
                            
</condition>
                            
<condition type="class">
                                
<arg name="class.name">
                                    com.opensymphony.workflow.util.AllowOwnerOnlyCondition
                                
</arg>
                            
</condition>
                        
</conditions>
                    
</restrict-to>
                    
<pre-functions>
                        
<function type="class">
                            
<arg name="class.name">
                                com.opensymphony.workflow.util.Caller
                            
</arg>
                        
</function>

                    
</pre-functions>
                    
<results>
                        
<unconditional-result old-status="Finished"
                            split
="1" status="Queued">
                            
<post-functions>
                                
<function type="class">
                                    
<arg name="class.name">
                                        net.rubyeye.leavesys.service.workflow.SendRemindInfFunction
                                    
</arg>
                                    
<arg name="groupName">
                                        AND (GROUPNAME='dept_manager' or
                                        GROUPNAME='comp_manager')
                                    
</arg>
                                    
<arg name="content">
                                        you have leavemsg to
                                        check!please check it!
                                    
</arg>
                                
</function>
                            
</post-functions>
                        
</unconditional-result>
                    
</results>
                
</action>
            
</actions>
        
</step>
        
<step id="2" name="部门经理批假单">
            
<actions>
                
<action id="2" name="准许">
                    
<restrict-to>
                        
<conditions>
                            
<condition type="class">
                                
<arg name="class.name">
                                    com.opensymphony.workflow.util.OSUserGroupCondition
                                
</arg>
                                
<arg name="group">dept_manager</arg>
                            
</condition>
                        
</conditions>
                    
</restrict-to>
                    
<pre-functions>
                        
<function type="class">
                            
<arg name="class.name">
                                com.opensymphony.workflow.util.Caller
                            
</arg>
                        
</function>
                        
<function type="beanshell">
                            
<arg name="script">
                                propertySet.setString("action1",
                                "success");
                            
</arg>
                        
</function>
                    
</pre-functions>
                    
<results>
                        
<unconditional-result old-status="Finished"
                            status
="Queued" join="1" owner="${caller}" />
                    
</results>
                
</action>

                
<action id="3" name="驳回">
                    
<restrict-to>
                        
<conditions>
                            
<condition type="class">
                                
<arg name="class.name">
                                    com.opensymphony.workflow.util.OSUserGroupCondition
                                
</arg>
                                
<arg name="group">dept_manager</arg>
                            
</condition>
                        
</conditions>
                    
</restrict-to>
                    
<pre-functions>
                        
<function type="class">
                            
<arg name="class.name">
                                com.opensymphony.workflow.util.Caller
                            
</arg>
                        
</function>
                        
<function type="beanshell">
                            
<arg name="script">
                                propertySet.setString("action1",
                                "fail");
                            
</arg>
                        
</function>
                    
</pre-functions>
                    
<results>
                        
<unconditional-result old-status="Finished"
                            status
="Queued" join="2" owner="${caller}" />
                    
</results>
                
</action>
            
</actions>
        
</step>

        
<step id="3" name="公司经理批假单">
            
<actions>
                
<action id="4" name="准许">
                    
<restrict-to>
                        
<conditions>
                            
<condition type="class">
                                
<arg name="class.name">
                                    com.opensymphony.workflow.util.OSUserGroupCondition
                                
</arg>
                                
<arg name="group">comp_manager</arg>
                            
</condition>
                        
</conditions>
                    
</restrict-to>
                    
<pre-functions>
                        
<function type="class">
                            
<arg name="class.name">
                                com.opensymphony.workflow.util.Caller
                            
</arg>
                        
</function>
                        
<function type="beanshell">
                            
<arg name="script">
                                propertySet.setString("action2",
                                "success");
                            
</arg>
                        
</function>
                    
</pre-functions>
                    
<results>
                        
<unconditional-result old-status="Finished"
                            status
="Queued" join="1" owner="${caller}" />
                    
</results>
                
</action>

                
<action id="5" name="驳回">
                    
<restrict-to>
                        
<conditions>
                            
<condition type="class">
                                
<arg name="class.name">
                                    com.opensymphony.workflow.util.OSUserGroupCondition
                                
</arg>
                                
<arg name="group">dept_manager</arg>
                            
</condition>
                        
</conditions>
                    
</restrict-to>
                    
<pre-functions>
                        
<function type="class">
                            
<arg name="class.name">
                                com.opensymphony.workflow.util.Caller
                            
</arg>
                        
</function>
                        
<function type="beanshell">
                            
<arg name="script">
                                propertySet.setString("action2",
                                "fail");
                            
</arg>
                        
</function>
                    
</pre-functions>
                    
<results>
                        
<unconditional-result old-status="Finished"
                            status
="Queued" join="2" owner="${caller}" />
                    
</results>
                
</action>
            
</actions>
        
</step>

        
<step id="4" name="停止" />
    
</steps>
    
<splits>
        
<split id="1">
            
<unconditional-result old-status="Finished" status="Queued"
                step
="2" />
            
<unconditional-result old-status="Finished" status="Queued"
                step
="3" />
        
</split>
    
</splits>
    
<joins>
        
<join id="1">
            
<conditions type="AND">
                
<condition type="beanshell">
                    
<arg name="script">
                        
<![CDATA[
     "Finished".equals(jn.getStep(2).getStatus()) &&
        "Finished".equals(jn.getStep(3).getStatus())&&"success".equals(propertySet.getString("action1"))&&
        "success".equals(propertySet.getString("action2"))
      
]]>
                    
</arg>
                
</condition>
            
</conditions>
            
<unconditional-result old-status="Finished" status="Queued"
                step
="4"/>
        
</join>

        
<join id="2">
            
<conditions type="OR">
                
<condition type="beanshell">
                    
分享到:
评论
2 楼 fangruanyjq 2015-09-08  
[img][/img]
引用
1 楼 mida 2009-02-20  
你的“提供源码下载”是什么意思????

相关推荐

    OSWorkflow 可以请假小例子(mysql+tomcat)

    在这个"可以请假的小例子"中,我们将探讨如何使用OSWorkflow与MySQL数据库、Tomcat应用服务器以及Eclipse开发环境集成,来创建一个简单的请假申请流程。 首先,我们需要了解OSWorkflow的基本概念。OSWorkflow 是一...

    OSWorkflow——请假审批系统(代码全,数据库mysql)

    "OSWorkflow——请假审批系统(代码全,数据库mysql)" 指的是一个基于OSWorkflow工作流引擎实现的请假审批系统,该系统完整地提供了代码和数据库脚本,且数据库部分使用MySQL作为后台存储。 **描述解析:** 虽然描述...

    OSWorkFlow 请假实例

    在"OSWorkFlow_Helen"这个文件中,很可能是包含了一个示例项目或者代码,用于演示如何使用OSWorkFlow实现请假流程。文件可能包含了流程定义、Java代码示例、数据库脚本以及相关的配置文件。通过学习和分析这个实例,...

    osworkflow的一个例子

    一个osworkflow的例子,其实就是官方的例子,只是除了是汉化的外我还把在jsp中的Java代码提取到一个单独的类中,这样便于阅读和理解。希望对大家有帮助。

    osworkflow 请假系统源码

    **osworkflow 框架详解** osworkflow,全称为OpenSymphony Workflow,是一个开源的工作流管理系统,...这个示例代码提供了实践osworkflow的一个具体场景,对于学习和理解osworkflow的工作原理和应用具有很高的价值。

    osworkflow eclipse+mysql 请假审批流程 完整示例

    这个示例提供了一个完整的osworkflow与Eclipse结合的请假审批流程,它不仅展示了osworkflow的工作流管理能力,还演示了如何将工作流引擎与实际业务逻辑相结合,为实际的企业应用提供了参考。通过学习和实践这个示例...

    工作流 osworkflow 例子和原理

    以“用osworkflow写一个请假例子.doc”为例,我们可以构建一个简单的请假流程:员工提交请假申请,经理审批,最后HR确认。在这个流程中,员工是初始的参与者,他们创建请假请求并提交;经理根据请假天数和原因进行...

    osworkflow+mysql例子(该例子有问题,请勿下载)

    然而,根据提供的标题和描述,这个特定的例子可能存在问题,因此不建议下载。 在 OSWorkflow 中,工作流的定义通常包括一系列的步骤、条件、决策和任务,它们描述了一个业务过程从开始到结束的完整路径。每个步骤...

    OSworkFlow工作流请假流程实例

    OSworkflow(OpenSymphony Workflow)是一个开源的工作流管理系统,它提供了强大的流程定义和执行的能力,广泛应用于企业级应用中,如请假流程等业务场景。在本实例中,我们将深入探讨如何利用OSworkflow来实现一个...

    Osworkflow10份资料

    JPetStoreOSGI.rar Mytestworkflow.rar Osworkflow持久化.doc Osworkflow的介绍.doc osworkflow配置与demo.rar osworkflow中文开发指南.rar OSWorkflow中文手册OSWorkflow-chinese-...用osworkflow写一个请假例子.rar

    Osworkflow 入门级例子

    Osworkflow 是一个开源的工作流引擎,它为应用程序提供了一种灵活的方式来管理业务流程。这个入门级的例子将带你了解 Osworkflow2.8 的基本概念和如何在项目中简单地实现工作流。 Osworkflow 提供了一个强大的框架...

    OSWorkflow 请假小例子sql脚本

    mysql 脚本 请假例子 表结构和初始数据

    osworkflow请假系统

    **osworkflow请假系统** ...总结来说,osworkflow请假系统是一个综合的学习资源,涵盖了工作流引擎的使用、数据库设计、Web应用部署等多个IT领域的关键知识点,对于想深入理解工作流管理及其实现的开发者极具价值。

    画流程图的例子(源码)OsWorkFlow.rar

    例如,一个简单的请假流程可能包含“申请”、“审批”和“反馈”三个节点,每个节点代表一个任务,转移则表示任务间的顺序或条件关系。OsWorkFlow的源码中包含了对这些XML配置的解析和执行逻辑,这为我们提供了极大...

    osworkflow指导文档 + 源码

    osWorkflow 是由 James Helzer 开发的,其设计目标是为 Java 应用程序提供一个轻量级、易于使用的流程管理框架。osWorkflow 支持动态流程更改、事件驱动的流程控制以及多种持久化机制,如 JNDI、XML 文件和数据库...

    osworkflow 简单实例

    3. **初始化工作流**:在代码中,我们使用 OSWorkflow API 创建一个新的 workflow instance,与请假申请关联。同时,设置初始步骤为 `request`。 4. **执行步骤**:当员工提交请假申请时,我们启动 workflow ...

    osworkflow请假实例

    通过这个osworkflow请假实例,学习者可以深入了解OSWorkflow的工作原理,掌握如何设计和实现一个实际的业务流程,同时熟悉Oracle数据库和Tomcat服务器的使用。这是一个很好的起点,为进一步的业务流程管理(BPM)...

    OsWorkflow

    通过这个请假申请的例子,你可以了解到如何使用XML定义流程,Servlet如何与工作流引擎交互,以及如何利用OsWorkflow API来控制流程的执行。这不仅有助于理解OsWorkflow的工作原理,也为实际开发提供了实践经验。

    OSWorkflow演示例子

    这个"OSWorkflow演示例子"提供了如何使用OSWorkflow的实际示例,帮助开发者更好地理解和应用这一工具。以下是对OSWorkflow及其相关知识点的详细介绍: 1. **工作流引擎**:工作流引擎是用于自动化业务过程的软件...

Global site tag (gtag.js) - Google Analytics