2016-06-16 2 views
1

Я недавно начал работать с Workflows.I могу передавать выходные данные одного действия в качестве входа в другой, используя OutArgument. Возможно ли это, без использования OutArgument.Есть ли способ передать выходные данные одного рабочего процесса другому без использования outarguments?

Если возможно, пожалуйста, предложите мне как?

Спасибо всем

ответ

1

Вы можете использовать расширение рабочего процесса, чтобы действовать в качестве хранилища переменных в рамках всего процесса.

Создайте расширение рабочего процесса, которое содержит свойства. Добавьте расширение в приложение рабочего процесса. Задайте или Получите значение свойств из Деяний.

См https://msdn.microsoft.com/en-us/library/ff460215(v=vs.110).aspx

В ответ на ваш комментарий ниже.

Вы ошибаетесь в своем предположении. Расширение «имеет» выход из деятельности 1, который затем доступен для деятельности 2.

Например:

Создать класс для хранения свойств:

public class PropertyStoreExtension 
{ 
    int _myProperty 
    public int MyProperty 
    { 
     get 
     { 
      return this._myProperty; 
     } 
     set 
     { 
      this._myProperty = value; 
     } 
    } 
} 

Добавить это как расширение вашего рабочий процесс:

PropertyStoreExtension propertyStoreExtension = new PropertyStoreExtension 
WorkflowInvoker myWorkflowInstence = new   
WorkflowInvoker(myWorkflowDefinition()); 
myWorkflowInstence.Extensions.Add(propertyStoreExtension); 
myWorkflowInstence.Invoke() 

Ваш рабочий содержит 2 вида деятельности: Первый из них имеет свой «выход» и сохраняет его в расширении.

public class Activity1_SetProperty: CodeActivity 
{ 
    protected override void Execute(CodeActivityContext context) 
    { 
     PropertyStoreExtension pse =context.GetExtension<PropertyStoreExtension>(); 

     if (pse != null) 
     { 
      pse.MyProperty=outputValue;      
     } 

    } 
} 

Второй получает значение из внутренней линии.

public class Activity2_GetProperty: CodeActivity 
{ 
    protected override void Execute(CodeActivityContext context) 
    { 
     PropertyStoreExtension pse =context.GetExtension<PropertyStoreExtension>(); 

     if (pse != null) 
     { 
      int intputValue; = pse.MyProperty      
     } 

    } 
} 
+0

Но в этом случае можно получить доступ к выходу activity1 и отправить его Activity2 в качестве ввода? Тем не менее, я думаю, что мне нужно объявить переменную outArgument в Activity1. И тогда я могу назначить это значение outargument для класса Extension из Host, чтобы получить его в Activity2 как вход. «Pleasae исправить меня, если я ошибаюсь ... – user3883423

Смежные вопросы