在AnyData 中,我们需要通过节点标识(一个sql条件)来描述一个流程节点,当前数据满足该节点标识时,数据处于该节点,例如 Printed='T' 表示 已打印,CheckPassed='F' 表示审核未通过。
例如,在医院超声检查流程中的几个节点和节点标识如下
已到达 : Schedule.Arrived='T' and Schedule.Waited='F'
室外候 : Schedule.Arrived='T' and Schedule.Waited='T' and Schedule.Cheked='F'
检查中 : Schedule.Arrived='T' and Schedule.Waited='T' and Schedule.Cheked='T' and Schedule.Printed='F'
已打印 : Schedule.Arrived='T' and Schedule.Waited='T' and Schedule.Cheked='F' and Schedule.Printed='T'
通过上述的多个标记字段的组合来描述流程节点,非常直观,便于阅读,但是问题是当在一个比较复杂的流程中节点标识可能会很长,最终客计算每个数据记录的流程状态时非常慢。
而且,如果再需要在流程的开头增加一个新的节点 急诊 Schedule.emergency='T' 或 'F',则需要在每个节点的标识中都需要添加新的节点标识,如下:
急诊 : Schedule.emergency='T'
已到达 : Schedule.emergency='F' and Schedule.Arrived='T' and Schedule.Waited='F'
室外候 : Schedule.emergency='F' and Schedule.Arrived='T' and Schedule.Waited='T' and Schedule.Cheked='F'
检查中 : Schedule.emergency='F' and Schedule.Arrived='T' and Schedule.Waited='T' and Schedule.Cheked='T' and Schedule.Printed='F'
已打印 : Schedule.emergency='F' and Schedule.Arrived='T' and Schedule.Waited='T' and Schedule.Cheked='F' and Schedule.Printed='T'
流程调整时非常麻烦。
上述的节点标识我们称之为多字段节点标识,即,通过多个字段组合完成对一个节点的标识。另外一种节点标识的方法我们称之为单字段节点标识,所有的流程节点都是通过一个字段进行标识。用于节点标识的字段我们称之为标志字段。例如采用一个字段SeqStep=1标识处于第一个节点,SeqStep=2标识处于第二个节点,这样,每个节点的标识都很简单,计算速度快,而且增加新的节点也非常简单,例如我们上述的超声检查流程中,我们通过单字段节点标识的方式描述流程节点,如下:
已达到: SeqStep=1
室外候: SeqStep=2
检查中: SeqStep=3
已打印: SeqStep=4
如果增加一个 急诊 节点非常容易:
急诊: SeqStep=5
已达到: SeqStep=1
室外候: SeqStep=2
检查中: SeqStep=3
已打印: SeqStep=4
两种方式比较之后我们可以看出区别:
多字段节点标识 单字段节点标识
1、可读性 好 差
2、可维护性 差 好
3、执行效率 差 好
例如,在医院超声检查流程中的几个节点和节点标识如下
已到达 : Schedule.Arrived='T' and Schedule.Waited='F'
室外候 : Schedule.Arrived='T' and Schedule.Waited='T' and Schedule.Cheked='F'
检查中 : Schedule.Arrived='T' and Schedule.Waited='T' and Schedule.Cheked='T' and Schedule.Printed='F'
已打印 : Schedule.Arrived='T' and Schedule.Waited='T' and Schedule.Cheked='F' and Schedule.Printed='T'
通过上述的多个标记字段的组合来描述流程节点,非常直观,便于阅读,但是问题是当在一个比较复杂的流程中节点标识可能会很长,最终客计算每个数据记录的流程状态时非常慢。
而且,如果再需要在流程的开头增加一个新的节点 急诊 Schedule.emergency='T' 或 'F',则需要在每个节点的标识中都需要添加新的节点标识,如下:
急诊 : Schedule.emergency='T'
已到达 : Schedule.emergency='F' and Schedule.Arrived='T' and Schedule.Waited='F'
室外候 : Schedule.emergency='F' and Schedule.Arrived='T' and Schedule.Waited='T' and Schedule.Cheked='F'
检查中 : Schedule.emergency='F' and Schedule.Arrived='T' and Schedule.Waited='T' and Schedule.Cheked='T' and Schedule.Printed='F'
已打印 : Schedule.emergency='F' and Schedule.Arrived='T' and Schedule.Waited='T' and Schedule.Cheked='F' and Schedule.Printed='T'
流程调整时非常麻烦。
上述的节点标识我们称之为多字段节点标识,即,通过多个字段组合完成对一个节点的标识。另外一种节点标识的方法我们称之为单字段节点标识,所有的流程节点都是通过一个字段进行标识。用于节点标识的字段我们称之为标志字段。例如采用一个字段SeqStep=1标识处于第一个节点,SeqStep=2标识处于第二个节点,这样,每个节点的标识都很简单,计算速度快,而且增加新的节点也非常简单,例如我们上述的超声检查流程中,我们通过单字段节点标识的方式描述流程节点,如下:
已达到: SeqStep=1
室外候: SeqStep=2
检查中: SeqStep=3
已打印: SeqStep=4
如果增加一个 急诊 节点非常容易:
急诊: SeqStep=5
已达到: SeqStep=1
室外候: SeqStep=2
检查中: SeqStep=3
已打印: SeqStep=4
两种方式比较之后我们可以看出区别:
多字段节点标识 单字段节点标识
1、可读性 好 差
2、可维护性 差 好
3、执行效率 差 好