Я использую Visual Studio 2008 для создания функции последовательного рабочего процесса для MOSS (SP 2007), SP2.
Мой список задач - это библиотека документов, содержащая формы InfoPathи действие CreateTask в моем рабочем процессе прекрасно их создает (они работают в браузере, все продвигаемые поля свойств работают должным образом и т. д.).Хотя экземпляр WF связан с другим списком задач (невозможно выбрать библиотеку в форме ассоциации WF и невозможно опубликовать мою форму IP для чего-либо, кроме библиотеки).
В приложении приведен снимок экрана частиУ меня возникли проблемы с ... Все 4 из активированных действий имеют один и тот же токен корреляции ("taskToken"), а его владельцем является репликатор.
Условие "Мой пока действие" является условием кода,который на данный момент просто «возвращает» True.
Я пишу сообщение в список истории WF каждый раз, когда я вхожу в любой метод, и вижу следующее в конце моего списка истории (WF Status of «Выполняется "):
- в createTask1
- в OnTaskCreated1
- в утверждение TaskIsComplete (мой условный метод для while)
Ивот и все.WF просто остается там, независимо от того, сколько раз я обновляю свою задачу.
Я думаю, что есть проблема с ассоциацией моей задачи с WF.На странице «Состояние WF» над списком «История» я вижу свою задачу в списке, но с недопустимым URL-адресом (список, на который она указывает, даже не существует).
Суперосновный псевдокод моего метода createTask выглядит следующим образом:
private void createTask1_MethodInvoking() {
WriteToHistoryList("in createTask1");
// create task form in doc lib:
string newTaskName = [new unique name for task];
using (MemoryStream) {
XmlTextWriter writer;
// build XML doc for InfoPath form using writer
web.Files.Add(taskListURL + newTaskName + ".xml", writer.trimmedBufferBytes);
}
// get the new task item:
SPQuery = [CAML query using newTaskName];
SPListItem newTaskItem = [item from CAML query];
// associate new task form with WF (theoretically):
((CreateTask)sender).TaskId = newTaskItem.UniqueId;
this.currentTaskID = newTaskItem.UniqueId; // this is a public guid on my WF class, bound in the properties of the OnTaskCreated, OnTaskChanged, and OnTaskCompleted as the taskID
SPWorkflowTaskProperties props = new SPWorkflowTaskProperties();
props.AssignedTo = [me];
props.DueDate = [tomorrow];
props.Title = "Test Title"; // NOT the actual task title, but this is what's showing up on the WF Status page
((CreateTask)sender).TaskProperties = props;
this.currentTaskProps = props; // Another public property of the WF class, bound as the AfterProperties property of the later task Activities
}
Установка TaskId и TaskProperties приведенного отправителя И установка общедоступных свойств в классе на эти значения представляется мне избыточной и неправильной (что бы я сделал, если быэто был параллельный репликатор?), но я добавил this.currentTaskID
и this.currentTaskProps
, предположив, что моя задача не была правильно связана с действием OnTaskChanged (до того как его свойство TaskID было просто пустым GUID по умолчанию)
Есть идеи, что я мог упустить или сделать неправильно?