关于自定义工作流的思考
在企业中,有很多的工作流,请假流程,加班流程,加薪流程等等。在很多系统中,对工作流的设计都是在程序开发中就定义好的,但这往往不能满足客户多变的需求。比如,在设计时,我们定义加班流程,A给部门经理发送请求,经理审核请求,然后给以答案。这样一个简单的流程就完成了。但是突然公司规定一切的请假流程,都必须先经过人事(举例而已)。这样我们原先的流程就走不下去了。等等问题,使得多变的工作流变得更加复杂。
以下有几点需求,当然都是针对工作流的,欢迎讨论:
1. 能够让客户自定义任意深度的工作流
2. 能时刻跟踪流程的运作。(因为你关心你的加薪请求,走到那里了。)
3. 能根据需求,快速改变处理流程
4. 能将参与者广泛定义,比如将角色,职位,部门等作为参与者。
就这么四点需求,就让我这个新手,陷入了深深的困苦中。以下是我的点点想法,望各个大哥不吝赐教。
我的想法:
1. 我先考察了,tcp/ip信息报文的传送。感觉这两者具有极大的相似点。
让每一个结点即参与者,都具有接受消息,处理消息,转发消息的能力。
Tcp/ip 我们的流程
源 请求发起
目的地 接受者
确认号 当前状态
数据 请求内容
同时,我们还可以在我们的消息里加上:紧急度,必须处理者(如同wsdl中的mustunderstand),转发给谁等等。
这里还有一点,就是任何结点的回应消息,只发送给它的直接消息源。和tcp/ip也应该是一样的吧,没有找到相关材料。L
2. 实现灵活的流程:
通过设计一个自己的语法解析器,解析客户端设定的流程。
比如:职员A请求加薪:
假设现在我们的语法如下:
P:人员
D:部门
DM:部门经理
HR:人事
M:总经理
这样一个加薪流程我们就可以描述为:
(p)%DM%_HR_
如果那天,要求加薪都必须在最后由总经理审批,则
(p)%DM%_HR_%M%
这样,我们的解析器读取这个流程描述语言,从而提取出具体的流程。
都是开始的一些想法,肯定不成熟,甚至有致命的错误,欢迎广泛讨论,非常感谢!
这个文法解析,是从Interpreter模式想到的。
posted on 2006-07-15 17:49 flyingchen 阅读(5542) 评论(40) 编辑 收藏 举报