Workflow 为什么使用工作流序列化业务对象?

Workflow 为什么使用工作流序列化业务对象?,workflow,workflow-foundation,Workflow,Workflow Foundation,当您有一个需要持久性的长时间运行的工作流时,似乎唯一的解决方案是让工作流框架在存储它们之前序列化该工作流和业务对象 这是否会导致给定业务对象的多个副本可能变得不同步 您如何处理同步问题,以及为什么希望使用工作流序列化业务对象(而不是维护工作流和业务对象之间的链接) 我发现了一个问题,但它并没有真正回答如何处理它,也没有回答你为什么要这样做 当您有一个需要持久性的长时间运行的工作流时,似乎唯一的解决方案是让工作流框架在存储它们之前序列化该工作流和业务对象 对。序列化允许在单个自包含结构中无限期地持

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

这是否会导致给定业务对象的多个副本可能变得不同步

您如何处理同步问题,以及为什么希望使用工作流序列化业务对象(而不是维护工作流和业务对象之间的链接)

我发现了一个问题,但它并没有真正回答如何处理它,也没有回答你为什么要这样做

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

对。序列化允许在单个自包含结构中无限期地持久化数据

这是否会导致给定业务对象的多个副本可能变得不同步

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

您如何处理同步问题,以及为什么希望使用工作流序列化业务对象(而不是维护工作流和业务对象之间的链接)

这要看情况

例如,在SharePoint环境中,可能只保留列表Guid和项目Id(它们随工作流序列化),然后根据需要检索项目。也就是说,SharePoint列表项用作“业务对象”,其生命周期(时间)在工作流之外。因为该项目是一个共享的外部资源,所以除了有趣的小比赛条件外,它是“同步的”

什么时候没有“链接”?嗯,当不需要这种同步时——例如,初始值在工作流期间有效和/或不可变。这两种方法可以混合使用,这实际上取决于业务逻辑需求

快乐编码

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

对。序列化允许在单个自包含结构中无限期地持久化数据

这是否会导致给定业务对象的多个副本可能变得不同步

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

您如何处理同步问题,以及为什么希望使用工作流序列化业务对象(而不是维护工作流和业务对象之间的链接)

这要看情况

例如,在SharePoint环境中,可能只保留列表Guid和项目Id(它们随工作流序列化),然后根据需要检索项目。也就是说,SharePoint列表项用作“业务对象”,其生命周期(时间)在工作流之外。因为该项目是一个共享的外部资源,所以除了有趣的小比赛条件外,它是“同步的”

什么时候没有“链接”?嗯,当不需要这种同步时——例如,初始值在工作流期间有效和/或不可变。这两种方法可以混合使用,这实际上取决于业务逻辑需求

快乐编码