- 浏览: 192623 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
nfsfairytale:
求附件求附件
一种高效的寻路算法 - B*寻路算法 -
wafer1021:
想在服务端运用这种
一种高效的寻路算法 - B*寻路算法 -
zhezhelin:
最新代码有吗
一种高效的寻路算法 - B*寻路算法 -
zyh2018:
你好!很开心看到你写的B*算法,但是C++版本的代码看起来很吃 ...
一种高效的寻路算法 - B*寻路算法 -
asuralove:
学习了~~~~
一种高效的寻路算法 - B*寻路算法
最近工作中一个项目打算采用工作流技术,所以对工作流特别是OSWorkflow进行了一些学习和研究,为了向项目组其他成员演示和进一步进行应用,做了这个小业务系统,现在经过整理把它拿出来,希望对想要了解OSWorkflow的朋友有一点帮助。我接触的时间也不长,所以哪个地方有问题还希望大家多多指点,对工作流技术共同提高。
这个小业务系统的主要目的
演示如何基于OSWorkflow构建业务系统,即如何将原来程序内硬编码的业务过程抽取出来,放到底层的工作流引擎中,上层业务模块只进行具体业务动作的执行,同时演示着两层如何“集成”。
本系统演示三个方面:业务处理和OSWorkflow的基本“集成”、工作流引擎根据工作流定义调用业务处理逻辑、基于业务数据的工作流跳转
业务用例描述
核心工作流:
1、员工填写请假申请单,包括“请假原因”和“请假天数”,填写后进行提交;
2、部门主管对员工请假申请进行审批,同意员工请假;
3、人力资源主管对员工请假申请进行审批,同意员工请假;
4、系统发送邮件通知员工请假申请已获得批准;
5、用例结束;
备选工作流1:
在第一步中,如果员工请假天数小于等于3天,那么不需要部门主管审批,直接从第一步跳到第三步,又人力资源审批;
备选工作流2:
在第二步中,如果部门主管不同意请假申请,那么系统将给请假员工发送请假没有通过的邮件通知,用例结束;
备选工作流3:
在第三步中,如果人力资源主管不同意请假申请,那么系统将给请假员工发送请假没有通过的邮件通知,用例结束;
系统运行/开发环境
数据库:ms sqlserver2000
应用服务器:Jboss-4.0.2
开发工具:Jbuilder2006
系统搭建
1、创建数据库,我命名为osworkflow_app,也可命名为任意名字,只要在数据源配置中正确配置即可;
2、创建数据表并初始化用户及用户组数据,执行附件中的db_leaveApprove_20070712.sql即可;
3、在jboss下配置数据源,我的配置如附件mssql-ds.xml
4、将osworkflow及log4j的配置文件leave_apply.xml、osuser.xml、osworkflow.xml、propertyset.xml、workflows.xml、log4j.properties拷贝到工程目录src下面;
可直接将附件的leaveApprove.rar解到项目中,里面包括所有的源程序和资源包。
工作流定义文件说明
依据本业务需求的工作流定义文件如下
定义中包括6个step
step1是员工请假申请的步骤,本步骤的action在执行时将回调业务方法类ApplyFunction,将申请单数据插入到数据库中,同时处理结果将根据请假申请天数dayCount进行判断,如果请假申请天数大于3天,将跳到step2让部门主管审批,如果不大于3天,将直接跳到step3让人力资源主管审批;
step2 是部门主管审批,如果审批同意(opinion!=2)将跳到step3再由人力资源主管审批,如果审批不同意(opinion==2)将跳到step5自动发“申请未批准”邮件通知步骤;
step3 是人力资源主管审批,如果审批同意(opinion!=2)将跳到step4自动发“申请批准”邮件通知步骤,如果审批不同意(opinion==2)将跳到step5自动发“申请未批准”邮件通知步骤;
step4和step5都是自动发送邮件通知步骤,执行完之后跳到空步骤step6结束该工作流实例。
工作流定义文件
回家了,明天再对一些程序进行说明
可以下载附件,建立工程后执行,数据库中有三个用户:employee1表示员工,可以提交请假申请;manager1表示部门主管;hr1表示人力资源主管,密码都是test
我又来了... 本来从来没有玩过这个... 看到楼主贴的这个后 才开始在弄..很好 学到不少东东.. 我现在能走到 提交请假表单了...谢谢哈.. 我用的Mysql和Tomcat...
但是 到起动工作流程时出错了...
DEBUG [(spi.jdbc.JDBCWorkflowStore)] Executing SQL statement: INSERT INTO OS_CURRENTSTEP (ID,ENTRY_ID, STEP_ID, ACTION_ID, OWNER, START_DATE, DUE_DATE, FINISH_DATE, STATUS, CALLER ) VALUES (?, ?, ?, null, ?, ?, ?, null, ?, null)
这条sql没有能写入数据库... 搞不懂为什么写不进去?
另外,楼主有没有这方面的电子书呀..有的话发一本,谢谢...
classicbride@126.com
你检查一下生成的部署war包里,相应的目录(类似WebModule.war\WEB-INF\classes)里有没有那个xml文件
在osworkflow的官方网站下载包中,有对应各种类型的数据库创建文件;
附件是上面示例的mysql数据库脚本,不过没有测试过
这个小业务系统的主要目的
演示如何基于OSWorkflow构建业务系统,即如何将原来程序内硬编码的业务过程抽取出来,放到底层的工作流引擎中,上层业务模块只进行具体业务动作的执行,同时演示着两层如何“集成”。
本系统演示三个方面:业务处理和OSWorkflow的基本“集成”、工作流引擎根据工作流定义调用业务处理逻辑、基于业务数据的工作流跳转
业务用例描述
核心工作流:
1、员工填写请假申请单,包括“请假原因”和“请假天数”,填写后进行提交;
2、部门主管对员工请假申请进行审批,同意员工请假;
3、人力资源主管对员工请假申请进行审批,同意员工请假;
4、系统发送邮件通知员工请假申请已获得批准;
5、用例结束;
备选工作流1:
在第一步中,如果员工请假天数小于等于3天,那么不需要部门主管审批,直接从第一步跳到第三步,又人力资源审批;
备选工作流2:
在第二步中,如果部门主管不同意请假申请,那么系统将给请假员工发送请假没有通过的邮件通知,用例结束;
备选工作流3:
在第三步中,如果人力资源主管不同意请假申请,那么系统将给请假员工发送请假没有通过的邮件通知,用例结束;
系统运行/开发环境
数据库:ms sqlserver2000
应用服务器:Jboss-4.0.2
开发工具:Jbuilder2006
系统搭建
1、创建数据库,我命名为osworkflow_app,也可命名为任意名字,只要在数据源配置中正确配置即可;
2、创建数据表并初始化用户及用户组数据,执行附件中的db_leaveApprove_20070712.sql即可;
3、在jboss下配置数据源,我的配置如附件mssql-ds.xml
4、将osworkflow及log4j的配置文件leave_apply.xml、osuser.xml、osworkflow.xml、propertyset.xml、workflows.xml、log4j.properties拷贝到工程目录src下面;
可直接将附件的leaveApprove.rar解到项目中,里面包括所有的源程序和资源包。
工作流定义文件说明
依据本业务需求的工作流定义文件如下
定义中包括6个step
step1是员工请假申请的步骤,本步骤的action在执行时将回调业务方法类ApplyFunction,将申请单数据插入到数据库中,同时处理结果将根据请假申请天数dayCount进行判断,如果请假申请天数大于3天,将跳到step2让部门主管审批,如果不大于3天,将直接跳到step3让人力资源主管审批;
step2 是部门主管审批,如果审批同意(opinion!=2)将跳到step3再由人力资源主管审批,如果审批不同意(opinion==2)将跳到step5自动发“申请未批准”邮件通知步骤;
step3 是人力资源主管审批,如果审批同意(opinion!=2)将跳到step4自动发“申请批准”邮件通知步骤,如果审批不同意(opinion==2)将跳到step5自动发“申请未批准”邮件通知步骤;
step4和step5都是自动发送邮件通知步骤,执行完之后跳到空步骤step6结束该工作流实例。
工作流定义文件
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE workflow PUBLIC "-//OpenSymphony Group//DTD OSWorkflow 2.6//EN" "http://www.opensymphony.com/osworkflow/workflow_2_8.dtd"> <workflow> <initial-actions> <action id="100" name="启动请假申请工作流"> <results> <unconditional-result old-status="Finished" status="Underway" step="1"/> </results> </action> </initial-actions> <steps> <step id="1" name="请假申请"> <actions> <action id="1" name="提交需求申请"> <restrict-to> <conditions type="AND"> <condition type="class"> <arg name="class.name">com.opensymphony.workflow.util.OSUserGroupCondition</arg> <arg name="group">employee</arg> </condition> </conditions> </restrict-to> <pre-functions> <function type="class"> <arg name="class.name">com.qiny.leave.ApplyFunction</arg> </function> </pre-functions> <results> <result old-status="Finished" status="Underway" step="2" owner="manager1"> <conditions type="AND"> <condition type="beanshell"> <arg name="script"> propertySet.getInt("dayCount")>3 </arg> </condition> </conditions> <post-functions> <function type="beanshell"> <arg name="script"> System.out.println("步骤 1 提交需求申请 满足条件结果 需部门经理审批..."); </arg> </function> </post-functions> </result> <unconditional-result old-status="Finished" status="Underway" step="3" owner="hr1"/> </results> </action> </actions> </step> <step id="2" name="请假申请审核"> <actions> <action id="2" name="部门主管审批请假申请"> <restrict-to> <conditions type="AND"> <condition type="beanshell"> <arg name="script">true</arg> </condition> <condition type="class"> <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.OSUserGroupCondition</arg> <arg name="group">manager</arg> </condition> </conditions> </restrict-to> <pre-functions> <function type="class"> <arg name="class.name">com.qiny.leave.ApproveFunction</arg> </function> </pre-functions> <results> <result old-status="Finished" status="Underway" step="5"> <conditions type="AND"> <condition type="beanshell"> <arg name="script"> propertySet.getInt("opinion")==2 </arg> </condition> </conditions> <post-functions> <function type="beanshell"> <arg name="script"> System.out.println("步骤 2 请假申请审核 部门经理审批没有通过 ..."); </arg> </function> </post-functions> </result> <unconditional-result old-status="Finished" status="Underway" step="3" owner="hr1"/> </results> </action> </actions> </step> <step id="3" name="请假申请审核"> <actions> <action id="3" name="人力资源主管审批请假申请"> <pre-functions> <function type="class"> <arg name="class.name">com.qiny.leave.ApproveFunction</arg> </function> </pre-functions> <results> <result old-status="Finished" status="Underway" step="5"> <conditions type="AND"> <condition type="beanshell"> <arg name="script"> propertySet.getInt("opinion")==2 </arg> </condition> </conditions> </result> <unconditional-result old-status="Finished" status="Underway" step="5"/> </results> </action> </actions> </step> <step id="4" name="请假申请结果通知"> <actions> <action id="4" auto="true" name="请假申请获准邮件通知"> <pre-functions> <function type="beanshell"> <arg name="script"> System.out.println("步骤 4 自动动作 请假申请获准邮件通知 Send mail 祝贺你$$$$$$$"); </arg> </function> </pre-functions> <results> <unconditional-result old-status="Finished" status="Finished" step="6"/> </results> </action> </actions> </step> <step id="5" name="请假申请结果通知"> <actions> <action id="5" auto="true" name="请假申请没能获准邮件通知"> <pre-functions> <function type="beanshell"> <arg name="script"> System.out.println("步骤 5 自动动作 请假申请没能获准邮件通知 Send mail 很抱歉$$$$$$$"); </arg> </function> </pre-functions> <results> <unconditional-result old-status="Finished" status="Finished" step="6"/> </results> </action> </actions> </step> <step id="6" name="flow over"> </step> </steps> </workflow>
回家了,明天再对一些程序进行说明
可以下载附件,建立工程后执行,数据库中有三个用户:employee1表示员工,可以提交请假申请;manager1表示部门主管;hr1表示人力资源主管,密码都是test
- leaveApprove.rar (2.7 MB)
- 描述: 程序源文件和需要的lib
- 下载次数: 13282
- databaseAndConfig.rar (2.3 KB)
- 描述: 数据库表创建及数据初始化文件 数据源配置文件
- 下载次数: 5181
评论
31 楼
qinysong
2007-08-02
to:zhangyqpost
tomcat下都一样,只是数据源配置一下即可
tomcat下都一样,只是数据源配置一下即可
30 楼
zhangyqpost
2007-08-02
非常感谢楼主把这么好的东西贡献出来.
你用的是jboss,能把tomcat的配置也写出来吧?谢谢.
你用的是jboss,能把tomcat的配置也写出来吧?谢谢.
29 楼
lfh220
2007-08-02
登录可以了,就是申请的时候会出现“提交请假申请时出现异常,可能没有增加您提交需求的权限”
这是什么原因呢?
哪位有没有关于osworkflow方面的电子书,可以发一分给我吗?email:lfh4961983@163.com
这是什么原因呢?
哪位有没有关于osworkflow方面的电子书,可以发一分给我吗?email:lfh4961983@163.com
28 楼
qinysong
2007-07-31
to:lfh220
用什么驱动没有关系,都是可以的,我只是随便用了一个;
结果连登录都不行,那就根据后台显示的异常信息进行检查
用什么驱动没有关系,都是可以的,我只是随便用了一个;
结果连登录都不行,那就根据后台显示的异常信息进行检查
27 楼
lfh220
2007-07-31
你好,我想把这个工程放在tomcat下运行,另外我没用JSQLConnect这种方式,而是用jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=osworkflow_app,结果连登录都不行。小弟刚开始接触这个,希望。QQ:251713646
希望大家,谢谢
希望大家,谢谢
26 楼
qinysong
2007-07-27
你的session.getAttribute("username")取值是多少
看异常信息是插入的纪录OWNER字段违反外键约束,你看看取出的数据和os_user表中数据是否一致。
如果正常登陆,应该不会出现不一致的问题,检查检查
看异常信息是插入的纪录OWNER字段违反外键约束,你看看取出的数据和os_user表中数据是否一致。
如果正常登陆,应该不会出现不一致的问题,检查检查
25 楼
classicbride
2007-07-27
Workflow wf = new BasicWorkflow((String) session.getAttribute("username"));
Map map = new HashMap();
map.put("applicant", applicant);
map.put("reason", reason);
map.put("dayCount", new Integer(dayCount));
try {
long wfid = wf.initialize("leave_apply", 100, null);
为什么我启用一个工作流的时候会报这个错呢?
DEBUG [(opensymphony.workflow.AbstractWorkflow)] Outcome: stepId=1, status=Underway, owner=, actionId=100, currentStep=0
DEBUG [(spi.jdbc.JDBCWorkflowStore)] Executing SQL statement: INSERT INTO OS_CURRENTSTEP (ID,ENTRY_ID, STEP_ID, ACTION_ID, OWNER, START_DATE, DUE_DATE, FINISH_DATE, STATUS, CALLER ) VALUES (?, ?, ?, null, ?, ?, ?, null, ?, null)
com.opensymphony.workflow.StoreException: Unable to create current step for workflow instance #7: root cause: Cannot add or update a child row: a foreign key constraint fails (`workflowtest/os_currentstep`, CONSTRAINT `os_currentstep_ibfk_2` FOREIGN KEY (`OWNER`) REFERENCES `os_user` (`USERNAME`))
owner没有值造成的...而我session.getAttribute("username")是可以取得值的...??
Map map = new HashMap();
map.put("applicant", applicant);
map.put("reason", reason);
map.put("dayCount", new Integer(dayCount));
try {
long wfid = wf.initialize("leave_apply", 100, null);
为什么我启用一个工作流的时候会报这个错呢?
DEBUG [(opensymphony.workflow.AbstractWorkflow)] Outcome: stepId=1, status=Underway, owner=, actionId=100, currentStep=0
DEBUG [(spi.jdbc.JDBCWorkflowStore)] Executing SQL statement: INSERT INTO OS_CURRENTSTEP (ID,ENTRY_ID, STEP_ID, ACTION_ID, OWNER, START_DATE, DUE_DATE, FINISH_DATE, STATUS, CALLER ) VALUES (?, ?, ?, null, ?, ?, ?, null, ?, null)
com.opensymphony.workflow.StoreException: Unable to create current step for workflow instance #7: root cause: Cannot add or update a child row: a foreign key constraint fails (`workflowtest/os_currentstep`, CONSTRAINT `os_currentstep_ibfk_2` FOREIGN KEY (`OWNER`) REFERENCES `os_user` (`USERNAME`))
owner没有值造成的...而我session.getAttribute("username")是可以取得值的...??
24 楼
classicbride
2007-07-26
我又来了... 本来从来没有玩过这个... 看到楼主贴的这个后 才开始在弄..很好 学到不少东东.. 我现在能走到 提交请假表单了...谢谢哈.. 我用的Mysql和Tomcat...
但是 到起动工作流程时出错了...
DEBUG [(spi.jdbc.JDBCWorkflowStore)] Executing SQL statement: INSERT INTO OS_CURRENTSTEP (ID,ENTRY_ID, STEP_ID, ACTION_ID, OWNER, START_DATE, DUE_DATE, FINISH_DATE, STATUS, CALLER ) VALUES (?, ?, ?, null, ?, ?, ?, null, ?, null)
这条sql没有能写入数据库... 搞不懂为什么写不进去?
另外,楼主有没有这方面的电子书呀..有的话发一本,谢谢...
classicbride@126.com
23 楼
philip_kissme
2007-07-24
挺好简单的例子可以给初学者一个形象的概念
jbpm底层一定要用hibernate,要是有jdbc实现就好了
jbpm底层一定要用hibernate,要是有jdbc实现就好了
22 楼
lichong712
2007-07-23
可能是中文问题,把system.out.println()的中文去掉,就好了
21 楼
lichong712
2007-07-20
employee1请假提交没问题。
manager1审核同意没问题,但是manager1审核不同意和
hr1审核同意或不同意都会就出现上面的错误。
数据库里面我看审核结果是正确的,在bus_leaveApprove表中已存上相关记录。
配置文件我都没改过。不知道是怎么回事?谢谢了!
manager1审核同意没问题,但是manager1审核不同意和
hr1审核同意或不同意都会就出现上面的错误。
数据库里面我看审核结果是正确的,在bus_leaveApprove表中已存上相关记录。
配置文件我都没改过。不知道是怎么回事?谢谢了!
20 楼
qinysong
2007-07-19
to:lichong712
前面几个步骤如何,hr1审核同意怎样,会出这个问题吗
前面几个步骤如何,hr1审核同意怎样,会出这个问题吗
19 楼
qinysong
2007-07-19
to:lichong712
前面几个步骤如何?hr1审核同意时,可以跑吗
前面几个步骤如何?hr1审核同意时,可以跑吗
18 楼
lichong712
2007-07-19
请问一下,我用hr1审核时报错
ERROR [(util.beanshell.BeanShellFunctionProvider)] Evaluation error while running BSH function script
Sourced file: <Inline eval of:
System.out.println("步骤 5 自动动作 请假申请没能获准邮件通知 Send mail 很抱歉$$$$$$$");
; > Token Parsing Error: Lexical error at line 2, column 62. Encountered: " " (32), after : "\"e\u00a4 5 \u00ea\u00a8\u00a8\\": <at unknown location>
at bsh.Interpreter.eval(Unknown Source)
这是什么问题啊?谢谢了
ERROR [(util.beanshell.BeanShellFunctionProvider)] Evaluation error while running BSH function script
Sourced file: <Inline eval of:
System.out.println("步骤 5 自动动作 请假申请没能获准邮件通知 Send mail 很抱歉$$$$$$$");
; > Token Parsing Error: Lexical error at line 2, column 62. Encountered: " " (32), after : "\"e\u00a4 5 \u00ea\u00a8\u00a8\\": <at unknown location>
at bsh.Interpreter.eval(Unknown Source)
这是什么问题啊?谢谢了
17 楼
qinysong
2007-07-19
classicbride 写道
请教一下 那个OSUser 我怎么用不了...
UserManager userManager = UserManager.getInstance();时userManager为null;
com.opensymphony.user.UserManagerImplementationException: The configuration file osuser.xml could not be found.
我把osuser.xml放到src下了...
哪里不对???谢谢
UserManager userManager = UserManager.getInstance();时userManager为null;
com.opensymphony.user.UserManagerImplementationException: The configuration file osuser.xml could not be found.
我把osuser.xml放到src下了...
哪里不对???谢谢
你检查一下生成的部署war包里,相应的目录(类似WebModule.war\WEB-INF\classes)里有没有那个xml文件
16 楼
qinysong
2007-07-19
agile_boy 写道
数据库脚本,可否更标准些啊,比如我想在mysql下运行,是不是会有问题啊
在osworkflow的官方网站下载包中,有对应各种类型的数据库创建文件;
附件是上面示例的mysql数据库脚本,不过没有测试过
15 楼
classicbride
2007-07-19
请教一下 那个OSUser 我怎么用不了...
UserManager userManager = UserManager.getInstance();时userManager为null;
com.opensymphony.user.UserManagerImplementationException: The configuration file osuser.xml could not be found.
我把osuser.xml放到src下了...
哪里不对???谢谢
UserManager userManager = UserManager.getInstance();时userManager为null;
com.opensymphony.user.UserManagerImplementationException: The configuration file osuser.xml could not be found.
我把osuser.xml放到src下了...
哪里不对???谢谢
14 楼
agile_boy
2007-07-19
数据库脚本,可否更标准些啊,比如我想在mysql下运行,是不是会有问题啊
13 楼
stworthy
2007-07-18
<p>对前面的流程改用YAML描述一下:</p>
<div class='code_title'>ruby 代码</div>
<div class='dp-highlighter'>
<div class='bar'/>
<ol class='dp-rb'>
<li class='alt'><span><span>workflow: </span></span></li>
<li class=''><span> init-actions: </span></li>
<li class='alt'><span> 1: </span></li>
<li class=''><span> name: 启动请假申请工作流 </span></li>
<li class='alt'><span> results: </span></li>
<li class=''><span> - </span></li>
<li class='alt'><span> step: 1 </span></li>
<li class=''><span> status: Underway </span></li>
<li class='alt'><span> owner: employee </span></li>
<li class=''><span> steps: </span></li>
<li class='alt'><span> 1: </span></li>
<li class=''><span> name: 请假申请 </span></li>
<li class='alt'><span> actions: </span></li>
<li class=''><span> 1: </span></li>
<li class='alt'><span> name: 提交需求申请 </span></li>
<li class=''><span> condition: </span><span class='variable'>@wf_params</span><span>['group']=='employee' </span></li>
<li class='alt'><span> after-action: | </span></li>
<li class=''><span> </span><span class='keyword'>if</span><span> curr_instance_step(1).owner=='manager' </span></li>
<li class='alt'><span> puts </span><span class='string'>"步骤 1 提交需求申请 满足条件结果 需部门经理审批..."</span><span> </span></li>
<li class=''><span> </span><span class='keyword'>end</span><span> </span></li>
<li class='alt'><span> results: </span></li>
<li class=''><span> - </span></li>
<li class='alt'><span> condition: </span><span class='variable'>@wf_params</span><span>['dayCount']>3 </span></li>
<li class=''><span> step: 2 </span></li>
<li class='alt'><span> status: Underway </span></li>
<li class=''><span> owner: manager </span></li>
<li class='alt'><span> - </span></li>
<li class=''><span> step: 3 </span></li>
<li class='alt'><span> status: Underway </span></li>
<li class=''><span> owner: hrl </span></li>
<li class='alt'><span> 2: </span></li>
<li class=''><span> name: 请假申请审核 </span></li>
<li class='alt'><span> actions: </span></li>
<li class=''><span> 1: </span></li>
<li class='alt'><span> name: 部门主管审批请假申请 </span></li>
<li class=''><span> condition: curr_instance_step(2).status=='Underway' </span><span class='keyword'>and</span><span> </span><span class='variable'>@wf_params</span><span>['group']=='manager' </span></li>
<li class='alt'><span> results: </span></li>
<li class=''><span> - </span></li>
<li class='alt'><span> condition: </span><span class='variable'>@wf_params</span><span>['opinion']==2 </span></li>
<li class=''><span> step: 5 </span></li>
<li class='alt'><span> status: Underway </span></li>
<li class=''><span> - </span></li>
<li class='alt'><span> step: 3 </span></li>
<li class=''><span> status: Underway </span></li>
<li class='alt'><span> owner: hrl </span></li>
<li class=''><span> 3: </span></li>
<li class='alt'><span> name: 请假申请审核 </span></li>
<li class=''><span> actions: </span></li>
<li class='alt'><span> 1: </span></li>
<li class=''><span> name: 人力资源主管审批请假申请 </span></li>
<li class='alt'><span> results: </span></li>
<li class=''><span> - </span></li>
<li class='alt'><span> condition: </span><span class='variable'>@wf_params</span><span>['opinion']==2 </span></li>
<li class=''><span> step: 5 </span></li>
<li class='alt'><span> status: Underway </span></li>
<li class=''><span> - </span></li>
<li class='alt'><span> step: 5 </span></li>
<li class=''><span> status: Underway </span></li>
<li class='alt'><span> 4: </span></li>
<li class=''><span> name: 请假申请结果通知 </span></li>
<li class='alt'><span> actions: </span></li>
<li class=''><span> 1: </span></li>
<li class='alt'><span> name: 请假申请获准邮件通知 </span></li>
<li class=''><span> auto: </span><span class='keyword'>true</span><span> </span></li>
<li class='alt'><span> before-acton: | </span></li>
<li class=''><span> puts </span><span class='string'>"步骤 4 自动动作 请假申请获准邮件通知 Send mail 祝贺你"</span><span> </span></li>
<li class='alt'><span> results: </span></li>
<li class=''><span> - </span></li>
<li class='alt'><span> step: 6 </span></li>
<li class=''><span> status: Finished </span></li>
<li class='alt'><span> 5: </span></li>
<li class=''><span> name: 请假申请结果通知 </span></li>
<li class='alt'><span> actions: </span></li>
<li class=''><span> 1: </span></li>
<li class='alt'><span> name: 请假申请没能获准邮件通知 </span></li>
<li class=''><span> before-action: | </span></li>
<li class='alt'><span> puts </span><span class='string'>"步骤 5 自动动作 请假申请没能获准邮件通知 Send mail 很抱歉$$$$$$$"</span><span> </span></li>
<li class=''><span> results: </span></li>
<li class='alt'><span> - </span></li>
<li class=''><span> step: 6 </span></li>
<li class='alt'><span> status: Finished </span></li>
<li class=''><span> 6: </span></li>
<li class='alt'><span> name: flow over </span></li>
<li class=''><span> </span></li>
</ol>
</div>
<div class='code_title'>ruby 代码</div>
<div class='dp-highlighter'>
<div class='bar'/>
<ol class='dp-rb'>
<li class='alt'><span><span>workflow: </span></span></li>
<li class=''><span> init-actions: </span></li>
<li class='alt'><span> 1: </span></li>
<li class=''><span> name: 启动请假申请工作流 </span></li>
<li class='alt'><span> results: </span></li>
<li class=''><span> - </span></li>
<li class='alt'><span> step: 1 </span></li>
<li class=''><span> status: Underway </span></li>
<li class='alt'><span> owner: employee </span></li>
<li class=''><span> steps: </span></li>
<li class='alt'><span> 1: </span></li>
<li class=''><span> name: 请假申请 </span></li>
<li class='alt'><span> actions: </span></li>
<li class=''><span> 1: </span></li>
<li class='alt'><span> name: 提交需求申请 </span></li>
<li class=''><span> condition: </span><span class='variable'>@wf_params</span><span>['group']=='employee' </span></li>
<li class='alt'><span> after-action: | </span></li>
<li class=''><span> </span><span class='keyword'>if</span><span> curr_instance_step(1).owner=='manager' </span></li>
<li class='alt'><span> puts </span><span class='string'>"步骤 1 提交需求申请 满足条件结果 需部门经理审批..."</span><span> </span></li>
<li class=''><span> </span><span class='keyword'>end</span><span> </span></li>
<li class='alt'><span> results: </span></li>
<li class=''><span> - </span></li>
<li class='alt'><span> condition: </span><span class='variable'>@wf_params</span><span>['dayCount']>3 </span></li>
<li class=''><span> step: 2 </span></li>
<li class='alt'><span> status: Underway </span></li>
<li class=''><span> owner: manager </span></li>
<li class='alt'><span> - </span></li>
<li class=''><span> step: 3 </span></li>
<li class='alt'><span> status: Underway </span></li>
<li class=''><span> owner: hrl </span></li>
<li class='alt'><span> 2: </span></li>
<li class=''><span> name: 请假申请审核 </span></li>
<li class='alt'><span> actions: </span></li>
<li class=''><span> 1: </span></li>
<li class='alt'><span> name: 部门主管审批请假申请 </span></li>
<li class=''><span> condition: curr_instance_step(2).status=='Underway' </span><span class='keyword'>and</span><span> </span><span class='variable'>@wf_params</span><span>['group']=='manager' </span></li>
<li class='alt'><span> results: </span></li>
<li class=''><span> - </span></li>
<li class='alt'><span> condition: </span><span class='variable'>@wf_params</span><span>['opinion']==2 </span></li>
<li class=''><span> step: 5 </span></li>
<li class='alt'><span> status: Underway </span></li>
<li class=''><span> - </span></li>
<li class='alt'><span> step: 3 </span></li>
<li class=''><span> status: Underway </span></li>
<li class='alt'><span> owner: hrl </span></li>
<li class=''><span> 3: </span></li>
<li class='alt'><span> name: 请假申请审核 </span></li>
<li class=''><span> actions: </span></li>
<li class='alt'><span> 1: </span></li>
<li class=''><span> name: 人力资源主管审批请假申请 </span></li>
<li class='alt'><span> results: </span></li>
<li class=''><span> - </span></li>
<li class='alt'><span> condition: </span><span class='variable'>@wf_params</span><span>['opinion']==2 </span></li>
<li class=''><span> step: 5 </span></li>
<li class='alt'><span> status: Underway </span></li>
<li class=''><span> - </span></li>
<li class='alt'><span> step: 5 </span></li>
<li class=''><span> status: Underway </span></li>
<li class='alt'><span> 4: </span></li>
<li class=''><span> name: 请假申请结果通知 </span></li>
<li class='alt'><span> actions: </span></li>
<li class=''><span> 1: </span></li>
<li class='alt'><span> name: 请假申请获准邮件通知 </span></li>
<li class=''><span> auto: </span><span class='keyword'>true</span><span> </span></li>
<li class='alt'><span> before-acton: | </span></li>
<li class=''><span> puts </span><span class='string'>"步骤 4 自动动作 请假申请获准邮件通知 Send mail 祝贺你"</span><span> </span></li>
<li class='alt'><span> results: </span></li>
<li class=''><span> - </span></li>
<li class='alt'><span> step: 6 </span></li>
<li class=''><span> status: Finished </span></li>
<li class='alt'><span> 5: </span></li>
<li class=''><span> name: 请假申请结果通知 </span></li>
<li class='alt'><span> actions: </span></li>
<li class=''><span> 1: </span></li>
<li class='alt'><span> name: 请假申请没能获准邮件通知 </span></li>
<li class=''><span> before-action: | </span></li>
<li class='alt'><span> puts </span><span class='string'>"步骤 5 自动动作 请假申请没能获准邮件通知 Send mail 很抱歉$$$$$$$"</span><span> </span></li>
<li class=''><span> results: </span></li>
<li class='alt'><span> - </span></li>
<li class=''><span> step: 6 </span></li>
<li class='alt'><span> status: Finished </span></li>
<li class=''><span> 6: </span></li>
<li class='alt'><span> name: flow over </span></li>
<li class=''><span> </span></li>
</ol>
</div>
12 楼
hill123
2007-07-17
下载来看看
相关推荐
这个开源项目为开发者提供了灵活的工作流定义和执行能力,使得在系统中实现如请假审批这样的业务流程变得简单。在这个"OSWorkflow——请假审批系统(代码全,数据库mysql)"中,我们能看到一个基于OSWorkflow实现的请假...
OsWorkflow是一款开源的工作流引擎,它为应用程序提供了一种灵活且可扩展的方式来管理业务流程。在本实例中,我们将深入探讨OsWorkflow的核心概念、主要功能以及如何创建和测试一个工作流实例。 工作流引擎是软件...
这个示例提供了一个完整的osworkflow与Eclipse结合的请假审批流程,它不仅展示了osworkflow的工作流管理能力,还演示了如何将工作流引擎与实际业务逻辑相结合,为实际的企业应用提供了参考。通过学习和实践这个示例...
OSworkflow(OpenSymphony Workflow)是一个开源的工作流管理系统,它提供了强大的流程定义和执行的能力,广泛应用于企业级应用中,如请假流程等业务场景。在本实例中,我们将深入探讨如何利用OSworkflow来实现一个...
OSWorkFlow是一个强大的工作流引擎,它在IT领域中被广泛应用来实现业务流程自动化。工作流,简单来说,就是一系列相互关联的任务,按照特定的顺序执行,以完成一个业务过程。OSWorkFlow作为开源的工作流解决方案,为...
osWorkflow(简称OSW)是一个开源的工作流引擎,它允许开发者在应用程序中定义、管理和执行工作流程。这个实例是基于OSW的请假申请流程,使用了Tomcat 6.0作为应用服务器,Oracle数据库作为数据存储,并且可以方便地...
OSWorkflow(OpenSymphony Workflow)是一个开源的工作流引擎,它提供了一种灵活的方式来设计、实施和管理业务流程。本篇文章将深入探讨OSWorkflow的工作原理及其应用实例。 OSWorkflow的核心概念包括工作流定义、...
标题提到的"yy.rar_DEMO_demo osworkflow_流程引擎_请假流程引擎"是一个基于osWorkflow的工作流引擎的演示项目,专门设计用来展示如何实现请假流程。osWorkflow是一款开源的工作流引擎,它允许开发者定义、执行和...
通过基于osworkflow的OA系统DEMO,我们可以学习到如何利用工作流引擎实现业务流程自动化,提高办公效率。同时,osworkflow的灵活性和强大功能,使其成为构建复杂OA系统时的理想选择。理解并掌握osworkflow的使用,...
Osworkflow 是一个开源的工作流引擎,它为应用程序提供了一种灵活的方式来管理业务流程。这个入门级的例子将带你了解 Osworkflow2.8 的基本概念和如何在项目中简单地实现工作流。 Osworkflow 提供了一个强大的框架...
2. **osWorkFlow架构**:了解osWorkFlow的设计原理和组件,如流程定义、流程实例、任务服务、持久化机制等,这有助于你构建和维护工作流系统。 3. **流程定义**:学习如何使用XML或图形工具(如FlowDesigner)来...
osWorkflow 是一个开源的工作流引擎,它主要用于设计和执行复杂的业务流程。这个“osworkflow 工作流demo”提供了一个具体的应用示例,演示了如何使用 osWorkflow 实现请假审批这样的工作流程。osWorkflow 提供了...
osworkflow是一款开源的工作流引擎,它提供了灵活的工作流程定义和执行管理功能。在Java应用中,osworkflow常常与Spring和Hibernate这两个主流的框架结合使用,以实现业务流程的自动化处理。本篇文章将深入探讨如何...
在"osworkflow_leaveApprove_mysql"项目中,我们看到的是一个基于OSWorkflow的请假审批流程示例,专为初学者设计,帮助他们快速理解和掌握工作流系统的运作原理。 MySQL作为全球最受欢迎的开源关系型数据库管理系统...
OSWorkflow 是一个开源的工作流引擎,它允许开发者在应用程序中实现复杂的业务流程。这个中文手册是为了解决中文用户在理解和使用OSWorkflow时的语言障碍,提供详细的指南和实例解析。 工作流引擎是软件系统中一个...
OSWorkflow,全称为OpenSymphony Workflow,是一款开源的工作流引擎,用于在应用程序中实现复杂的业务流程。这个项目由OpenSymphony Group开发,现在已经并入到Atlassian的Confluence产品中。OSWorkflow提供了一种...
OSWorkflow 是一个强大的工作流引擎,它允许开发者在应用程序中实现复杂的业务流程。在这个"可以请假的小例子"中,我们将探讨如何使用OSWorkflow与MySQL数据库、Tomcat应用服务器以及Eclipse开发环境集成,来创建一...
OSWorkflow 是一个开源的工作流引擎,它允许开发者在应用程序中实现复杂的业务流程。这个框架提供了灵活的流程定义、状态跟踪、任务分配以及事件通知等功能,使得开发人员能够轻松地创建和管理动态工作流程。本文将...
OsWorkFlow,作为一款开源的工作流引擎,它提供了强大的流程图绘制功能,并支持自定义流程逻辑。在本文中,我们将深入探讨如何利用OsWorkFlow来创建和管理流程图,并通过源码分析,理解其实现原理。 首先,我们要...