在Sitecore中,是否可以设置工作流程,以便更改项目的某个字段不会导致项目进入审批状态?
我们希望有几个字段可编辑并立即发布,同时强制执行工作流以更改到一个特定字段.如果编辑此字段会将项目传递到"等待批准"状态.
我在参考文献中没有找到任何关于如何做到这一点的内容.
我已经编写了一些代码,这些代码来自Steve的回复和这个代码片段的示例:
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);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是'命令'的'下一个状态'会覆盖我对'动作'中项目所做的任何状态更改.
听起来像自定义工作流操作可以解决问题,当用户提交更改并以编程方式检查字段上的更改时触发它.
如果已进行更改,则将工作流程移至"等待批准"状态,如果不是仅退出并让其进入自动发布状态.
在sdn上有一个名为" 通过API更改项目的工作流状态 "的片段,我自己没有尝试过,但它应该可以解决问题.
归档时间: |
|
查看次数: |
1896 次 |
最近记录: |