我对WF非常陌生,我正在努力学习它。我知道WF的基本知识。希望我能把我的问题弄清楚。
但我正面临着一个问题。我正在开发一个演示应用程序,以向我的团队证明WF的力量。
现在,我知道了如何卸载工作流,然后使用书签恢复相同的工作流程。
现在我正在做一个ASP.NET应用程序。它所做的是-
[
Id EmpName Age Status WorkflowInstance
1 blah 24 False {Guid of WorkflowInstanceId}
]
然后,unloaded.
现在我的问题是,在网格中,我使用EF对Employee数据库进行查询,并在数据库中获取雇员数据。
这是获取数据的唯一方法,因为在我对数据库的查询中不涉及任何工作流。这就像我们在开发多年的任何应用程序时通常所做的那样。那么在这种情况下工作流必须提供什么。
我认为可能是另一种方式--是否应该对每个工作流使用跟踪服务和自定义数据。然后查询这些数据。但是这将复制一些事情,因为我现在在我的数据库和TrackingStore中都有员工数据。
我该如何处理这个问题。
任何关于这方面的指导都会得到认可。同时,我也在不断地学习如何认识WF的真正力量,并试图找出正确的方法。
发布于 2012-03-29 12:42:49
工作流实例存储区不是您希望保存事务性或可查询数据的地方。我喜欢把它看作是存储支持进程的数据的地方。如果您需要访问工作流之外的这些数据,以便在一个视图(如网格)中列出这些数据,那么您应该将其存储在工作流实例存储区之外。您不希望仅仅为了从每个工作流中获取数据而恢复所有工作流,这样您就可以在一个视图中显示所有数据。但是,如果工作流中的数据仅用于该流程,在工作流外部不可见,并且在流程到达给定点之前处于无效状态,那么我将将其保存在工作流数据中,直到它为事务性系统做好准备。
您可以使用工作流的提升属性作为解决方案,但我建议您不要这样做。您希望拥有事务数据的架构。工作流只是实现此过程的状态机的地方。
我们通常对这种类型的业务数据提取使用跟踪,但是如果您拥有工作流,我建议使用显式活动将这些数据保存到您自己的表中。至少到那时,您在流程中的位置将是显而易见的,而不是工作流主机中发生的某种魔法。
发布于 2012-03-29 11:28:21
您可能应该将WorkflowID存储在其他位置,无论是跟踪存储、自定义表,甚至是用户机器上的cookie。
下面的示例演示了如何使用平面文件(在WF 3.5中)持久化工作流ID:
http://msdn.microsoft.com/en-us/library/aa353572(VS.90).aspx
https://stackoverflow.com/questions/9931829
复制相似问题