项目特定字段上的Sitecore工作流程

时间:2010-01-22 19:51:40

标签: sitecore

在Sitecore中,是否可以设置工作流程,以便更改项目的某个字段不会导致项目进入审批状态?

我们希望有几个字段可编辑且可立即发布,同时强制执行更改为特定字段的工作流程。如果编辑此字段会将项目传递到“等待批准”状态。

我在reference中找不到任何关于如何执行此操作的内容。

我已经编写了一些来自Steve's reply的代码和一个关于此代码段的示例:

class Filter
{
    public void Process(WorkflowPipelineArgs args)
    {
        Database master = Factory.GetDatabase("master");
        Item item = args.DataItem;
        IWorkflow wf = master.WorkflowProvider.GetWorkflow(item);
        AllowPublishIfNoChangeToBodyField(item, wf);
    }

    /// <summary>
    /// If the item's 'Body' field was not modified change the workflow state to Pending Publication
    /// by running the Approve and Submit for Publication command
    /// </summary>
    /// <param name="item"></param>
    /// <param name="wf"></param>
    void AllowPublishIfNoChangeToBodyField(Item item, IWorkflow wf)
    {
        using (new Sitecore.SecurityModel.SecurityDisabler())
        {
            if (true//pseudo code for now: body wasn't modified)
            {
                wf.Execute("{command-id}", item, "allow edits and publishing of all fields other than 'Body'", false); 
            }
        }
    }
}

问题是'命令'的'下一个状态'会覆盖我对'动作'中项目所做的任何状态更改。

1 个答案:

答案 0 :(得分:7)

听起来像自定义工作流操作可以解决问题,当用户提交更改并以编程方式检查字段上的更改时触发它。

如果进行了更改,则将工作流程移至“等待批准”状态,如果不是退出并让其进入自动发布状态。

sdn上有一个名为“Changing the Workflow State on an Item via API”的片段,我自己没试过,但它应该可以解决这个问题。