我也做了一个基于j2ee的工作流引擎

我前些日子做了一个工作流,引擎是用j2ee开发的,流程数据以及应用数据是存于数据库,流程描述是用xml文件表述,性能也很不错,可支持上百万的实例,1000在线用户,已经用在了多个项目,前段时间跟微软的合作一个项目,他们很感兴趣,已经将它移植到.NET,其实一句用起来简单,性能也不错,大致的特点如下,
1、该引擎与业务完全分离,开发业务的时候无须考虑流程,只需通过描述文件描述将各个信息孤岛联系起来,引擎自动分析页面信息,提取业务数据,分析数据根据描述条件自动扭转;同时在启动业务的时候将数据自动送给业务。当然业务无须处理任何工作流相关东西,只需在提交业务的时候加上一个固定的语句,一切都搞定
2、支持历史流程,可多版本共存;当然是支持热启动的,你可以任意修改流程描述文件,随时修改随时载入
3、提供数据挖掘,可分析查看多版本流程的每步执行时间,执行人,分析版本间的优劣,分析并提取出异常实例,异常步骤等等
4、当然了任意角色,任意扭转,你只需通过一个jsp或者一个java程序的角色和用户与描述文件中的执行人和角色影射
如果大家感兴趣可以和我联系
tigerliuyi@163.com
13102354060

非常不错,建议花点时间在开源网站申请一个项目,公开大家研究。
另外,电话号码不要留在网上,如果你需要去除电话,和我联系。

我想找一个开源工作流上载的地址,大家共同探讨一下,我想做一个二期版本,大致提供与聚合,以及以及与分支,以及嵌套流程,以及自动任务,大家用过后有什么好的想法可以email联系我
这个工作流引擎目前有两个版本,一个是。NET,一个是j2ee版本,从性能上j2ee版本要优越一些,前些日子用oracle数据库在del的服务器上做了压力测试,每秒的处理能力超过300个/秒,当时并发用户为500个,活动的工作流实例维持在10万左右,应该能满足大部分业务的需求。其实我这个工作流的特点就是简单,提供通用的ui界面,但是用jsp和asp,你如果用c/s的界面,你只能调用接口了,自己开发界面了。
当然你也需要做一些工作
1、本版本是用jboss3.0编译的,你如果用其他j2ee服务器自己编译一个版本
2、你需要通过一个机制映射你应用的角色与工作流的角色定义
例如:我提供了一个loadoperator.jsp页面你需要把你的profile和工作流的profile映射
yourprofile=session.getAttribute("yourprofile");
Operator workflowprofile=new Operator();
workflowprofile.setValidateUser(yourprofile.getUser());
workflowprofile.setRoles(yourprofile.getRoles());
3,你需要自己编写工作流描述文件,不过这很简单,我上次有个项目用三十多个流程,我编写完只需半天时间
4 业务需要自己开发了,我们的工作流只负责工作流的权限以及流程,而你的业务需要是基于b/s的,如果是c/s,需要修改,描述很简单
<WorkflowDesc name='business1' version='1.0' expiredtime='10000' isAreaControl='1' desc='业务1'>
<active no='1' name='用户填写申请单'>
<application name='1' type='url'>
<url>1.jsp<url>
</application>
<Operators>
<operator role='userlogin' type='creater'/>
</Operators>
<Parameters>
<Parameter name='usermessage' type='string' mode='OUT' desc='用户申请'/>
<Parameter name='usermoney' type='string' mode='OUT' desc='金额'/>
</Parameters>
<TransferCondtions>
<TransferConditon mode='out'>
<if>
<when condition='usermoney<1000'>
<goto next='terminate'>
</when>
<other >
<if>
<when condition='usermoney>10000'>
<goto next='complete'>
</when>
<other>
<goto next='2'>
</other>
</if>
</other>
<TransferConditon>
</TransferCondtions>
</active>
<active no='2' name='管理员审批'>
<application name='1' type='url'>
<url>2.jsp<url>
</application>
<Operators>
<operator role='admincheck' type='all'/>
<operator validater='tiger' type='single'/>
</Operators>
<Parameters>
<Parameter name='usermessage' type='string' mode='INOUT' desc='用户申请'/>
<Parameter name='usermoney' type='string' mode='INOUT' desc='金额'/>
<Parameter name='optiontype' type='string' mode='OUT' desc='审批意见' />
<Parameter name='optioncontent' type='string' mode='审批内容'/>
</Parameters>
<TransferCondtions>
<TransferConditon mode='out'>
<if>
<when condition='optiontype=1'>
<goto next='1'>
</when>
<other >
<goto next='complete'>
</other>
</if>
</other>
<TransferConditon>
</TransferCondtions>
</active>
你需要开发1.jsp,以及2.jsp,但他们不需要在一个web服务器上,例如1.jsp是在用户门户上,提交时需要在处理的action填加
如下代码:
WorkFlowEngineDelete engine=new WorkFlowEngineDelete();
try
{
//如果是来自业务处理后的参数
//request.setAttribute("yourparam",'11");
engine.flowgo(request);
//your business code
......
}catch(Exception ex)
{
if(!(ex instanceof WorkflowException))
{
engine.rollback();
}
}
当然你如果在ejb调用是不需要engine.rollback();
5 其他的就不用关心了,我提供了代办任务查询截面界面,流程查看界面,某个实例详细查看界面(可以将每步的由谁处理,处理时间,相应保存的应用数据显示出来)
你只需将这些页面挂到你的门户中去
6 如何启动一个新流程,这个提供多种方式,例如连接〈url href="workflowtransfer.jsp?workflowname=business1&workflowversion=1.0&activeno=1"
">申请报销〈/url>,它会自动转向你的界面,如果你修改了流程,只需将version=1.1,但以前申请的流程仍然存在
7 该工作流也支持分地域的处理,如果有需要可以给我说

