Вы не указали, где выполняется основной рабочий процесс - я предполагаю (и надеюсь), что он работает в этом основном списке.
Вы сказали, что всякий раз, когда в этом списке создается новый элемент, ваш рабочий процесс запускается -все, что вам нужно сделать, это изменить этот рабочий процесс, чтобы он также запускал при изменении элемента списка .Когда рабочий процесс запущен, все, что вам нужно сделать, это проверить, установлено ли какое-либо поле в вашем элементе списка (например, настраиваемое «MyWorkflow уже выполняется») - тогда вы знаете, что вы работаете в измененном состоянии элемента списка.
Другой подход состоит в том, чтобы создать еще один рабочий процесс для события измененный элемент и изменить PM в исходном рабочем процессе, где бы он ни был установлен.
Последний подходиспользовать приемники событий , что потребовало бы запуска Visual Studio, и я полагаю, это не то, что вам нужно (получатели событий также будут отслеживать событие, измененное вашим элементом).:
Как получить элемент задачи из списка задач, связанных с запущенным рабочим процессом?
Если у вас есть SPListItem
, вы можете просмотреть все рабочие процессы, запущенные с помощью SPListItem.Workflows
, который возвращаетВы SPWorkflowCollection
.Перебирая эту коллекцию, вы можете найти свой SPWorkflow
.В конце концов, этот рабочий процесс содержит коллекцию всех задач рабочего процесса через SPWorkflow.Tasks
.См. документацию MSDN на SPWorkflow
.
Некоторые примеры, выполняющие именно это: http://sansanwal.blogspot.com/2009/08/get-workflow-task-item-from-list-item.html
Если вы хотите сделать это в некодовом решении, выМожно также получить задачу через SharePoint Designer.Для этого вам нужно будет создать задачу самостоятельно и сохранить идентификатор задачи в некоторой переменной рабочего процесса, а затем можно получить эту задачу, запросив список задач для этого конкретного идентификатора задачи.