与网友讨论 [1]几天狂想的成果:工作流的定义与模型

写完: [1]几天狂想的成果:工作流的定义与模型 在设计模式群上与群友讨论,收获和更正不少东西。 特别感谢LTAAA!
由于平时工作很紧张,现在是凌晨零点一刻,原谅我的偷懒行业吧……

LTAAA-DP 22:57:53
个人模糊的认为"对于step和state可以看成同一回事情,都把它看作Step"有问题
广州井辰-DP 22:58:38
怎么说?
广州井辰-DP 22:58:58
我在Step上另了一个分支控制Braches
广州井辰-DP 22:59:05
Branches
广州井辰-DP 22:59:48
相当于状态机中的一个到多个可能状态的转移,下一个STEP也可以是当前STEP自己
LTAAA-DP 23:00:51
从状态机上理解,似乎是这样
广州井辰-DP 23:01:38
最状态本身而言,它本身也是由一系列动作构成的,这些动作触发了状态的改变
LTAAA-DP 23:01:53
但是从对象上理解,state不含方法似乎更合理的
LTAAA-DP 23:02:46
也就是把状态和动作区分开来
广州井辰-DP 23:03:47
那么怎么解决状态中的流程问题?
LTAAA-DP 23:03:59
所以....
就像step:<steps | states | action>
小风 ♂-DP 23:04:02
你这个和我印象中的工作流不一样
广州井辰-DP 23:04:17
我是用自己的眼睛去看的
小风 ♂-DP 23:04:27
没看明白<steps | states | action>
小风 ♂-DP 23:04:40
啥意思?
广州井辰-DP 23:04:52
|是或者
LTAAA-DP 23:04:54
正则?
LTAAA-DP 23:05:07
忘了语法了
广州井辰-DP 23:05:11
我没写清楚,改一下先
LTAAA-DP 23:06:22
而且你写的:
WorkFlow :<steps | states>
step | state : <steps | states>
leaf state : <steps>
没有对step,state的定义还有steps,states的定义
LTAAA-DP 23:08:37
而且我记得状态机可以转换成表驱动(二维)
广州井辰-DP 23:09:28
对的,我没有把step说清楚.
LTAAA-DP 23:09:47
通过dictionary似乎有效率问题
广州井辰-DP 23:10:23
我正在测试的Branch就是用dictionary<key,value>实现的
广州井辰-DP 23:10:45
有什么样的问题呢?
LTAAA-DP 23:11:51
应为状态转换的表可以压缩,哈希的....
广州井辰-DP 23:13:35
哦,你说的是这个
广州井辰-DP 23:14:15
在C#里,Hashtable也是key-value值对来的.
广州井辰-DP 23:14:50
补充:Step的定义可以直观认为:给定一组输入,通过Step的执行,给出一组输出.
广州井辰-DP 23:15:30
也就是说,对叶子节点,它是一个不可再分割的动作.
LTAAA-DP 23:15:50
我是说哈希表的系统开销问题,还有自动机的表驱动有完整的转化公式,
LTAAA-DP 23:16:53
而且当年学习编译原理时那一大堆简化公式
广州井辰-DP 23:17:10
THX,表驱动的实现我再看相关资料
LTAAA-DP 23:18:13
你做的OS是operation system的缩写么?
广州井辰-DP 23:18:49
那不是我的,是BLOG自己加载的相关的文章
LTAAA-DP 23:19:02
O
广州井辰-DP 23:19:38
他这篇文章很理论
广州井辰-DP 23:20:10
到模型的建立还有一段距离.
广州井辰-DP 23:20:56
我仅用四个接口就把我所描述模型的核心描述了.
广州井辰-DP 23:21:06
现在还在测试
LTAAA-DP 23:21:25
...
广州井辰-DP 23:21:36
几天后我把它整理出来再给点意见
广州井辰-DP 23:22:17
每个接口的代码都不超过十行
LTAAA-DP 23:22:59
^_^
LTAAA-DP 23:24:29
state和step有一个重要区别:state在某些时候可以|和&
step没有
广州井辰-DP 23:25:09
state在某些时候可以|和&,举个例子
广州井辰-DP 23:25:15
在什么时候发生
LTAAA-DP 23:26:07
在A是true B是false时 C是true
LTAAA-DP 23:26:12
就是|
广州井辰-DP 23:26:20
嗯,明白了
广州井辰-DP 23:26:28
一个状态取决于多个状态
LTAAA-DP 23:26:45
是呀
广州井辰-DP 23:27:54
谢谢你的提醒
LTAAA-DP 23:28:02
不客气
广州井辰-DP 23:30:24
step的定义要改了,我当初只考虑到树状结构及局部环
step : < steps,Branches,Waits>
Waits 用于等待.
LTAAA-DP 23:31:28
用正则分析工作流似乎有问题
广州井辰-DP 23:31:46
我没有用正则啊
LTAAA-DP 23:32:04
你写的这个不是正则么?
广州井辰-DP 23:32:13
我用的方式让人误解了
广州井辰-DP 23:32:30
<a,b,c>表示一个三元组
LTAAA-DP 23:33:16
和编译原理里的表达方式很象
LTAAA-DP 23:33:38
action怎么分解呢?
广州井辰-DP 23:33:40
 
广州井辰-DP 23:35:11
其实action很简单,我都把它忽略了.加进来反而说不清楚.
public interface IAction
{
    IResult Result{get;}
    IParam Parm {get;set;}
    IResult Do();
}
广州井辰-DP 23:35:22
其实就是叶子节点上的Step
广州井辰-DP 23:35:46
IStep 继承于 IAction
LTAAA-DP 23:35:48
还是那么传入的状态参数怎么办?
广州井辰-DP 23:36:10
交由使用者去实现IParam
广州井辰-DP 23:36:26
它表示Step要用到的所有参数
LTAAA-DP 23:36:26
通过|&合并到parm里?

广州井辰-DP 23:37:05
然后要做什么,完全取决于 Do
广州井辰-DP 23:38:29
ActionForm : Form,IAction
{
    public IResult Do()
    {
        this.ShowDialog();
        Return _Result;
    }
}
广州井辰-DP 23:38:42
这是我写的一个测试用的Form
广州井辰-DP 23:38:58
我觉得这是令我最兴奋的一个点
广州井辰-DP 23:39:36
流程中很自然就可以把单据报表以这个方式串起来
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值