Sharepoint工作流 - 当另一个工作流更改状态时,等待字段更改未触发

时间:2009-09-13 11:34:20

标签: sharepoint workflow workflow-activity

我正在尝试在Sharepoint Designer上创建工作流程。工作流程应该等到Out-Of-The-Box批准工作流程完成。这是通过使用项目的创建启动我的工作流程并使用wait活动:

来完成的
  

等待当前项目的字段更改:
  等待 InternalApproval等于16

问题:规则是正确的,但除非对项目进行编辑,否则事件不会触发。通常,每次编辑都会触发工作流程检查,但我的测试显示批准工作流程不会在项目上触发此事件

这个问题有一个简单的方法吗?我虽然要实现忙碌的等待,但是如何(有wait 5 minutes个活动,但没有goto)?是否有我可以下载的活动可以等待另一个工作流程完成,或者忙等待条件满足? 解决我的问题的另一种方法是,如果InternalApproval工作流程更改了字段,但我无法实现...

4 个答案:

答案 0 :(得分:1)

这是预期的行为。在项目更改时连接自行取消的批准工作流程将无用。在API级别,SharePoint在需要更新正在运行的项目时禁止引发事件。

-Oisin

答案 1 :(得分:1)

我最终编写了一个自定义工作流活动,等待更改完成,然后恢复工作流程。此活动可以以两种方式使用 - 在主工作流上,或在第二个工作流上,等待非触发更改,并进行触发更改(以便主工作流程恢复)。
编写它非常有趣 - 我使用Reflector从OOTB活动(正常等待字段更改)复制一些代码,并复制其动作xml。经过一些尝试后,这非常有效,给出了字段,运算符和值的列表。

Custom Sharepoint Workflow Activity - I'm blogging this

使用Helper类检查条件也很简单。使用Reflector复制所有属性及其绑定:

public void CheckStopCondition(object sender, ConditionalEventArgs e)
{
    bool checkAgainLater = Helper.TestListItem(Context, ListId, ListItem, 
                                               FieldName, Operator, Value);
    e.Result = checkAgainLater;
}

答案 2 :(得分:1)

文章如何等待任何列表中的更改,等待多个字段更改当前项,以便在当前项目中等待字段更改时采取不同的操作(链接如下)。

本文介绍了如何配置使用标准(OOB)工作流操作的工作流,并使用SharePoint Designer进行开发。不使用“等待当前项目中的字段更改”操作,将完成等待完成后工作流的组件添加到单独的“更改”工作流程,该工作流程在第一步中使用标准条件来确定是否它可以继续。如果当前项目中的字段不满足条件,则工作流程将停止。如果工作流的另一个实例正在运行,则在实例运行时,通过将“Workflow_running”字段设置为yes,新实例也将停止。

使用此技术可在等待满足特定条件时为您提供更多控制。这包括能够等到另一个列表项中的字段更新,或者等待当前项中的多个字段。

有关详细信息,请参阅How to wait for a change in any list, wait for multiple field changes the current item (SharePoint Workflow)

答案 3 :(得分:0)

当使用一个工作流程进行审批和另一个工作流程更新字段时,您可以使用“等待当前项目中的字段更改”,在批准时更新字段(批准的代码16,拒绝的代码17,正在进行中)代码2)这是一个例子:

等待MomoApproval等于16,然后将通知设置为最终

由于SharePoint修改了与工作流相关的字段,因此在批准时不会触发此代码;此字段不属于列表的架构。因此,更改工作流程状态不会触发项目更改事件。如果没有项目更改事件,第二个工作流将保持空闲状态,并且“等待当前项目中的字段更改”操作似乎无效,要绕过SharePoint 2010审批工作流的此行为,请执行以下操作:

  1. 打开SharePoint Designer 2010
  2. 转到您正在处理的网站
  3. 点击工作流程
  4. 右键单击“审批工作流程”
  5. 点击复制并修改
  6. 转到相关列表
  7. 点击关联现有工作流程
  8. 现在,在此工作流程中,单击“编辑工作流程”,单击“审批工作流程任务”
  9. 单击更改单个任务的行为
  10. 转到完整部分并添加此操作“将标题设置为当前项目:标题”
  11. 这将更改列表架构中的标题字段,该字段将触发项目更改事件,但标题的值将保持不变,此操作将不会影响列表的数据内容。这是一个简单的解决方法,工作正常,与其他解决方案(如创建活动,循环或暂停和重新启动工作流程)相比成本更低

    创建后,工作流程可导入Visual Studio 2010并成为解决方案的一部分请参阅此链接:http://msdn.microsoft.com/en-us/library/ee231580.aspx

    享受工作流程更新

    注意:当列表中的项目发生更改时,应该绑定更新字段的工作流程。

    穆罕默德·哈希姆(Mohamed Hachem)