我有一个相当直接的顺序批准工作流,它有一个 EnableModificationActivity,它几乎适用于整个工作流。我的修改表单是一个 ASPX 页面,它使用户能够启用/禁用工作流中尚未发生的批准步骤。由于工作流可以多次修改,我希望表单能够反映工作流的当前状态,这意味着它应该显示当前启用或禁用了哪些活动。
我为此提出了一个笨拙的解决方案,稍后我将分享,但我必须相信有一个干净的方法可以解决这个问题。
我有一个相当直接的顺序批准工作流,它有一个 EnableModificationActivity,它几乎适用于整个工作流。我的修改表单是一个 ASPX 页面,它使用户能够启用/禁用工作流中尚未发生的批准步骤。由于工作流可以多次修改,我希望表单能够反映工作流的当前状态,这意味着它应该显示当前启用或禁用了哪些活动。
我为此提出了一个笨拙的解决方案,稍后我将分享,但我必须相信有一个干净的方法可以解决这个问题。
所以这是我最终采取的方法......
我创建了一个普通的旧 CLR 对象 (POCO) 类,专门用于保存能够被 XML 序列化的特定工作流的状态信息。我将把它称为未来的“状态对象”。
我创建了一个名为“WorkflowStateManager”的可重用类,它能够为给定的 SPWorkflow 加载和保存单个状态对象。工作流和修改表单都可以访问此类。
当工作流被激活时,我构造一个新的状态对象,初始化它的各种属性,并使用 WorkflowStateManager 保存它。
随着工作流程的进行,我会根据需要通过以下方式加载和更新状态对象:
现在,我的修改表单还能够使用 WorkflowStateManager 加载、操作和保存状态对象,进而向用户公开工作流的当前状态。
我希望这可能对某人有益。