2

我正在尝试在 Sharepoint Designer 上创建工作流。工作流应该等到开箱即用的批准工作流完成。这是通过创建项目开始我的工作流程并使用wait活动来完成的:

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

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

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

4

4 回答 4

1

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

-Oisin

于 2009-09-13T19:13:54.990 回答
1

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

自定义 Sharepoint 工作流活动 - 我正在写博客

检查条件也很简单,使用Helper类。所有属性及其绑定都是使用反射器复制的:

public void CheckStopCondition(object sender, ConditionalEventArgs e)
{
    bool checkAgainLater = Helper.TestListItem(Context, ListId, ListItem, 
                                               FieldName, Operator, Value);
    e.Result = checkAgainLater;
}
于 2009-09-17T12:43:59.613 回答
1

文章如何等待任何列表中的更改,等待多个字段更改当前项目以不同的方式等待当前项目中的字段更改(下面的链接)。

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

在等待满足特定标准时,使用这种技术可以让您有更多的控制权。这包括能够等到另一个列表项中的一个字段被更新,或者等待当前项中的多个字段。

有关详细信息,请参阅如何等待任何列表中的更改、等待多个字段更改当前项目(SharePoint 工作流)

于 2009-11-28T07:42:03.733 回答
0

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

等待 MomoApproval 等于 16 然后将 Notification 设置为 Final

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

  1. 打开 SharePoint 设计器 2010
  2. 转到您正在处理的站点
  3. 点击工作流程
  4. 右键单击审批工作流程
  5. 点击复制和修改
  6. 前往相关列表
  7. 单击关联现有工作流
  8. 现在在此工作流中,单击编辑工作流,单击批准工作流任务
  9. 单击更改单个任务的行为
  10. 转到完整部分并添加此操作“将标题设置为当前项目:标题”

这将更改列表架构中的标题字段,这将触发项目更改事件,但标题的值将保持不变,此操作不会影响列表的数据内容。这是一种简单的解决方法,效果很好,与其他解决方案(例如创建活动、循环或暂停和重新启动工作流)相比,成本更低

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

享受您的工作流程更新

注意:更新字段的工作流应该绑定在列表中有项目更改时启动。

穆罕默德·哈赫姆

于 2011-08-24T15:18:50.300 回答