none
当修改了WorkFlow4的工作流时,已经持久化的实例ID不能读取了?????? RRS feed

  • 问题

  • 就是说持久化了一些WF的实例ID到数据库里,然后我修改了WF(比如增加一个Sequence或者修改一些连线),但运行程序的时候之前的实例ID不能使用了,不能load出来了,会报错出现异常!

    哪位高手帮忙解决下,拜托了!已经几天没弄好了!!

    呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜

    2010年6月3日 3:55

答案

  • hi,

    工作流结构发生了变化,以前的持久化内容不能与之匹配,当然无法加载了。

    如果工作流在上线之后需要变更,通常的做法有:

    • 创建一个新的工作流:这样的话,旧工作流使用旧的持久化数据,依然有效,新的工作流会产生新的持久化数据
    • 使用动态修改:先加载为旧工作流,再动态修改为新的结构。


    My blog: http://xiaoshatian.cnblogs.com
    • 已标记为答案 WellsLin 2010年6月4日 6:14
    2010年6月3日 5:40
    版主

全部回复

  • hi,

    工作流结构发生了变化,以前的持久化内容不能与之匹配,当然无法加载了。

    如果工作流在上线之后需要变更,通常的做法有:

    • 创建一个新的工作流:这样的话,旧工作流使用旧的持久化数据,依然有效,新的工作流会产生新的持久化数据
    • 使用动态修改:先加载为旧工作流,再动态修改为新的结构。


    My blog: http://xiaoshatian.cnblogs.com
    • 已标记为答案 WellsLin 2010年6月4日 6:14
    2010年6月3日 5:40
    版主
  • WF4中貌似没有动态修改功能了。

     

    我的做法是:把xaml存放到数据库中,每次修改,都保存一个历史版本。

    启动工作流时,吧工作流实例和xaml的版本信息保存到数据库中。

    加载工作流时,先由工作流的ID获取到它对应版本的xaml。然后由xaml创建出Activity,然后加载工作流。

     

    模范啊。 WF4在版本控制上没有WF3方便了。

    2010年6月9日 1:27