转载,原文地址:http://bluewens.blog.163.com/blog/static/6991307200991005424525/
目前本人正在研发一个基于JAVA技术的OA软件,功能很全,最核心的功能就算是工作流了。说到工作流,自然要想到工作流引擎,感觉自己开发一个,太耗时,因此,想到用网上的开源工作流引擎。搜索了许多工作流引擎,对我来说,感觉最好的还是osworkflow工作流引擎。
为何这样说呢?因为osworkflow是一种基于有限状态机的工作流引擎技术。个人感觉以状态+设定的规则自由灵活地引导工作流转,这正是OA应用所必需的,具有简单灵活等优点,但缺点就是目前其官方网站提供的工作流设计器不好用,需要自己设计,另外,内置的用户管理系统(即用户表,用户组表和角色表)均太过简单,也太过死板,还需要根据自己的应用来自定义。
下面将以第一个osworkflow demo程序来开始研究如何应用osworkflow。
首先,到osworkflow的官方网站http://www.opensymphony.com/osworkflow/,下载一个最新的osworkflow-2.8.0.zip,解压后,里面除了源码之外,还提供了一个osworkflow-2.8.0-example.war示例,我们就从这个示例开始下手。
第二步,将osworkflow-2.8.0-example.war重命名成osworkflow_demo.war包。然后将其拷贝到tomcat6.0的webapps目录(如G:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps)下面。如果tomcat6.0正在运行状态,则tomcat6.0会自动将该war包解压分发到osworkflow_demo目录。
第三步,打开IE浏览器,输入http://localhost:8080/osworkflow_demo/ ,然后就可以看到效果。
值得一提的是,osworkflow内置的示例程序,用的是内存模式保存流程步骤,用户数据。用户在此示例网站改动的数据数据均保存在WEB-INF\classes的osuser.xml或者example.xml中,要实现数据的可执久化(即保存到数据库),需要对osworkflow进行更深入的研究。
下面我们来研究这个示例网站的使用,顺便领会一下它的设计思路,从中找出窍门,以便以后我们要把osworkflow技术很好地应用在我们的OA中。
首先,我们登录http://localhost:8080/osworkflow_demo/,自动重置到默认的主页http://localhost:8080/osworkflow_demo/default.jsp。上面的英文说的是要我们创建一个帐号,当然,我们也可以将test作为用户名,test作为密码来登录。主页下面是一张稿件审批流程图,用户登录后,新建流程,每执行一步工作流均按此流程图相符合,并且每执行一步均可点击Viw Live Graph 查看执行效果。
其主要流程是:开始—>初稿->编辑稿件->审稿->发稿.(但值得提示的是,本示例并不是直接走这个流程,而是有一些曲折,详见下述)。因为如果初稿准备的不好或者要进行一些设计,就要走以下的流程。
开始->初稿(First Draft)->稿件设计这时要分出来2步(Foo和Bar),Bar的下步流程是Bax,只有Foo和Bar及Baz均完成,才能进行下一步编辑稿件 Edit Doc,接着是初次审稿Review Doc,初审过后,可能要进行多次的复审(Second Review),如果不进行多次的复审,也可能直接就发稿(Public Doc)了.此时流程就结束了。
总之,这个示例很符合日常工作的场景。
让我们来以test作为用户名和密码登录一下,体验osworkflow的应用吧。
1.登录http://localhost:8080/osworkflow_demo/nav.jsp,
可以点击Home 返回首页,点击New Workflow 新建流程(本示例新建5个流程,即1,2,3,4,5),点击My Underway Workflows 查看自己下面所有的流程。
在文本框中输入数字,如1,然后选择VIEW,则查看到流程1的执行状态。见下图
Permissions
Step | Act | Status | Owner | Start Date | Finish Date | Previous |
---|---|---|---|---|---|---|
Publish Doc (14) | NONE | Finished | test | Sat Oct 10 00:59:03 CST 2009 | null | 13, |
Publish Doc (13) | Publish Document | Finished | test | Sat Oct 10 00:59:01 CST 2009 | Sat Oct 10 00:59:03 CST 2009 | 12, |
Review Doc (12) | Publish Doc | Finished | test | Sat Oct 10 00:58:52 CST 2009 | Sat Oct 10 00:59:01 CST 2009 | 11, |
Second Review (11) | Finish Second Review | Finished | test | Sat Oct 10 00:58:43 CST 2009 | Sat Oct 10 00:58:52 CST 2009 | 10, |
Second Review (10) | Sign Up For Second Review | Finished | Sat Oct 10 00:58:35 CST 2009 | Sat Oct 10 00:58:43 CST 2009 | 9, | |
Review Doc (9) | Peer Review | Finished | test | Sat Oct 10 00:57:34 CST 2009 | Sat Oct 10 00:58:35 CST 2009 | 8, |
Edit Doc (8) | Finish Editing | Finished | test | Sat Oct 10 00:57:13 CST 2009 | Sat Oct 10 00:57:34 CST 2009 | 7, 5, |
Baz (7) | Finish Baz | Finished | test | Sat Oct 10 00:57:11 CST 2009 | Sat Oct 10 00:57:13 CST 2009 | 6, |
Bar (6) | Finish Bar | Finished | test | Sat Oct 10 00:56:43 CST 2009 | Sat Oct 10 00:57:11 CST 2009 | 1, |
Foo (5) | Finish Foo | Finished | test | Sat Oct 10 00:56:43 CST 2009 | Sat Oct 10 00:56:58 CST 2009 | 1, |
First Draft (1) | Finish First Draft | Finished | test | Sat Oct 10 00:54:54 CST 2009 | Sat Oct 10 00:56:43 CST 2009 |
Home | New Workflow | My Underway Workflows
流程图的数据均保存在WEB-INF\classes\example.xml中,图片效果是从example.lyt.xml文件中将流程进一步解析出来的。