【问题标题】:Sitecore workflow on specific fields of an item项目特定字段的 Sitecore 工作流
【发布时间】:2013-08-27 03:01:17
【问题描述】:

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

我们希望有多个可编辑和可立即发布的字段,同时执行工作流以更改某个特定字段。如果编辑此字段,则会将该项目传递到“等待批准”状态。

我在reference 中没有找到有关如何执行此操作的任何信息。

我已经写了一些来自Steve's reply 的代码和一个关于这个sn-p的例子:

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); 
            }
        }
    }
}

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

【问题讨论】:

    标签: sitecore


    【解决方案1】:

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

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

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

    【讨论】:

    • 史蒂夫,我更新了我的问题,加入了一些新代码。对工作流的更改(我已验证状态已使用 item.State.GetWorkflowState() 更改)在操作后未保存。我认为在我的操作之后正在处理将状态切换到命令的“下一个状态字段”的“命令”的其余部分。有什么想法吗?谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多