为什么业务对象与工作流程序列化?

时间:2011-06-28 16:37:44

标签: workflow workflow-foundation

当您有一个需要持久性的长时间运行的工作流时,似乎唯一的解决方案是让工作流框架在存储它们之前序列化该工作流和业务对象。

这不会导致给定业务对象的多个副本可能会失去同步吗?

如何处理同步问题以及为什么要使用工作流序列化业务对象(与维护工作流和业务对象之间的链接)?

我找到了related question,但它并没有真正回答如何处理它或者为什么要这样做。

1 个答案:

答案 0 :(得分:1)

  
    

当您有一个需要持久性的长时间运行的工作流时,似乎唯一的解决方案是让工作流框架在存储它们之前序列化该工作流和业务对象。

  

是。序列化允许数据无限期地保存在一个独立的结构中。

  
    

这不会导致给定业务对象的多个副本可能会失去同步吗?

  

如果代码的设计假设副作用会以某种方式神奇地传播,那么是的。所以不要这样做: - )

  
    

如何处理同步问题以及为什么要使用工作流序列化业务对象(与维护工作流和业务对象之间的链接)?

  

这取决于。

例如,在SharePoint环境中,可能只保留List Guid和Item Id(这些是使用工作流序列化的),然后根据需要检索Item。也就是说,SharePoint列表项用作“业务对象”,其具有工作流之外的生命(时间)。因为项目是共享外部资源然后,除非有趣的小竞争条件,它是“同步”。

何时没有“链接”?那么,当不需要这样的同步时 - 例如初始值在工作流程和/或不可变的持续时间内有效。这两种方法可以在混合中一起使用,它实际上取决于业务逻辑要求。

快乐的编码。