当前位置:编程学习 > C#/ASP.NET >>

难题又来了!(工作流数据库设计)

现在公司要做一个生产流程控制系统,现阶段还算是简单的流程,特请教大家
设计工作流程控制时,数据库方面是如何设计的?

生产单元如下:
订单:一个订单里面包含多个产品
产品:最小单元,属于订单。
举例:一个订单A里面包含产品1,产品2...
流程:
1.订单单位有两个流程,流程1,流程2,流程3
2.产品单位有三个流程:流程1-1,流程1-2,流程2 。其中流程1-1和流程1-2是并发流程,并且
 流程1-1、1-2只有都完成后才可以进入流程2.
3.所有产品在流程2结束时,订单才可以进入流程3(结束流程)

流程大概如下:
订单A到来,订单A进行流程处理1,订单A流程处理2(此刻订单单位分散为产品单位),订单A下面的产品进行流程处理1-1、1-2(所有产品并发),产品流程处理2(必须单个产品流程1-1、1-2都完成后才可以进行流程2),订单A等待所有产品到流程处理2完了后,订单进行流程处理3(最后交货流程)。

试问各位:大家是如何设计此种工作流的模型的?
我公司现在要求灵活性只需有一定即可(可以后期动态增加流程),但要求流程解析速度一定要快。
我是这么做数据库设计的,大家有更好主意请指教:
首先把订单单位和产品单位分开:比如订单表和产品单位表
‘流程’用一个固定位数的字符串来表示,
比如5位字符串:32100
第一位表示流程1,第二位表示流程2,以此类推
状态上: 3表示完成,2表示进行中,1表示未开始,0表示保留无需处理

有一个流程分析器程序,定期分析这5位字符串,然后计算出下一步需要处理什么。更新这个流程字符串。


现在的问题是:
1.大家遇到这种情况时,都怎么设计?上述设计效率如何(那5位字符串的按位计算速度)?
2.上述流程字符串只能在后面动态增加流程(0位),不可在前面任意插入流程,灵活性差了点。
3.并发性质的流程,用这个1维5位字符串很难表示,比如上面的产品流程1-1、1-2。










--------------------编程问答-------------------- 大胆点,做出来让实践验证下,谁说别人的就比你的好 --------------------编程问答-------------------- 你以前有没有做个工作流方面的? --------------------编程问答-------------------- 我的设想是极其简陋的东西,不知道谁有工作流方面的经验?

--------------------编程问答-------------------- 不好说,如果你是正规计算机科班人员,学过编译原理就好解释点

任何你这类逻辑最后都能变成一颗语法树,而语法树可以用序列化成文本,实例状态可以有内存快照。

基本上对编译原理有印象的人,大体上就能搞定这东西 --------------------编程问答-------------------- 收藏,现在也想实现自定义工作流。 --------------------编程问答--------------------
引用 4 楼 wanghui0380 的回复:
不好说,如果你是正规计算机科班人员,学过编译原理就好解释点

任何你这类逻辑最后都能变成一颗语法树,而语法树可以用序列化成文本,实例状态可以有内存快照。

基本上对编译原理有印象的人,大体上就能搞定这东西


问题是速度能保证么?比如我上述举的例子,对订单工作流进行解析,订单工作流相对简单,
但订单能有几百万的,每个订单下面又有几百产品,总数有上亿产品,这么庞大的量,怎样保证速度?相对于一般OA的审批工作流来说,我不需要那么复杂的控制,但要求速度。

这种速度在关系数据库下如何实现?



--------------------编程问答-------------------- 其实你自己所做滴,与我上面所说滴并无啥不同。你的“比如5位字符串:32100”原本就是语法树所需变量的“内存快照”

而你口中的“有一个流程分析器程序,定期分析这5位字符串,然后计算出下一步需要处理什么。更新这个流程字符串。”也不正是一个语法树分析执行过程吗?

你是无意识的表述,而我说的则是“有意识”给提供一个理论依据,毕竟有一个理论上的目标方向,可以少绕点弯路 --------------------编程问答-------------------- 其实语法树这块的理论又恰好能解决你后面的2个问题.构建语法树自然不是死的,自然可以调整前后顺序就如同a+b*c 和(a+b)*c 一样虽然都一样字符,但是解出来的语法树不同有前后顺序,同样在并行方面也木有问题
while(a==1&&b==1)
这个同样可以解成语法树。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,