我想找一个开源工作流上载的地址,大家共同探讨一下,我想做一个二期版本,大致提供与聚合,以及以及与分支,以及嵌套流程,以及自动任务,大家用过后有什么好的想法可以email联系我
这个工作流引擎目前有两个版本,一个是。NET,一个是j2ee版本,从性能上j2ee版本要优越一些,前些日子用oracle数据库在del的服务器上做了压力测试,每秒的处理能力超过300个/秒,当时并发用户为500个,活动的工作流实例维持在10万左右,应该能满足大部分业务的需求。其实我这个工作流的特点就是简单,提供通用的ui界面,但是用jsp和asp,你如果用c/s的界面,你只能调用接口了,自己开发界面了。
当然你也需要做一些工作
1、本版本是用jboss3.0编译的,你如果用其他j2ee服务器自己编译一个版本
2、你需要通过一个机制映射你应用的角色与工作流的角色定义
例如:我提供了一个loadoperator.jsp页面你需要把你的profile和工作流的profile映射
yourprofile=session.getAttribute("yourprofile");
Operator workflowprofile=new Operator();
workflowprofile.setValidateUser(yourprofile.getUser());
workflowprofile.setRoles(yourprofile.getRoles());
3,你需要自己编写工作流描述文件,不过这很简单,我上次有个项目用三十多个流程,我编写完只需半天时间
4 业务需要自己开发了,我们的工作流只负责工作流的权限以及流程,而你的业务需要是基于b/s的,如果是c/s,需要修改,描述很简单
〈〈〈〈WorkflowDesc name='business1' version='1.0' expiredtime='10000' isAreaControl='1' desc='业务1'>
<active no='1' name='用户填写申请单'>
<application name='1' type='url'>
<url>1.jsp<url>
</application>
<Operators>
<operator role='userlogin' type='creater'/>
</Operators>
<Parameters>
<Parameter name='usermessage' type='string' mode='OUT' desc='用户申请'/>
<Parameter name='usermoney' type='string' mode='OUT' desc='金额'/>
</Parameters>
<TransferCondtions>
<TransferConditon mode='out'>
<if>
<when condition='usermoney<1000'>
<goto next='terminate'>
</when>
<other >
<if>
<when condition='usermoney>10000'>
<goto next='complete'>
</when>
<other>
<goto next='2'>
</other>
</if>
</other>
<TransferConditon>
</TransferCondtions>
</active>
<active no='2' name='管理员审批'>
<application name='1' type='url'>
<url>2.jsp<url>
</application>
<Operators>
<operator role='admincheck' type='all'/>
<operator validater='tiger' type='single'/>
</Operators>
<Parameters>
<Parameter name='usermessage' type='string' mode='INOUT' desc='用户申请'/>
<Parameter name='usermoney' type='string' mode='INOUT' desc='金额'/>
<Parameter name='optiontype' type='string' mode='OUT' desc='审批意见' />
<Parameter name='optioncontent' type='string' mode='审批内容'/>
</Parameters>
<TransferCondtions>
<TransferConditon mode='out'>
<if>
<when condition='optiontype=1'>
<goto next='1'>
</when>
<other >
<goto next='complete'>
</other>
</if>
</other>
<TransferConditon>
</TransferCondtions>
</active>
你需要开发1.jsp,以及2.jsp,但他们不需要在一个web服务器上,例如1.jsp是在用户门户上,提交时需要在处理的action填加
如下代码:
WorkFlowEngineDelete engine=new WorkFlowEngineDelete();
try
{
//如果是来自业务处理后的参数
//request.setAttribute("yourparam",'11");
engine.flowgo(request);
//your business code
......
}catch(Exception ex)
{
if(!(ex instanceof WorkflowException))
{
engine.rollback();
}
}
当然你如果在ejb调用是不需要engine.rollback();
5 其他的就不用关心了,我提供了代办任务查询截面界面,流程查看界面,某个实例详细查看界面(可以将每步的由谁处理,处理时间,相应保存的应用数据显示出来)
你只需将这些页面挂到你的门户中去
6 如何启动一个新流程,这个提供多种方式,例如连接〈url href="workflowtransfer.jsp?workflowname=business1&workflowversion=1.0&activeno=1"
">申请报销〈/url>,它会自动转向你的界面,如果你修改了流程,只需将version=1.1,但以前申请的流程仍然存在
7 该工作流也支持分地域的处理,如果有需要可以给我说

