仅供参考,我知道如何正确设置查找的更新,并且 99% 的肯定我已经正确地做到了这一点。
我知道这一点是因为当我将工作流程设置为在更改项目时自动启动时,它会完美运行。但是,当我简单地更改此设置以便它在创建新项目时自动启动时,它会取消工作流,并且我得到“强制失败:无法将输入查找数据转换为请求的类型”。如果这两个选项都被选中,那么它在创建时会失败,但只需单击项目属性上的编辑,然后“保存”即可使其工作。
工作流程在文档库上,工作方式如下;
上传后,用户从编辑属性表单的下拉列表中选择工作任务查找,然后保存项目(将其添加到文档库)。假设工作流然后查看选定的工作任务查找,并提取工作任务项具有的帐户和有效日期类型查找 ID,并将文档的相同字段设置为相同的值。
如果有帮助,这是工作流程的代码;
If Current Item: Parent Task is not empty
If Current Item: Sub Task is not empty
Log Both are empty to workflow history list
Then Set Account to Work Tasks:Account
The Log Set Account to workflow history list
Then Set Effective Date and Type to WorkTasks: Effective Date and Type
The Log Set EffDateType to the workflow history list
这一切都是一步完成的。我还添加了额外的步骤来测试帐户和生效日期类型字段是否已正确设置,如果没有再次设置。但是每次我在更改时运行工作流并且它工作时,它总是根据第一步(上面发布)正确设置这些字段,并将额外的检查日志记录到不需要它们的历史记录中。
例如,Integer for Tasks:Account 的查找设置为如下工作;
Date Source: Work Tasks (a list)
Field from Source: Account (a lookup)
Return Field as: Lookup ID (as Integer)
Find the List Item
Field: Title (from the Work Tasks list)
Value: Current Item: Parent Task (Which is a look up of the "Title"
Field from Work Tasks List, and is set to return the Value as a LookUp Value (As Text))
生效日期和类型设置几乎相同。
所以有人有任何见解吗?我尝试将其作为模拟步骤运行,设置工作流程暂停(1 分钟),更改查找类型以防我一开始就搞砸了,但最终上述工作流程确实有效,但只有当我将其设置为“自动开始更改(编辑)项目“,而不是像我需要做的那样“自动开始创建新项目”。
哦,是的,仅供参考,我在文档库表单的工作任务和子任务字段上使用 SPServices CascadingDropDown,但老实说,我不相信这与我的问题有任何关系。
更新:
我与另一位开发人员交谈过,他认为这是由于工作流程发生得太快的问题,在项目为自己创建 ID 之前,它需要执行查找。他让我在我的工作流程代码的最顶部(在 If 条件之上)添加另一个“暂停工作流程”并将其设置为 1 分钟。
然后它正常工作。
缺点是我们希望标签尽可能接近项目创建。因为图书馆的视图依赖于基于帐户和生效日期和类型的分组。更令人沮丧的是,微软的暂停工作流程只允许 1 分钟或更长时间,然后用于此的计时器经常关闭,导致暂停时间更长。到目前为止,每项测试目前都显示最少 2 分钟的暂停时间。
即时填充文件的一种可能的替代解决方案是使用 Javascript 和 SPServices 对任务列表进行查找以提取帐户和生效日期类型字段然后填充,但我的 Javascript 不是很强大,我需要帮助这个。如果有人有任何建议,我将不胜感激。