1

我们为客户建立了一个拨款申请系统。他们现在要求提供一些简单的工作流功能(在提交申请之前需要两次批准)。

我已经对数据库设计进行了一些思考,我将使用该数据库设计以提供最大灵活性和可重用性的方式对工作流程要求进行编码,并且我很想知道是否有任何现有的设计模式或最佳实践有这种类型的系统。有什么建议么?

注意:这是一个自定义的 ASP.NET 应用程序,我们肯定会推出我们自己的工作流解决方案。我对购买一个组件不感兴趣,或者更不用说将整个事情转移到像 SharePoint 这样的平台上。

4

4 回答 4

4

不看Windows Workflow Foundation将是愚蠢的。它完全符合您的要求。

这是一个ASP.NET 特定链接

于 2008-10-23T15:53:38.410 回答
4

如果工作流功能如此简单,那么您的方法就足够了。但是,如果您想要(或者如果客户稍后要求)更多功能,例如:

  • 对审批者的提醒
  • 给管理员的警报
  • 任务的升级和重新分配
  • 取消作业
  • 基于规则的分配
  • 跟踪分配

那么您可能必须考虑像Workflow Foundation这样的工作流组件。

可以在此处找到工作流模式的学术方法,它们分为四类:

我认为您的案例中更有趣的类别是资源模式。

于 2008-10-23T17:28:46.237 回答
0

过去运作良好的一种解决方案是创建具有成员的批准组,批准代码作为一个简单的查找表,并对批准状态机进行软编码,以便每个步骤都由通过以下方式将批准代码分配给项目产生一个小组成员。这允许更改组成员身份并更改批准路径,而无需重新编码任何内容。您还可以添加代码触发器和端点(通过反射,例如程序集名称 + 类名称 + 方法名称)以在每个步骤执行副作用和提交/通知操作

于 2008-10-23T16:02:27.287 回答
0

我有一个类似的查询。有一组相互依赖的批处理。我正在为这些批处理流程开发类似系统的工作流程。

以下两种设计哪个更好:

  1. 数据库驱动设计,其中每个进程在数据库表中更新其状态和其他详细信息,其他进程查询这些表,或

  2. 一种基于 JMS 或消息传递的方法,其中进程使用消息传递队列相互通信。

于 2008-11-04T03:55:09.810 回答