说说工作流

icansaymyabc 2008-11-18 03:10:31
其实我没有什么问题,只是有些感想不吐不快。

我花了两周多的时间熟悉了 .NET3 的工作流。并把我的一个旧程序改写成工作流来完成。

其间的感触颇多,归纳成广告语就是

开发者的福音,使用者的噩梦——微软.NET3工作流

对于开发者而言,微软工作流的确是不折不扣的福音,我认为这是软件工程技术的巨大进步。相当于把程序框图变成了软件工程项目的最终步骤,大大节省了开发时间。而且由于程序框图显著的逻辑清晰的特点,使得软件维护变得极其容易。

我在把旧程序改写成工作流的时候发现我原来的程序竟然隐藏着两个危险的逻辑BUG,如果输入数据的排列成某种特殊的情形时将导致数据丢失。而且我在过去十几次代码维护中都没有发现这个错误。我惟有庆幸过去原数据没有排列成那种情形。

但是对于最终用户而言,运行工作流程序是一件极其痛苦的事情。我的旧程序典型的完成时间是15秒,而用同一语言同一平台写出的逻辑几乎完全一致的等价的工作流程序的完成时间却高达 24分钟。由此可见工作流的效率实在是太差了,差了近百倍啊!漫长的等待真会把人等疯的。

不管怎样,对程序员来说工作流毕竟是个好东西。我虽然不愿意别人用工作流开发软件给我用,我却非常愿意用工作流开发软件给别人用。而且工作流也是学生学习软件开发的好平台。
...全文
172 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xss528 2011-08-25
  • 打赏
  • 举报
回复
方正飞鸿工作流:www.founderfix.com
电话咨询:400-688-9820
icansaymyabc 2008-11-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 anheizhizi 的回复:]
状态机很?强烈要求LZ PUBLIC代码段
[/Quote]

你自己写一个什么也不做,仅在状态之间跳来跳去的状态机看看完成 200 次状态切换需要多少时间你就知道状态机花不花时间了。


状态机的源程序可没法共享,就像程序框图一样,难道让我发图片上来?
anheizhizi 2008-11-24
  • 打赏
  • 举报
回复
状态机很花时间么?强烈要求LZ PUBLIC代码段
icansaymyabc 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 asxinyu_usst 的回复:]
没有你说的那么夸张吧? 24分钟和15秒钟 。。。。。。
[/Quote]

[Quote=引用 2 楼 xuezaiyue 的回复:]
个人感觉工作流和普通.net程序效率应该是差不多的,楼主可以pub一段普通程序和工作流效率有显著差距的代码供大家一同讨论吗?
[/Quote]

[Quote=引用 1 楼 hztltgg 的回复:]
无法想象为什么会需要24分钟。
[/Quote]

其实我也只是在学习工作流,改写旧程序只是为了练手。

我那个旧程序因为用状态机的思想来处理可以令逻辑变得极度清晰,所以我用状态机工作流来将它实现果然发现了以前隐藏的逻辑错误。

虽然用到了近20个状态,但是每个状态真正要处理的工作却相当简单,有的甚至只是一条语句。运行期总共经历了大概 55000 次状态切换。

据我分析,可能状态机的状态切换是一个高耗费的操作,我的程序99%的时间是花在状态切换处理上了。即使我原来的程序只耗时1秒钟可能也要花上 24分钟,如果我的原来的程序要耗时2分钟也许新程序也只要 25 分钟。
icansaymyabc 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sp1234 的回复:]

呵呵,你好狠,更适合干业务。

我自己用的不爽的绝对不会给别人用。
[/Quote]

以前我和你的想法一样,什么都要做得自认为尽善尽美。

可是后来在工作中发现“自认为尽善尽美”根本就是画蛇添足,因为最终用户和开发人员存在着极其巨大的知识差异。

就算你把软件做成程序员界公认的极品,最终用户却有可能因为他的一个无理要求(他甚至不知道自己的要求是不合逻辑的)没有满足而视之为垃圾。
而你花费巨大精力对软件实现一些优化本可以令他的工作量减少一半但是要求他改变一点点工作习惯,他就会永不使用你给他提供的便利,或者虽然勉强使用了但却抱怨连天,说你的设计完全违背常理等等。

所以做软件最重要的两点是:
1 深化同用户的沟通,仅仅满足用户自己提出的需求即可,同时让用户接受软件的局限;
2 便于开发维护。其它的事做得越少越好。至于自己用得爽不爽的更是无关紧要。

hztltgg 2008-11-20
  • 打赏
  • 举报
回复
书上举的例子不都是ATM啦,自动售货机啦,几分钟的事情哦。

我平时做的一些项目,有根据状态一步步走的流程,本来想用WF来试试,后来发现,wf好像更注重结果,而我以前的项目更注重过程,以前的项目都是要不同的管理员随时查看目前有多少在做啦,做到那步啦,这样。不知道wf能不能实现,怎么实现,那位大哥知道和我说说吧^_^
vrhero 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sp1234 的回复:]
我不知道你的工作流如何设计。不过,一般人的工作流程序都非常死板,因此非常不值得使用工作流。哪有将简单的计算方法程序用工作流来写的?!

实际上工作流适合的程序,它的每一个动作本来就是较长时间的。那种多人参与、多阶段决策树类型的程序,例如一个有着几十个分公司的集团公司的财务预算的任务下达和汇总流程,一个周期可能需要60天,用工作流岂不是很适合。
[/Quote]
同意...也许楼主对工作流的理解有误...

一个15秒或24分钟就结束的工作通常不应该应用工作流...

ps:手头上正好有个项目应用了WWF...正常完成的周期大约3-10天,最长1年后才会结束...
yuhaozx 2008-11-19
  • 打赏
  • 举报
回复
关注工作流
lyljr08 2008-11-19
  • 打赏
  • 举报
回复
工作流没接触过,您能介绍些工作流的资料吗???
数据之巅 2008-11-18
  • 打赏
  • 举报
回复
没有你说的那么夸张吧? 24分钟和15秒钟 。。。。。。
  • 打赏
  • 举报
回复
我不知道你的工作流如何设计。不过,一般人的工作流程序都非常死板,因此非常不值得使用工作流。哪有将简单的计算方法程序用工作流来写的?!

实际上工作流适合的程序,它的每一个动作本来就是较长时间的。那种多人参与、多阶段决策树类型的程序,例如一个有着几十个分公司的集团公司的财务预算的任务下达和汇总流程,一个周期可能需要60天,用工作流岂不是很适合。
  • 打赏
  • 举报
回复
[Quote=引用楼主 icansaymyabc 的帖子:]
我虽然不愿意别人用工作流开发软件给我用,我却非常愿意用工作流开发软件给别人用。而且工作流也是学生学习软件开发的好平台。[/Quote]

呵呵,你好狠,更适合干业务。

我自己用的不爽的绝对不会给别人用。
xuezaiyue 2008-11-18
  • 打赏
  • 举报
回复
个人感觉工作流和普通.net程序效率应该是差不多的,楼主可以pub一段普通程序和工作流效率有显著差距的代码供大家一同讨论吗?
hztltgg 2008-11-18
  • 打赏
  • 举报
回复
无法想象为什么会需要24分钟。

13,347

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET技术前瞻
社区管理员
  • .NET技术前瞻社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