Экспорт (0) Печать
Развернуть все

Определение и использование действий и типов с настраиваемым кодом в рабочих процессах Workflow Manager 1.0

Рабочие процессы Диспетчер рабочих процессов 1.0 создаются с использованием полностью декларативной модели, но если требуется использовать тип или действие с собственным кодом, администратор сервера может добавить такой тип к поддерживаемым, используя описанные здесь действия. Все типы можно добавлять явно — это рекомендуемый способ, особенно в рабочей среде. также можно выключить защиту от произвольного кода, что даст похожий эффект — все типы из всех сборок на сервере станут разрешенными. Такой подход может упростить разработку, но имеет определенные последствия для безопасности, поэтому он обычно не подходит для рабочей среды.

В этом разделе

noteПримечание
В этом разделе приводится обзор использования действий в настраиваемом коде в Диспетчер рабочих процессов 1.0. Дополнительные сведения об их создании см. в разделах Designing and Implementing Custom Activities и Authoring Workflows, Activities, and Expressions Using Imperative Code. Диспетчер рабочих процессов 1.0 поддерживает настраиваемые действия, наследующие от Activity и CodeActivity.

Поддержка действий с пользовательским кодом

Диспетчер рабочих процессов 1.0 позволяет пользователям публиковать и использовать собственные декларативные действия и рабочие процессы. Также здесь есть обширный набор встроенных действий, которые можно применять в пользовательских действиях и рабочих процессах. В Диспетчер рабочих процессов 1.0 также определяется так называемая надежная контактная зона — набор поддерживаемых типов и действий.

noteПримечание
Дополнительные сведения о встроенных в Диспетчер рабочих процессов 1.0 действиях и надежной контактной зоне см. в разделе Общие сведения о действиях в Workflow Manager 1.0 или Надежная контактная зона Workflow Manager 1.0.

Расширение набора разрешенных типов и действий может оказать огромное влияние на безопасность, производительность, масштабируемость и доступность Диспетчер рабочих процессов 1.0. Производить его следует только при абсолютной необходимости, например если для рабочего процесса нужны сложные вычисления или преобразования, которые было бы непрактично реализовывать в декларативной форме. В этом случае опытные пользователи могут выбрать использование действий с пользовательским кодом. Администратор сервера может расширить набор допустимых типов, чтобы добавить такое действие, если, конечно, он считает его полностью надежным.

noteПримечание
Действия, производящие ввод-вывод данных, должны использовать поддерживаемые действия HTTP для обмена сообщениями, чтобы связь входила в модель согласованности. Дополнительные сведения см. в разделах Обмен сообщениями в Workflow Manager 1.0 и Http Activities.

Чтобы расширить набор разрешенных типов, администратору нужно выполнить следующие действия.

  1. Скопировать сборку с типом (например, с действием, содержащим пользовательский код) и все необходимые файлы в следующие папки:

    • C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin

    • C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts

  2. Создайте файл AllowedTypes.xml в папке C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin.

  3. Отредактируйте файл AllowedTypes.xml, чтобы добавить необходимые типы в XML-элемент <AllowedTypes>, как показано в следующем примере.

    <AllowedTypes>
      <Assembly Name="Contoso.DataTransformations">
        <Namespace Name="Contoso.DataTransformations.Activities">
          <Type>DoDomainSpecificCalculation1</Type>
        </Namespace>
      </Assembly>
    
      <Assembly Name="Contoso.StronglyTypedAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
        <Namespace Name="Contoso.FinancialCalculation.Activities">
          <Type> GetPresentValueOfABond</Type>
        </Namespace>
      </Assembly>
    </AllowedTypes>
    
  4. Скопировать AllowedTypes.xml во вторую папку: C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts

  5. Перезапустить сервер Диспетчер рабочих процессов 1.0 в ходе следующего запланированного обслуживания.

noteПримечание
В случае многосерверного развертывания перечисленные действия следует выполнить на каждом сервере.

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

