如何公开SharePoint Workflow实例的状态?

时间:2009-01-16 16:36:44

标签: sharepoint workflow

我有一个相当简单的顺序批准工作流程,其具有EnableModificationActivity,该工作范围仅适用于整个工作流程。我的修改表单是一个ASPX页面,使用户能够启用/禁用工作流程中尚未发生的批准步骤。由于工作流程可以多次修改,我希望表单能够反映工作流程的当前状态,这意味着它应该显示当前启用或禁用的活动。

我已经提出了一个笨重的解决方案,我稍后会分享,但我必须相信有一个干净的方法来解决这个问题。

1 个答案:

答案 0 :(得分:0)

所以这就是我最终采取的方法......

  1. 我创建了一个Plain Old CLR Object(POCO)类,专门用于保存状态信息,我的特定工作流能够是XML Serialized。我将其称为“状态对象”。

  2. 我创建了一个名为“WorkflowStateManager”的可重用类,它能够为给定的SPWorkflow加载和保存单个状态对象。工作流程和修改表单都可以访问此类。

    • 保存州实施:
      1. XML将对象序列化为字符串
      2. 在SPWorkflow列表项的属性包上设置序列化字符串,并调用属性包的Update()方法
    • 加载状态实现(基本上与保存状态实现相反)
      1. 从SPWorkflow列表项的属性包
      2. 获取序列化字符串
      3. XML将字符串反序列化为State Object
  3. 当工作流被激活时,我构造一个新的State Object,初始化它上面的各种属性,并使用WorkflowStateManager保存它。

  4. 随着工作流程的进展,我按以下方式根据需要加载和更新状态对象:

    • 使用WorkflowStateManager加载当前的State Object
    • 根据State Object的值
    • 制定工作流程决策
    • 对State Object进行所需的更改
    • 使用WorkflowStateManager保存State Object
  5. 现在,我的修改表单还可以使用WorkflowStateManager加载,操作和保存State对象,然后将工作流的当前状态公开给用户。

  6. 我希望这对某人有益。