среда, 9 июня 2010 г.

Удаление задач (PA - People Activity) после завершения процесса

Если вы еще не сталкивались со сложностью удаления активных форм (People Activity), то у Вас все еще впереди. По-умолчанию, если Ваш процесс завершается, то существующие активные формы не завершаются, а остаяются "висеть". Для операции удаления "подвисших" задач требуются некоторые пляски с бубном, которые я и собираюсь описать в данной статье.

Для удаления задач на понадобятся следующие сервисы (расположены в порядке использования):

1. TaskManagementService.wsdl

В данном сервисе нам понадобиться операция GetAvailableTasks. На самом деле очен интересная операция, если бы не www.github.com то я бы долго искал нужные параметры к этой операции.

Теперь подробнее о самой операции, а точне о ее параметрах:
- participantToken - идентификатор пользователя, из под которого мы будем запускать search задач, соответственно нужно, чтобы у этого пользователя был доступ к удаляемой форме.
- taskType - для нашего случа нужно использовать "PATask" - это People Activity task. Можно еще использовать PIPATask или Tasks. Но тогда буду другими и запросы, т.к. данные на выходе будут отличаться.
- subQuery - "T._state = TaskState.READY and T._instanceId='" в instanceId подставляем PID ($ode:pid) процесса из которого удаляем задачи. Т.е. строка будет выглядеть примерно так: "T._state = TaskState.READY and T._instanceId='3321'", где 3321 - PID процесса с задачами, которые надо удалить
- first - первая выводимая задача начальная задача
- max - максимальное выводимое число задач

2. InstanceManagement.wsdl
Операция delete:
- filter - "iid=3321", где 3321 - PID процесса с задачами, которые надо удалить

Операцией delete мы удаляем запущенный Instance процесса из ODE

3. CompleteTask.wsdl
Операция SkipTask:
- taskId - id задачи, берем из массива возвращенного операцией GetAvailableTasks. (Например: $tnsGetAvailableTasksResponseMsg.GetAvailableTasksResponse->task[*]->taskId
- participantToken - идентификатор пользователя

Операцие SkipTask мы "пропускаем" задачу и тем самым удаляем ее из Tempo

Через пару дней ыложу проект с примером.

Эту статью Вы можете прочитать на новом блоге

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.