gpt4 book ai didi

api - 使用 API 执行 Sitecore 工作流状态操作

转载 作者:行者123 更新时间:2023-12-02 08:38:28 25 4
gpt4 key购买 nike

我想知道是否可以通过 API 执行 Sitecore 工作流操作。我不能使用这里的方法:http://sdn.sitecore.net/Snippets/Workflow/Change%20the%20Workflow%20State%20on%20an%20Item%20via%20API.aspx (执行将触发状态更改的命令)。

我想要的是以编程方式创建一个项目,然后将工作流状态设置为“等待批准”,例如,即使没有设置了“下一步”的命令也是如此。

理想情况下,它应该是这样的

foreach (var action in awaitingForApprovalState.Actions)
{
action.Execute();
}

最佳答案

下面是设置项目状态并执行处于此状态的操作的代码:

public void MoveToStateAndExecuteActions(Item item, ID workflowStateId)
{
Sitecore.Workflows.IWorkflowProvider workflowProvider = Item.Database.WorkflowProvider;
Sitecore.Workflows.IWorkflow workflow = workflowProvider.GetWorkflow(item);

// if item is in any workflow
if (workflow != null)
{
using (new Sitecore.Data.Items.EditContext(item))
{
// update item's state to the new one
item[Sitecore.FieldIDs.WorkflowState] = workflowStateId.ToString();
}

Item stateItem = ItemManager.GetItem(workflowStateId,
Language.Current, Sitecore.Data.Version.Latest, item.Database, SecurityCheck.Disable);

// if there are any actions for the new state
if (!stateItem.HasChildren)
return;

WorkflowPipelineArgs workflowPipelineArgs = new WorkflowPipelineArgs(item, null, null);

// start executing the actions
Pipeline pipeline = Pipeline.Start(stateItem, workflowPipelineArgs);
if (pipeline == null)
return;
WorkflowCounters.ActionsExecuted.IncrementBy(pipeline.Processors.Count);
}
}

关于api - 使用 API 执行 Sitecore 工作流状态操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18903060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com