2011-09-29 61 views
2

Sitecore的工作箱似乎只能显示位于sitecore/system/workflows工作流中的项目。有没有办法让它在树的其他部分显示工作流?我已经能够解决几个问题,将工作流程移出该位置,但这是当前的一个棘手问题。使工作箱在sitecore/system/workflows之外显示工作流程

我们的网站分为不同客户的几个部分(在“客户”的意思)。每个客户都需要自己的工作流程,我们希望他们能够导航到工作流程,而不必离开树的内容部分并进入系统部分。理想情况下,我们还希望尽可能多地移动每个客户的自定义内容,例如布局,效果图等,我们可以进入内容区域,以便我们或他们可以发布一个节点和子项目,并将与该客户端相关的所有内容都投入使用,例如我猜测大多数人使用“发布站点”功能。

+1

有趣...你为什么要将工作流程移出那里? – Bryan

+0

我编辑了解释原因。 – fwkb

回答

4

我很好奇你到底为了减轻这种情况所做的一切。使用反射器,我搜索了工作流根项目的GUID,{05592656-56D7-4D85-AACF-30919EE494F9}。它存储在Sitecore.ItemIDs.WorkflowRoot中,依次由Sitecore.Workflows.Simple.WorkflowProvider.GetWorkflows()使用。该方法被其他地方称为Sitecore.Shell.Applications.Workbox.WorkboxForm。但是,它通过Context.ContentDatabase.WorkflowProvider访问,它是位于/sitecore/databases/database/workflowProvider的配置元素。长话短说,如果你还没有,你应该尝试实现你自己的IWorkflowProvider,它扩展了Sitecore.Workflows.Simple.WorkflowProvider并在你的Web.config中配置它。覆盖GetWorkflows()可从您要查找的位置查找工作流程。使用反射器或ILSpy等工具来查看此方法当前的功能,并进行必要的更改。

请报告(如果可以的话,请发表博客吧!)。这不是Sitecore的一个区域,我认为很多人通常会扩展/增强。

+0

优秀的答案!默认的工作流程提供程序很容易进行子类化和重写,并使得简单的工作流程非常简单。 –