我正在尝试在Sharepoint Designer上创建工作流程。工作流程应该等到Out-Of-The-Box批准工作流程完成。这是通过使用项目的创建启动我的工作流程并使用wait
活动:
等待当前项目的字段更改:
等待 InternalApproval等于16
问题:规则是正确的,但除非对项目进行编辑,否则事件不会触发。通常,每次编辑都会触发工作流程检查,但我的测试显示批准工作流程不会在项目上触发此事件。
这个问题有一个简单的方法吗?我虽然要实现忙碌的等待,但是如何(有wait 5 minutes
个活动,但没有goto
)?是否有我可以下载的活动可以等待另一个工作流程完成,或者忙等待条件满足?
解决我的问题的另一种方法是,如果InternalApproval工作流程更改了字段,但我无法实现...
答案 0 :(得分:1)
这是预期的行为。在项目更改时连接自行取消的批准工作流程将无用。在API级别,SharePoint在需要更新正在运行的项目时禁止引发事件。
-Oisin
答案 1 :(得分:1)
我最终编写了一个自定义工作流活动,等待更改完成,然后恢复工作流程。此活动可以以两种方式使用 - 在主工作流上,或在第二个工作流上,等待非触发更改,并进行触发更改(以便主工作流程恢复)。
编写它非常有趣 - 我使用Reflector从OOTB活动(正常等待字段更改)复制一些代码,并复制其动作xml。经过一些尝试后,这非常有效,给出了字段,运算符和值的列表。
使用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,新实例也将停止。
使用此技术可在等待满足特定条件时为您提供更多控制。这包括能够等到另一个列表项中的字段更新,或者等待当前项中的多个字段。
答案 3 :(得分:0)
当使用一个工作流程进行审批和另一个工作流程更新字段时,您可以使用“等待当前项目中的字段更改”,在批准时更新字段(批准的代码16,拒绝的代码17,正在进行中)代码2)这是一个例子:
等待MomoApproval等于16,然后将通知设置为最终
由于SharePoint修改了与工作流相关的字段,因此在批准时不会触发此代码;此字段不属于列表的架构。因此,更改工作流程状态不会触发项目更改事件。如果没有项目更改事件,第二个工作流将保持空闲状态,并且“等待当前项目中的字段更改”操作似乎无效,要绕过SharePoint 2010审批工作流的此行为,请执行以下操作:
这将更改列表架构中的标题字段,该字段将触发项目更改事件,但标题的值将保持不变,此操作将不会影响列表的数据内容。这是一个简单的解决方法,工作正常,与其他解决方案(如创建活动,循环或暂停和重新启动工作流程)相比成本更低
创建后,工作流程可导入Visual Studio 2010并成为解决方案的一部分请参阅此链接:http://msdn.microsoft.com/en-us/library/ee231580.aspx
享受工作流程更新
注意:当列表中的项目发生更改时,应该绑定更新字段的工作流程。
穆罕默德·哈希姆(Mohamed Hachem)