Как получить экземпляр рабочего процесса в деятельности? - PullRequest
2 голосов
/ 22 августа 2010

Мне не удалось получить экземпляр рабочего процесса в коде активности моего рабочего процесса. Как мне его получить? Я проверял WorkflowEventArgs.WorkflowInstance Свойство , но в моем коде активности у меня нет WorkflowEventArgs . вместо этого у меня есть EventArgs .

Что я пытаюсь сделать:

По сути, мне нужно получить доступ к данным очереди Workflow, чтобы получить значения в очереди. в приведенном выше URL, код для того же, но не в коде деятельности? Как правильно получить доступ к очереди?

Ответы [ 2 ]

2 голосов
/ 27 апреля 2013

С Получение экземпляра рабочего процесса :

public sealed class LogState : CodeActivity
{
    protected override void Execute(CodeActivityContext context)
    {
        Guid instanceId = context.WorkflowInstanceId;
        var connection = ConfigurationManager.ConnectionStrings["ConnectionString"];


        WorkflowInstanceProxy proxy = context.GetExtension<WorkflowInstanceInfo>().GetProxy();
        //...
    }

    protected override void CacheMetadata(CodeActivityMetadata metadata)
    {
        base.CacheMetadata(metadata);
        metadata.AddDefaultExtensionProvider<WorkflowInstanceInfo>(() => new WorkflowInstanceInfo());
    }

    public class WorkflowInstanceInfo : IWorkflowInstanceExtension
    {
        WorkflowInstanceProxy proxy;

        public IEnumerable<object> GetAdditionalExtensions()
        {
            yield break;
        }

        public void SetInstance(WorkflowInstanceProxy instance)
        {

            this.proxy = instance;
        }

        public WorkflowInstanceProxy GetProxy() { return proxy; }
    }
1 голос
/ 23 августа 2010

Я немного смущен вашим вопросом.Это то, что вы хотите?

public sealed class GetWorkflowIdActivity : CodeActivity<string>
{
    protected override string Execute(CodeActivityContext context)
    {
        return context.WorkflowInstanceId.ToString();
    }
}
...