खोज…


आइटम स्थिति सेट करें और उस स्थिति में कार्य निष्पादित करें

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

इस धागे के लिए धन्यवाद

वर्कफ़्लो स्थिति को बदलने के लिए वर्कफ़्लो कमांड को निष्पादित करना

इस बेहतरीन पोस्ट के लिए धन्यवाद

यदि हम Sitecore UI व्यवहार की नकल करना चाहते हैं और कमांड को निष्पादित करते हैं जो वर्कफ़्लो स्थिति को बदल देगा, तो हमें दिए गए आइटम को असाइन किए गए वर्कफ़्लो का एक उदाहरण प्राप्त करने के लिए वर्कफ़्लोप्रोविडर का उपयोग करना होगा और चुने हुए कमांड आईडी के साथ एक्सक्यूट विधि को कॉल करना होगा। यह उन सभी कार्यों को आग देगा जो कमांड आइटम नोड के तहत परिभाषित किए गए हैं, आइटम की स्थिति को बदल दें और नए राज्य आइटम नोड के नीचे परिभाषित सभी ऑटो-क्रियाओं को आग दें:

public static WorkflowResult ExecuteCommand(Item item, string commandName, string comment)
{
    IWorkflow workflow = item.Database.WorkflowProvider.GetWorkflow(item);
 
    if (workflow == null)
    {
        return new WorkflowResult(false, "No workflow assigned to item");
    }
 
    WorkflowCommand command = workflow.GetCommands(item[FieldIDs.WorkflowState])
        .FirstOrDefault(c => c.DisplayName == commandName);
 
    if (command == null)
    {
        return new WorkflowResult(false, "Workflow command not found");
    }
 
    return workflow.Execute(command.CommandID, item, comment, false, new object[0]);
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow