Запуск последовательного рабочего процесса из рабочего процесса состояния - PullRequest
0 голосов
/ 08 июля 2010

Каков правильный способ запуска рабочего процесса из запущенного рабочего процесса?

В настоящее время мы используем Visual Studio 2010, и рабочий процесс выполняется в Sharepoint 2010. Ранее этот рабочий процесс функционировал в Sharepoint 2007 без проблем.После переноса пакета в 2010 г. рабочий процесс состояния работает нормально, но не запускает последовательный рабочий процесс должным образом.Если последовательность запускается вручную, она будет работать нормально.

Вот код, который мы используем для вызова последовательности из состояния.

// Starts CAB Implementation Workflow.
SPWorkflowManager wfManager = this.workflowProperties.Site.WorkflowManager;
        SPWorkflowAssociationCollection associationCol = this.workflowProperties.List.WorkflowAssociations;
        foreach (SPWorkflowAssociation association in associationCol)
        {
            // Replace {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} with the Id of the workflow you want to invoke 
            if (association.BaseId.ToString("B").Equals("{af0775b9-8f10-468d-9201-792a4f539c03}"))
            {
                wfManager.StartWorkflow(this.workflowProperties.Item, association, "", true);
                break;
            }
        }

1 Ответ

0 голосов
/ 08 июля 2010

При создании этого вопроса мы нашли решение. Похоже, что MOSS 2007 не возражал, если данные Ассоциации были нулевыми. MOSS 2010 не любит нулевые данные и запускает рабочий процесс, но вскоре после этого происходит сбой. Решением было дать пустой тег XML в качестве данных ассоциации.

// Starts CAB Implementation Workflow.
        SPWorkflowManager wfManager = this.workflowProperties.Site.WorkflowManager;
        SPWorkflowAssociationCollection associationCol = this.workflowProperties.List.WorkflowAssociations;
        foreach (SPWorkflowAssociation association in associationCol)
        {
            // Replace {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx} with the Id of the workflow you want to invoke 
            if (association.BaseId.ToString("B").Equals("{af0775b9-8f10-468d-9201-792a4f539c03}"))
            {
                wfManager.StartWorkflow(this.workflowProperties.Item, association, "<root />", true);
                break;
            }
        }

Теперь последовательный рабочий процесс успешно запускается из состояния без проблем.

...