Как вы представляете состояние экземпляра рабочего процесса SharePoint? - PullRequest
1 голос
/ 16 января 2009

У меня есть довольно простой последовательный рабочий процесс утверждения, который имеет EnableModificationActivity, который входит в сферу действия почти для всего рабочего процесса. Моя форма модификации - это страница ASPX, которая дает пользователю возможность включать / отключать шаги утверждения, которые еще не были выполнены в рабочем процессе. Поскольку рабочий процесс может быть изменен несколько раз, я хотел бы, чтобы форма отражала текущее состояние рабочего процесса, то есть в нем должно отображаться, какие действия в настоящее время включены или отключены.

Я нашел неуклюжее решение для этого, которым я поделюсь чуть позже, но я должен поверить, что есть чистый способ сделать это.

1 Ответ

0 голосов
/ 19 января 2009

Итак, вот подход, который я в итоге выбрал ...

  1. Я создал класс Plain Old CLR Object (POCO), специфичный для хранения информации о состоянии моего конкретного рабочего процесса, способного к сериализации XML. Я назову это «Государственный объект» в будущем.

  2. Я создал многократно используемый класс под названием «WorkflowStateManager», который способен загружать и сохранять отдельные объекты состояний для заданного SPWorkflow. Этот класс доступен как рабочим процессом, так и формой модификации.

    • Сохранить состояние выполнения:
      1. XML сериализует объект в строку
      2. Устанавливает сериализованную строку в пакет свойств элемента списка SPWorkflow и вызывает метод Update () пакета свойств
    • Реализация состояния загрузки (по сути, обратная реализация реализации сохранения состояния)
      1. Получает сериализованную строку из пакета свойств элемента списка SPWorkflow
      2. XML Десериализация строки в объект состояния
  3. Когда рабочий процесс активирован, я создаю новый объект состояния, инициализирую для него различные свойства и сохраняю его с помощью WorkflowStateManager.

  4. По мере выполнения рабочего процесса я загружаю и обновляю объект состояния по мере необходимости следующим образом:

    • Используйте WorkflowStateManager для загрузки текущего объекта состояния
    • Принимать решения рабочего процесса на основе значений State Object
    • Внести необходимые изменения в объект состояния
    • Используйте WorkflowStateManager для сохранения объекта состояния
  5. Теперь моя форма модификации также может загружать, манипулировать и сохранять объект состояния с помощью WorkflowStateManager и, в свою очередь, предоставлять пользователю текущее состояние рабочего процесса.

Надеюсь, это кому-нибудь пригодится.

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