noteПримечание
В Диспетчер рабочих процессов 1.0 описанный подход применим только для действий с пользовательским кодом, производным от базовых классов Activity или CodeActivity.

Поддержка пользовательских типов данных

Пользовательские типы данных также можно добавлять в набор разрешенных типов. Для этого необходимо использовать те же действия, что и выше. При этом в список разрешенных типов может потребоваться добавить дополнительные действия, чтобы использовать или инициализировать свойства таких пользовательских типов. Ссылки на свойства не будут автоматически обрабатываться преобразователем выражений, поэтому для этого нельзя использовать выражения VB. Так, если у пользовательского типа Employee есть свойства Name и Salary, и при этом требуется использовать их в рабочем процессе, то нужно будет создать и добавить в список разрешенных пользовательские действия GetEmployeeName и GetEmployeeSalary.

Удаление пользовательского действия или типа данных

Чтобы удалить ранее добавленный тип из списка разрешенных, выполните следующие действия.

  1. Измените файл AllowedTypes.xml в двух местах (C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin и C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts) на каждом сервере и удалите из списка разрешенных типов ссылку на тип или типы, которые нужно удалить.

  2. Остановите службу WorkflowServiceBackend на всех серверах.

  3. Остановите пул приложений WorkflowMgmtPool на всех серверах — при этом сервер Диспетчер рабочих процессов 1.0 станет недоступен, поэтому это следует делать во время обслуживания.

  4. Удалите на всех серверах все пользовательские файлы, ранее скопированные в папки C:\Program Files\Workflow Manager\1.0\Workflow\WFWebRoot\bin и C:\Program Files\Workflow Manager\1.0\Workflow\Artifacts.

  5. Запустите пул приложений WorkflowMgmtPool на всех серверах.

  6. Запустите службу WorkflowServiceBackend на всех серверах.

  7. Удалите все декларативные действия и рабочие процессы, использовавшие удаленные типы, чтобы они больше не ссылались на них, или опубликуйте их обновленные версии без ссылок на эти типы.

Поддержка пользовательского кода путем выключения защиты от выполнения произвольного кода

Диспетчер рабочих процессов 1.0 позволяет администратору выключить защиту от выполнения произвольного кода. Это может быть удобно при разработке решений, использующих пользовательский код, чтобы не заниматься постоянно добавлением новых типов в список разрешенных. Выключение защиты от произвольного кода даст похожий эффект — все типы из всех сборок на сервере станут разрешенными. Это имеет соответствующие последствия для безопасности, поэтому так стоит делать только в случае, если настройка Диспетчер рабочих процессов 1.0 дает доступ на отправку действий рабочих процессов и изменение баз данных Диспетчер рабочих процессов 1.0 только надежным пользователям.

Чтобы выключить защиту от выполнения произвольного кода, выполните следующие действия.

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

  1. Открыть окно командной строки Workflow PowerShell.

    noteПримечание
    Инструкции по открытию командного окна Workflow PowerShell см. в разделе Настройка Workflow Manager 1.0 с помощью PowerShell.

  2. Выполнить командлет Set-WFServiceConfiguration со следующими параметрами:

    • В качестве ServiceUri указать URI сервера Workflow, например https://myserver.mydomain.mycompany.com:12290.

    • В качестве Name указать WorkflowServiceAllowUnsafeTypes.

    • В качестве Value указать true.

Чтобы включить защиту от выполнения произвольного кода, выполните следующие действия.

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

  1. Открыть окно командной строки Workflow PowerShell.

    noteПримечание
    Инструкции по открытию командного окна Workflow PowerShell см. в разделе Настройка Workflow Manager 1.0 с помощью PowerShell.

  2. Выполнить командлет Set-WFServiceConfiguration со следующими параметрами:

    • В качестве ServiceUri указать URI сервера Workflow, например https://myserver.mydomain.mycompany.com:12290.

    • В качестве Name указать WorkflowServiceAllowUnsafeTypes.

    • В качестве Value указать false.


Workflow Manager 1.0 MSDN Community Forum


Дата сборки:

2013-10-23

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2014 Microsoft