通过工作流以编程方式处理所有Sitecore项目

伊恩·格雷厄姆(Ian Graham)

我有很多Workbox需要清除的项目。

我需要处理这些项目,以便可以根据以下规则为它们分配工作流状态(无需触发工作流操作):

如果项目处于草稿状态或等待批准,并且发布的版本高于当前版本,则将工作流状态设置为xworflowstate。

我没有对工作流进行过多的试验,所以有人对我如何实现此目标有任何代码示例或想法吗?

马雷克·穆西拉克

这是有关以编程方式更改Sitecore项目的工作流状态的博客文章

首先,您需要找到所选工作流程状态中的所有项目:

IWorkflow[] workflows = Sitecore.Context.Database.WorkflowProvider.GetWorkflows();

IWorkflow chosenWorkflow = workflows[..]; // choose your worfklow

WorkflowState[] workflowStates = chosenWorkflow.GetStates();

foreach (WorkflowState state in workflowStates)
{
    if (!state.FinalState)
    {
        DataUri[] itemDataUris = chosenWorkflow.GetItems(state.StateID);
        foreach (DataUri uri in itemDataUris)
        {
            Item item = Sitecore.Context.Database.GetItem(uri);
            /* check other conditions - newer version exists etc */
            ChangeWorkflowState(item, newWorkflowStateId);
        }
    }
}

不执行与新工作流程状态相关的任何操作的情况下,更改Sitecore项的工作流程状态的最简单代码是:

public static WorkflowResult ChangeWorkflowState(Item item, ID workflowStateId)
{
    using (new EditContext(item))
    {
        item[FieldIDs.WorkflowState] = workflowStateId.ToString();
    }

    return new WorkflowResult(true, "OK", workflowStateId);
}

public static WorkflowResult ChangeWorkflowState(Item item, string workflowStateName)
{
    IWorkflow workflow = item.Database.WorkflowProvider.GetWorkflow(item);

    if (workflow == null)
    {
        return new WorkflowResult(false, "No workflow assigned to item");
    }

    WorkflowState newState = workflow.GetStates()
        .FirstOrDefault(state => state.DisplayName == workflowStateName);

    if (newState == null)
    {
        return new WorkflowResult(false, "Cannot find workflow state " + workflowStateName);
    }

    return ChangeWorkflowState(item, ID.Parse(newState.StateID));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 Alfresco 工作流控制台删除所有工作流

来自分类Dev

如何使用自定义工作流步骤查找所有工作流

来自分类Dev

CRM Dynamics工作流未触发所有记录

来自分类Dev

Sharepoint 设计器不会在工作流中显示当前项目的所有字段

来自分类Dev

以编程方式修改 Xtext 生成的 Mwe2 工作流

来自分类Dev

无法在Sitecore项上设置工作流和工作流状态属性

来自分类Dev

通过脚本“调用” Powershell工作流

来自分类Dev

创建采购订单工作流忽略具有特定项目->位置的项目

来自分类Dev

Sitecore 以编程方式比较项目版本

来自分类Dev

以编程方式获取CMake项目中的所有目标

来自分类Dev

以编程方式使所有WPF项目窗口最顶层

来自分类Dev

PrimeNG Treetable以编程方式扩展所有不工作的节点

来自分类Dev

Sitecore工作流程-以草稿状态发布项目

来自分类Dev

在 gitflow 工作流中处理拉取请求的工作流(不经常发布)?

来自分类Dev

Oozie:在协调器中重新运行所有非 SUCCEEDED 工作流

来自分类Dev

具有通过使用云形成来调用子工作流状态的AWS StepFunction

来自分类Dev

基于Python的异步工作流模块:celery工作流和luigi工作流有什么区别?

来自分类Dev

Sitecore项目-以编程方式测试匿名用户是否具有权限

来自分类Dev

以编程方式启动工作流程时设置InArgument

来自分类Dev

如何以编程方式获取站点中所有Sitecore域的列表?

来自分类Dev

具有多个流的RTC工作流?

来自分类Dev

VS2012 Intellisense无法用于工作流项目

来自分类Dev

这是一个错误吗?还是匿名用户工作流发生的方式有所不同?

来自分类Dev

通过Dynamics CRM工作流发送会议通知

来自分类Dev

通过 REST 调用启动 Argo 工作流

来自分类Dev

是否存在用于格式化html文件的github操作或工作流,或者以编程方式完成故障保护的方法?

来自分类Dev

如何在Sitecore中以编程方式创建项目

来自分类Dev

如何以编程方式恢复 Sitecore 项目存储桶?

来自分类Dev

如何在github动作工作流ci中通过npm安装私有github仓库

Related 相关文章

  1. 1

    使用 Alfresco 工作流控制台删除所有工作流

  2. 2

    如何使用自定义工作流步骤查找所有工作流

  3. 3

    CRM Dynamics工作流未触发所有记录

  4. 4

    Sharepoint 设计器不会在工作流中显示当前项目的所有字段

  5. 5

    以编程方式修改 Xtext 生成的 Mwe2 工作流

  6. 6

    无法在Sitecore项上设置工作流和工作流状态属性

  7. 7

    通过脚本“调用” Powershell工作流

  8. 8

    创建采购订单工作流忽略具有特定项目->位置的项目

  9. 9

    Sitecore 以编程方式比较项目版本

  10. 10

    以编程方式获取CMake项目中的所有目标

  11. 11

    以编程方式使所有WPF项目窗口最顶层

  12. 12

    PrimeNG Treetable以编程方式扩展所有不工作的节点

  13. 13

    Sitecore工作流程-以草稿状态发布项目

  14. 14

    在 gitflow 工作流中处理拉取请求的工作流(不经常发布)?

  15. 15

    Oozie:在协调器中重新运行所有非 SUCCEEDED 工作流

  16. 16

    具有通过使用云形成来调用子工作流状态的AWS StepFunction

  17. 17

    基于Python的异步工作流模块:celery工作流和luigi工作流有什么区别?

  18. 18

    Sitecore项目-以编程方式测试匿名用户是否具有权限

  19. 19

    以编程方式启动工作流程时设置InArgument

  20. 20

    如何以编程方式获取站点中所有Sitecore域的列表?

  21. 21

    具有多个流的RTC工作流?

  22. 22

    VS2012 Intellisense无法用于工作流项目

  23. 23

    这是一个错误吗?还是匿名用户工作流发生的方式有所不同?

  24. 24

    通过Dynamics CRM工作流发送会议通知

  25. 25

    通过 REST 调用启动 Argo 工作流

  26. 26

    是否存在用于格式化html文件的github操作或工作流,或者以编程方式完成故障保护的方法?

  27. 27

    如何在Sitecore中以编程方式创建项目

  28. 28

    如何以编程方式恢复 Sitecore 项目存储桶?

  29. 29

    如何在github动作工作流ci中通过npm安装私有github仓库

热门标签

归档