Mel*_*Mel 11 c# wcf workflow-foundation-4
我们目前正在构建一个使用非简单审批流程的应用程序,该流程涉及多个级别的批准,返回,审核,通知等.
由于上述要求,我们被要求利用工作流程框架来促进流程透明度.
在原型上,我们成功地整合了工作流程,并且工作正常.但是,我们无法确定用户可以使用的操作.例如,我有以下接收操作:create(),managerApprove(),RAApprove(),ORMApprove()..现在,如果我按顺序调用它们,使用正确的用户名,那么它们将起作用.显然,如果我没有按顺序调用它们,那么它将抛出一个FaultException,因为它没有处于正确的状态.问题是,我怎么知道哪些功能可以在UI中公开 - 比如,如果它当前正在等待经理批准,那么只需显示经理的批准按钮......
作为一种解决方法,我创建了另一个WCF服务,该服务从数据库中检索相同的数据,然后确定正确的UI状态(用户可以执行哪些操作).我认为这是一个重复的逻辑,因为这已经在WF中假设了.
此外,如果WF更改,那么我的单独WCF服务可能会中断.例如,如果我在工作流程中切换批准顺序,那么我还需要更新WCF服务中的逻辑.否则,它将显示无效的页面状态,单击approve将调用错误的方法并导致FaultException.
任何帮助将不胜感激......我是WF4的新手.
更新:
我的同事用这样的方式提出了我的问题:
采用WF的Web应用程序的最佳设计是什么?
考虑WF的主要原因 - 所涉及的工作流程是长期运行的 - 工作流程是人工工作流程 - 他们需要协调真实人员的行动 - 流程透明度
此外,工作流程应如何与UI集成? - UI将如何知道应该处于什么状态以及显示哪些用户的页面?
工作流本身不直接公开信息.它就在那里,因为每个待处理的Receive都是一个命名书签,书签名称包含它支持的SOAP操作以及服务契约和命名空间.最简单的方法是将SqlWorkflowInstanceStore添加到WorkflowServiceHost并使用挂起的书签检查列.它并不完美,因为它会为您提供上次持久的信息,这不一定是当前的状态,但它在许多应用程序中对我有用.只需确保将TimeToPersist设置为一个非常低的值,并在战略位置添加一些Persist活动.
| 归档时间: |
|
| 查看次数: |
673 次 |
| 最近记录: |