-
2006年09月05日
工作流和MIS的关系
一些摘录:
流程控制和业务逻辑是不能完全分离的,只能实现松散耦合
各自为政的同时达到协同办公
这方面做得比较好的是BPEL,松耦合。
可定制可编排的服务。
工作流和MIS应该说是二种系统
现在有好多MIS是建立在工作流系统上的
工作流本身是一种支撑系统,得和别的管理系统结合才能用,本身单独用是没什么用处的
和别的管理系统结合也还是一个管理系统
工作流管理系统是包含工作流引擎和一些流程管理功能的系统
仅限工作流本身
其他管理系统可以建立在工作流管理系统之上
这二个不是简单的结合关系
是有层次的
你单独把工作流管理系统买给一个客户试试,看他们怎么去用
形象化一些,给我打个比方也行啊。
就比如流程定义不能把页面风格也订出来吧,还得用其他的系统来完成这些工作
比如说吧,一个政府单位要一个办公自动化系统,这里就需要一个工作流管理系统+业务管理系统,而且这些业务管理系统就是说建立在工作流管理系统之上的,用户看到的是一些业务界面,后台由工作流管理系统提供流程支撑 -
2006年07月06日
备忘:jbpm3 生成oracle 的建表脚本过程。
来自:(William(19694559) ),未测试过,不过应该可以,反正我自己生成mysql的建表脚本没有碰到什么困难。
jbpm3 生成oracle 的建表脚本过程。
1 下载jbpm-db 这个部件。我下载的是jbpm-starters-kit-3.1.zip ,里边就包含了jbpm-db部分。
2 修改 xx\jbpm-starters-kit-3.1\jbpm-db 下的 build.properties 文件中的 jbpm.3.location内容,
修改成你当前要用的jbpm的位置。我下载的是jbpm3.1,放在我自己的 E:\software\java\jbpm-3.1 这个位置。那么我们可以
把内容修改成:jbpm.3.location=E:\\software\\java\\jbpm-3.1\\ 。虽然jbpm的说明中建议用相对路径,可是不知道为什么在我机器上就不正常。不过这么写,也可以。其他内容不用改了。
3 修改 xx\jbpm-starters-kit-3.1\jbpm-db下的 build.xml 文件,这个文件中,虽然把oracle 或者db2的脚本生成进行了描述
但是却在编译命令中没有加载。所以我们只需要加一点内容就可以了:
找到下边内容
<target name="all.tests"
depends="daffodildb.test,derby.test,firebird.test,
hsqldb.test,mssql.test,mysql.test,postgresql.test,sybase.test"
description="test jBPM on all databases and produces html reports in the build directory"/><target name="all.scripts"
depends="prepare,daffodildb.scripts,derby.scripts,
firebird.scripts,hsqldb.scripts,mssql.scripts,mysql.scripts,
postgresql.scripts,sybase.scripts"
description="generates all database scripts for all databases in the build directory"/>
改成 <target name="all.tests"
depends="daffodildb.test,derby.test,firebird.test,
hsqldb.test,mssql.test,mysql.test,postgresql.test,oracle.test,sybase.test"
description="test jBPM on all databases and produces html reports in the build directory"/><target name="all.scripts"
depends="prepare,daffodildb.scripts,derby.scripts,
firebird.scripts,hsqldb.scripts,mssql.scripts,mysql.scripts,
postgresql.scripts,oracle.scripts,sybase.scripts"
description="generates all database scripts for all databases in the build directory"/>
相信我们也能看出来,这两段内容我们可以去掉那些你不想此次编译出来的脚本,比如不想编译出来 mysql的脚本
那么就把 mysql.test 和 mysql.scripts 去掉吧。别忘了逗号。
4 还剩下一步: 把oracle的驱动 (或db2的什么的)放在 xx\jbpm-starters-kit-3.1\jbpm-db\oracle\lib 下。
5 配置好你的ant,然后到 放在 xx\jbpm-starters-kit-3.1\jbpm-db\ 执行一下ant 就可以在xx\jbpm-starters-kit-3.1\jbpm-db\build
下去找你的脚本了。
6 当然还可以用其他工具来生成,因为所有这一切脚本都是基于hibernate的描述文件所生成的(jbpm中带的*.hbm.xml)。
7 上边所设计到目录的地方,有xx\ ,是你自己的某个目录而已。 -
2005年10月18日
结合ToolAgent与自定义数据类型实现下拉列表
Geeta的总结:
1. Using JaWE, defined in xpdl a new "Type declartion". Relevant props: Id="AgentListType", Type="External reference" and "Location=com.intellicare.shaleNShark.model.AgentListType"
2. Defined a new application "AgentListApp" with one formal param called "listParam", Mode="in and Out", type="Declared Type", and SubType="AgentListType"
3. Defined a new wfdata variable called "agentListWf", with type="declared type" and Subtype="AgentListType".
4. Finally, mapped the tool to my activity to an application "AgentListApp" in the usual way, with AppName as com.intellicare.shark.toolagent.AgentListToolAgent and mapping the formal to actual param etc again as usual.
the rest is easy: com.intellicare.shaleNShark.model.AgentListType is a class with just one attribute, String[].
com.intellicare.shark.toolagent.AgentListToolAgent has an public static void execute(AppParameter param1) which calls appropraite methods to populate my list of agnets, create a AgentListType object aList, then set the (in and out) param param1 with: param1.the_value = aList;
You should be able to do something very similar and thus avoid having to use servlets etc.. -
2005年09月15日
shark的学习路线
Geeta的总结。
Are you also new to workflow in general? In which case, you should try and read up on the WfMC specs. Here's a link I found really helpful for the definitions: http://www.wfmc.org/standards/docs/tc003v11.pdf
Once you have at least an overall idea of the specs and the definitions involved, you can look at JaWE, the java Workflow editor which ships with Shark. There is a tutorial in JaWE which is pretty helpful.
Then you can read up on Shark documentation on the Shark website. Especially look at all the links here: http://shark.objectweb.org/doc/1.1/index.html as well as http://shark.objectweb.org/doc/faq.html
There is also a "getting started" page which you can work through. Also, browse though the mail archives. There's a lot of stuff hidden there..
Finally if you are used to web applications, look at the code in http://shark.objectweb.org/components.html#_apps_ . It is a beginner's web app which uses Shark as a client and may help orient you.
-
2005年09月02日
how to use the Deadline Activity property
Q:
Can somebody explain how to use the Deadline Activity property? I have the case that I will need to instantiate a process and set a variable, let say start_date, to the date that this process was instantiated. After that in one of its activities, say Activity1 I want to make a deadline such that if (start_date+2days) have passed it will move to the next activity if not triggered manually? Is this possible to be done and if so how?
A:
Set the deadline to Synchronous and enter as condition something like:
var d = new java.util.Date(start_date.getTime() + WAIT_TIME_OUT);
d;
where start_date is of type Date and WAIT_TIME_OUT is in milliseconds. WAIT_TIME_OUT can be a process- or package-level WRD with initial value (some kind of constant), or just a numeric value - it is your choice.
Fill in the Exception name with some meaningfull string, for example
TimeToContinueException
Then set two outgoing transitions:
- By exception ("TimeToContinueException");
- By condition - the normal activity completion.
If you need exactly the process start date, you can use the Shark supplied value PROCESS_STARTED_TIME instead your own variable start_date.
For more details see the "how_to" document, point "How to write deadline expressions for activities?"







