User-defined 动态工作流程和用户输入

User-defined dynamic workflows and user input

我最近受命调查 Workflow Foundation。实际目标是实现一个系统,在该系统中,最终用户可以在已部署的应用程序中定义自定义工作流(当然,也可以使用它们)。就个人而言,我以前从未使用过 WF(并且在这里阅读 SO 的人对此非常怀疑 - 所以我正在阅读那些 questions/answers),并且由于学习资源稀少,我很难找到解决方法可用。

无论如何,有一些问题,例如,this,其中提到了他们称为动态或 user-defined 工作流的东西。他们指出 WF 使 "rehost" 设计人员成为可能,以便 end-users 可以在应用程序部署后定义自己的新工作流(无需开发人员干预(?),这是我不是的部分真的很确定)。

我的同事告诉我,通过这种方式,我们可以实施一个应用程序,一旦实施此功能,我们将不再需要在每次实施新工作流时都不断修改应用程序。不过,他们也指出,他们只是"heard it",自己也没有亲身体验

我一直在网上四处寻找示例,但我能找到的最好的东西是一个数字猜测应用程序 - 只不过是一个简单的 hello world。因此,没有太多内容可以让我指出这个 user-defined 工作流功能的实际工作方式、使用方式、限制等方面的正确方向。

我主要担心的是:可以定义自定义工作流是可以的,但是如果没有在整个过程中实际输入数据的可能性,任何工作流都不值一分钱。例如,即使我唯一需要做的就是在投诉管理系统中注册客户,我也需要客户的姓名、联系方式等。如果最终用户应该能够定义给定工具集使之成为可能的任何工作流程那么当然需要有一种方法来为工作流消费者提供一种通过表单输入数据的方法。如果工作流几乎可以是任何性质的,那么数据也需要如此——否则如果我们需要自己实现 UI,那么这个 "end-user throws together a workflow" 特性就有点没用了,因为它们最终还是会要求我们实现用于各个步骤的表单或某种数据输入。

所以我想应该有一种方法可以定义 "shape" 在工作流的任何给定用户交互阶段需要填写的数据,我可以调查并根据数据。因此,例如,如果我发现所需数据由姓名和出生日期组成,那么我将需要在页面上呈现一个文本框和一个日期选择器。

我无法从这里和其他地方的问答中真正弄清楚这是否可能。我可以定义然后 "query" 随时传递给工作流的数据结构吗?如果是这样,如何?如果不是,这个 user-defined 工作流功能应该如何使用,它有什么用?

为了澄清一点,我可以想象一些指定复杂类型的东西,这将是常规 MVC 应用程序中的视图模型(输入模型),然后我可以反思它,获取属性并渲染基于此的输入字段。

Windows Workflow Foundation 是关于机器工作流,而不是业务工作流。诚然,它是 Microsoft 为构建其业务工作流产品而创建的基础工具集。但是开箱即用的 WWF 没有您需要的组件来快速轻松地构建业务工作流程。如果您想在工作流程中发送电子邮件,则必须从头开始编写。从业务角度来看,几乎所有您能想到的事情都必须从头开始编写。

如果您想使用 Microsoft 产品轻松创建业务工作流,请查看 SharePoint 中的工作流资料。它是 Microsoft 产品中最容易使用的(根据我的经验)。如果这不能满足您的需求,还有其他产品,例如 BizTalk。

K2 是另一家拥有业务工作流产品的公司,该产品以 WWF 为基础来更轻松地构建业务工作流,较旧的 K2 产品实际上会自动创建网页以从用户那里收集数据。

WWF 的级别非常低,可以说在他们 re-wrote 4.0 中的所有内容之后它就失去了吸引力。虽然微软没有公开声明,但我个人认为 Service Fabric(来自微软)实现了 WWF 最初试图解决的目标 "more robust programming environment."