Совместное использование переменных в WorkFlow Application / SIngelton Workflow - PullRequest
1 голос
/ 08 февраля 2012

я запускаю приложение ac #, которое запускает действия рабочего процесса для некоторых целей (используя invokeworkflowapplication).Я хотел бы иметь возможность совместно использовать статический класс между всеми потоками, которые я запускаю из моего приложения (своего рода класс синглтона, к которому они все могут обращаться в любое время).

Существует ли такой метод, чтобы сделатьпоток я запускаю запустить в каком-то контексте Singelton ??

Спасибо!

Ответы [ 2 ]

3 голосов
/ 10 февраля 2012

Хороший способ обмена данными между различными рабочими процессами и экземплярами состоит в создании workflowInstanceExtension. Это расширение должно быть добавлено вашим приложением, и его один и тот же экземпляр должен быть использован для всех ваших приложений WorkflowAppoker, invoker или service, поэтому он будет "singleton".

Пример:

MyDataSharingExtension dse = new MyDataSharingExtension();

WorkflowApplication wfApp1 = new WorkflowApplication();
wfApp1.Extensions.Add(dse);

WorkflowApplication wfApp2 = new WorkflowApplication();
wfApp2.Extensions.Add(dse);

Затем, внутри действия, вы можете позвонить

context.GetExtension<MyDataSharingExtension>().GetData();

Если вам нужны данные на уровне рабочего процесса (не код), вы можете выполнить пользовательское действие для извлечения данных в переменную.

Если это не соответствует вашим потребностям, взгляните на реализацию корпоративных переменных

1 голос
/ 08 февраля 2012

Вы можете использовать любое VB-выражение, которое вам нужно, в ваших рабочих процессах, чтобы вы могли просто получить доступ к одноэлементному объекту.Вы также можете добавить один и тот же объект в каждое приложение WorkflowApplication, используя коллекцию Extensions.В этом случае вы можете использовать извлечение объекта внутри пользовательских действий, но не используя выражения VB.

...