态度决定高度、企图决定版图、格局决定结局

导航

关于自定义工作流的思考

 

在企业中,有很多的工作流,请假流程,加班流程,加薪流程等等。在很多系统中,对工作流的设计都是在程序开发中就定义好的,但这往往不能满足客户多变的需求。比如,在设计时,我们定义加班流程,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  阅读(5541)  评论(40编辑  收藏  举报