0

我需要从当前 Web 获取 OOB 批准工作流,以将其与我的自定义列表相关联

我试图通过 BaseId 获取它,但后来我知道 BaseId 对于不同的语言是不一样的。

有没有其他方法可以为使用不同语言创建的网站获取 OOB 审批工作流模板?

我也尝试过 GetTemplateByName 方法,但它也为英语以外的任何语言返回 null。

web.WorkflowTemplates.GetTemplateByName("审批 - SharePoint 2010", CultureInfo.CurrentCulture)

任何帮助,将不胜感激。

谢谢桑杰

4

1 回答 1

0

我自己解决了这个问题。

正如我在问题中提到的,BaseId 因语言而异。在尝试了不同的方法并用谷歌搜索后,我没有找到任何解决问题的方法,所以我开始自己调查。

在我的调查过程中,我获取了 BaseId 用于不同语言的审批工作流,很快就出现了一种模式。事实证明,除了最后三位之外,每种语言的 BaseId (Guid) 几乎相同,而这三位基本上是 LCID 的十六进制表示!!

所以,这就是如何形成基于模板的 id

字符串 baseId = "8ad4d8f0-93a7-4941-9657-cf3706f00" + web.Language.ToString("X"); Guid workflowBaseId = new Guid(baseId);

因此,一旦我们有了基本 ID,我们就可以使用相同的方法来检索模板:web.WorkflowTemplates.GetTemplateByBaseID(workflowBaseId);

我还在这里写了一篇关于这个的博客文章,以防您想查看工作流关联的整个代码:http: //sanjaybhagia.wordpress.com/2013/10/20/associating-oob-approval-workflow -with-custom-list-for-different-locale-lcids/

希望能帮助到你。

问候, 桑杰

于 2013-10-20T16:12:45.693 回答