Поддержка человеческой деятельности в Windows Workflow 4 - PullRequest
3 голосов
/ 12 ноября 2010

Я изучаю Windows Workflow (WF) для .NET 4.0, и кажется, что несколько частей отсутствуют. С точки зрения BPM вам нужны концепции рабочих очередей и безопасности (авторизация пользователя).

Например, допустим, у вас есть несколько длительных экземпляров рабочих процессов из нескольких различных рабочих процессов, запущенных на сервере приложений (например, AppFabric). Несколько экземпляров ожидают в действии вызова от клиента (возможно, получение WCF с корреляцией на основе содержимого). Клиенты должны иметь возможность запрашивать сервер, чтобы определить, какие экземпляры рабочего процесса (из любого рабочего процесса) ожидают ввода от них. Это должно основываться на правах (предпочтительно с использованием служб Active Directory) на уровне активности.

Например:

  • Рабочий процесс 1
    • Активность A, коррелированная по orderId
      • Права на: Эбби, Билл
    • Активность B, коррелированная по orderId
      • Права на: Эбби
  • Рабочий процесс 2
    • Активность C, соотнесенная с workItemId
      • Права на: Законопроект

В рабочем процессе 1 запущено 3 экземпляра, два в действии A (заказы 123 и 456) и один в действии B (заказ 789).
Рабочий процесс 2 имеет 1 экземпляр, работающий в действии C (рабочий элемент 99).

Билл запрашивает сервер и видит:

Workflow  Activity  Key
1         A         orderId=123
1         A         orderId=456
2         C         workItemId=99

Эбби запрашивает сервер и видит:

Workflow  Activity  Key
1         A         orderId=123
1         A         orderId=456
1         B         orderId=789

В этой статье обсуждается написание функциональности (поддержка человеческой деятельности) с нуля для WF 3.x.

Вопросы:

  1. Есть ли какая-либо из этих функций в WF 4? Если так, то как это называется?
  2. Если нет, есть ли проект с открытым исходным кодом, который добавляет какую-либо из этих функций в WF 4?
  3. Если нет, есть ли более современные руководящие принципы по его реализации, чем в статье, упомянутой выше?

Примечание. Я бы не стал связывать решение с SharePoint, если смогу избежать его.

1 Ответ

2 голосов
/ 15 ноября 2010

Хорошо, давайте начнем с простых awnsers.

  1. Нет, в коробке нет прямой поддержки
  2. Насколько мне известно, ни один проект ОС не предлагает такую ​​функциональность.
  3. Не то, чтобы я знал, но тогда я должен признать, что я тоже не знал об этой статье.

Пока что за плохие новости.

Предположим, что вы хотите написать что-то вроде этого, однако есть некоторые основные строительные блоки. Если вы используете SqlWorkflowInstanceStore, вы получите столбец, содержащий текущие закладки для данного рабочего процесса. Это скажет вам, какие действия получения активны в данный рабочий процесс в данный момент.

В SqlWorkflowInstanceStore также существует концепция продвижения свойств, которая позволит вам извлекать и, следовательно, запрашивать переменные рабочего процесса, такие как orderId в вашем примере. Еще одна вещь, которую нужно зарегистрировать, - это человек, запустивший рабочий процесс, поскольку довольно часто определенные действия разрешены только отправителю.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...