商业流程中的traversedpath

最近开发插件的时候遇到了这个错误“The traversed path should end with the new active stage.”

网上搜索了一下,基本上确认是和travesedpath相关,这个新增的内部应用列主要储存了商业流程从第一步到活跃步骤的stageid列表。例如一个流程有6步,现在已经运行到了第3步,那个field就储存了1st stageid,2ndstageid,3rd stageid,用逗号分隔开

“c1a07479-aa88-4b50-9675-61d840083530,efff5adb-48f2-47c7-8d0b-5f3807702f9b,a2717242-a072-4cd0-ac57-3a4eaddbcca7”

这个是在商业流程有分支的时候可以知道它的前面步骤的路径,但是具体使用在MSDN上没有细致描述。

由于系统会维护这个field的值,所以在工作流,插件等外部开发的时候,是不能更新商业流程中存在的参数的,之前的错误就是在插件中更新new_closesummary,那个是流程中的参数。

c["new_closesummary"] = accReader["CloseSummary"].ToString();

所以将这个new_closesummary从流程中移除就可以正常运行了。

另外的做法是直接修改这个travesedpath的值也是可行的, 不过这个不是标准做法,还是尽量不要使用。

traversedPath = currentEntity.Attribute["traversedpath"];
travesedPath = travesedPath  + “,”+newStageid;

结论是商业流程现在对于外部开发还是有很多陷阱, 尽量使用javascript客户端模拟用户操作,避免插件这种系统级数的修改。

原文地址:https://www.cnblogs.com/yeung/p/5715719.html