〈〈〈WorkflowDesc name='business1' version='1.0' expiredtime='10000' isAreaControl='1' desc='业务1'>
〈〈〈active no='1' name='用户填写申请单'>
〈〈application name='1' type='url'>
〈url>1.jsp〈url>
〈/application>
〈Operators>
〈operator role='userlogin' type='creater'/>
〈/Operators>
〈Parameters>
〈Parameter name='usermessage' type='string' mode='OUT' desc='用户申请'/>
〈Parameter name='usermoney' type='string' mode='OUT' desc='金额'/>
〈/Parameters>
〈TransferCondtions>
〈TransferConditon mode='out'>
〈if>
〈when condition='usermoney〈1000'>
〈goto next='terminate'>
〈/when>
〈other >
〈if>
〈when condition='usermoney>10000'>
〈goto next='complete'>
〈/when>
〈other>
〈goto next='2'>
〈/other>
〈/if>
〈/other>
〈TransferConditon>
〈/TransferCondtions>
〈/active>
〈active no='2' name='管理员审批'>
〈application name='1' type='url'>
〈url>2.jsp〈url>
〈/application>
〈Operators>
〈operator role='admincheck' type='all'/>
〈operator validater='tiger' type='single'/>
〈/Operators>
〈Parameters>
〈Parameter name='usermessage' type='string' mode='INOUT' desc='用户申请'/>
〈Parameter name='usermoney' type='string' mode='INOUT' desc='金额'/>
〈Parameter name='optiontype' type='string' mode='OUT' desc='审批意见' />
〈Parameter name='optioncontent' type='string' mode='审批内容'/>
〈/Parameters>
〈TransferCondtions>
〈TransferConditon mode='out'>
〈if>
〈when condition='optiontype=1'>
〈goto next='1'>
〈/when>
〈other >
〈goto next='complete'>
〈/other>
〈/if>
〈/other>
〈TransferConditon>
〈/TransferCondtions>
〈/active>

你好:

我在一家事业单位工作,从事本单位的软件开发。我们有一个简单的工作流程项目,就是简单的文书流转。但是我想做成灵活、可扩充的工作流型。能给介绍一点经验或帮助吗?
本人的工作流基础基本是空白,还请指点,谢谢。

很感兴趣,能否提供项目的源码以及实例进行研究呢?近期也正在考虑将工作流加入到现有的项目中。非常感谢!

很有兴趣,赶快找个地方放出来吧。