有人可以给WWF一个很好的教程吗?

tor*_*ial 2 .net workflow-foundation

特别是,我感兴趣的是:1)建立一个免费的环境设置来完成工作流程.2)如何使用现有的工作流程项/状态以及涉及的内容.

谢谢!

kri*_*SFT 6

其他答案都很好,但我认为人们理解为什么要使用工作流程很重要.许多人在不需要它时使用WF,当其用例最适合WF使用时,还有其他人拒绝使用WF.

关于何时以及是否使用WF的最佳解释是Dave Green的博客文章.他是Windows Workflow Foundation第一版的架构师.

我会把它贴在这里为后代:


什么是工作流程,为什么要这么麻烦?

当然,工作流程是那些经常阻碍沟通的重载术语之一,因此我最好说出我的意思.

工作流程只归结为两个想法:有工作要做,工作流程视为不透明的行为单位; 和流程,描述了什么时候完成的工作.

这是一个工作流程吗?

public void HandleLoanRequest (string customerID, Application app)
{
    if (CheckCredit(customerId, app.Amount))
    {
        MakeOffer (customerId, app);
    }
}
Run Code Online (Sandbox Code Playgroud)

是的,我相信它是.工作是检查客户的信用并提出报价 - HandleLoanRequest定义是否以及何时执行此工作.

但是,工作流程供应商传统上认为在宣布胜利之前需要的不仅仅是这类代码,这表明我们仍然缺少一个关键概念.

我相信,这是我们不仅需要描述流程,而是以我们可以检查,推理和操纵的方式描述流程.简而言之,工作流程需要一个模型.

C#是实现此目的的一种方式 - 我们可以定义编码标准,允许我们扫描工作流代码并绘制流程图.或者我们可以定义开发人员用来调用构成模型的代码部分的属性.这不是我们为Windows Workflow Foundation做出的选择 - 我将讨论为什么我们选择我们在后期帖子中所做的 - 但它会起作用.

但回到为什么我们可能需要一个模型.我们将不得不努力创造它,所以为什么要打扰?投资回报在哪里?(或者是牛肉,正如这位英国人在国外学会称之为).

好吧,我认为回报来自该模型的功能 -

可视化 在开发和维护期间对开发人员有用,对于想要知道他们为什么要做他们被要求做的工作的工作流用户,或者想要知道什么是行为不端的IT Ops家伙应用程序是或应该是.

表现力 工作流模型是一种领域专用语言,专门用于支持特征问题.一个例子是审查过程,其中五个评论中的三个正面投票意味着该文档是好的 - 并且任何未完成的评论都可以被取消.这对代码来说有点繁琐,但Windows Workflow Foundation包含解决此类问题的开箱即用的构造.

执行 运行时可以利用模型来消除一遍又一遍地解决相同问题的需要.在Windows Workflow Foundation中,我们构建了对长时间运行的工作流程(例如状态管理和补偿)的棘手问题的支持 - 由简单,富有表现力的模型元素控制.

监控 模型的存在使得生成具有有意义语义的事件流成为可能,而无需任何额外的开发人员工作.然后,可以使用它来监视工作流或聚合的实例.Windows Workflow Foundation还允许通过从工作流状态中提取的应用程序数据对事件进行声明性装饰 - 这样您就可以判断已对订单14532启用了信用检查.

转换 模型引发模型.一个例子是将工作流模型转换为与之通信所需的消息交换模式 - 正如Dharma和Don在PDC中所展示的那样精彩.另一种是定制.ISV提供由VAR定制的工作流程,然后由客户再次定制.然后,ISV发布了一个新的基础版本.对工作流程使用共享的,易于理解的模型使得随后的3向合并更容易处理.

组合 如果将一个应用程序纳入流程和工作中,那么工作的原子元素及其易于理解的接口可以被其他工作流程重用.工作流本身是可以由其他工作流使用的有效工作定义.

定制和转换共同实现了生态系统,其中工作和流的定义成为共享或交易的工件.

操作 通常需要动态发明或修改工作流程.如果这意味着更改代码,那么安全人员就会遇到问题 - 即使用户了解如何破解它.使用模型可以实现可控制和可理解的动态操作.Windows Workflow Foundation支持动态修改工作流类型和工作流实例.

这就是它(或者至少,这个星期六下午所有这些都渗透到我脑海中).这就是为什么我们认为模型是一个好主意,以及为什么我们认为它具有很高的投资回报率.但如果这些好处都不适用于您的场景,那么编码仍然非常酷.