我们为客户建立了一个拨款申请系统。他们现在要求一些简单的工作流程功能(在提交申请之前需要两次批准)。
我已经考虑过数据库设计,我会用这种方式对工作流程要求进行编码,以提供最大的灵活性和可重用性,并且我有兴趣知道是否存在任何现有的设计模式或这类系统的最佳实践。有什么建议吗?
注意:这是一个自定义的ASP.NET应用程序,我们肯定会推出自己的工作流程解决方案。我对购买组件不感兴趣,或者更不用说将这一切移到像SharePoint这样的平台上。
答案 0 :(得分:4)
不看Windows Workflow Foundation会是愚蠢的。它完全符合您的要求。
答案 1 :(得分:4)
如果工作流程功能如此简单,那么您的方法就足够了。但如果您想(或者如果客户稍后要求)更多功能,例如:
然后您可能需要考虑像Workflow Foundation这样的工作流程组件。
可以找到工作流模式的学术方法here,它们分为四类:
我认为您的案例更有趣的类别是资源模式。
答案 2 :(得分:0)
过去运行良好的一个解决方案是创建包含成员的批准组,将批准代码作为简单的查找表,并对批准状态机进行软编码,以便每个步骤都是通过将批准代码分配给小组成员的项目。这允许更改组成员身份并更改批准路径,而无需重新编码任何内容。您还可以添加代码触发器和端点(通过反射,例如程序集名称+类名+方法名称),以在每个步骤执行副作用和提交/通知操作
答案 3 :(得分:0)
我有类似的查询。有一组具有相互依赖性的批处理。我正在为这些批处理过程开发类似系统的工作流程。
以下哪两种设计更好:
数据库驱动设计,其中每个进程更新它的状态以及数据库表和其他进程中的其他详细信息查询这些表,或
基于JMS或消息传递的方法,其中进程使用消息传递队列相互通信。