So erstellen Sie programmgesteuert eine Workflow- und Listenzuordnung

Ursprünglicher Autor: David HOCQUET
  • Übersetzung

Beitragszweck



Dieser Beitrag soll veranschaulichen, wie eine Workflow- und Listenzuordnung programmgesteuert durchgeführt wird. Der Workflow kann Standard sein oder in Visual Studio erstellt werden. Für den Workflow werden Standardaufgabenlisten und eine Workflowverlaufsliste verwendet.

Beispiele



Wir sind uns einig, dass die Webvariable ein SPWeb-Objekt ist, das die Liste enthält, die wir mit dem Workflow verknüpfen müssen.

1. Deklarieren Sie die Variablen, die wir verwenden werden



  1. SPList myList = null;                              // Лист для ассоциации с workflow
  2. string myListName = null;                          // название нашего спика
  3. SPList historyList = null;                         // список истории workflow
  4. SPList taskList = null;                             // список задач workflow
  5. string workflowTemplateGuid = null;                 // Guid шаблона worklfow
  6. SPWorkflowTemplate workflowTemplate = null;         // шаблон Workflow
  7. SPWorkflowAssociation workflowAssociation = null;  // ассоциация с workflow
  8. string workflowAssocName = null;                    // имя ассоциации с workflow

* This source code was highlighted with Source Code Highlighter.


2. Initialisierung



Stellen Sie sicher, dass Sie den internen Namen der Liste verwenden. Wenn Sie den Namen der Verknüpfung mit dem Workflow festlegen, kann er mit dem Namen des entsprechenden Workflows übereinstimmen.

  1. myListName = "My list name";
  2. workflowAssocName = "My Workflow";

* This source code was highlighted with Source Code Highlighter.


3. Holen Sie sich ein Workflow-Muster



Wenn Sie einen benutzerdefinierten Workflow verwenden möchten und die GUID der Vorlage kennen, verwenden Sie diese.

  1. workflowTemplateGuid = "BAD855B1-32CE-4bf1-A29E-463678304E1A";
  2. workflowTemplate = web.WorkflowTemplates[new Guid(workflowTemplateGuid)];

* This source code was highlighted with Source Code Highlighter.

Sie können die GUID der Vorlage auch mit der Methode GetTemplateByName abrufen.

  1. // Пытаемся получить список истории workflow
  2. try
  3. {
  4.      historyList = web.Lists["Workflow History"];
  5. }
  6. catch (ArgumentException exc)
  7. {
  8.      // Создаем список истории workflow
  9.      Guid listGuid = web.Lists.Add("Workflow History", "", SPListTemplateType.WorkflowHistory);
  10.      historyList = web.Lists[listGuid];
  11.      historyList.Hidden = true;
  12.      historyList.Update();
  13. }

* This source code was highlighted with Source Code Highlighter.


4. Abrufen oder Erstellen von Listen mit Workflowverlauf und Aufgaben.



Die vom Workflow verwendete Verlaufsliste muss von der WorkflowHistory-Listenvorlage geerbt werden. In den meisten Fällen müssen Sie es nicht erstellen.

  1. workflowTemplate = web.WorkflowTemplates.GetTemplateByName(        "Template name",        System.Globalization.CultureInfo.CurrentCulture);

* This source code was highlighted with Source Code Highlighter.

Eine Aufgabenliste ist eine reguläre Liste, die von einer Aufgabenlistenvorlage geerbt wird. Wenn Sie eine bestimmte Aufgabenliste für den Workflow erstellen möchten, sollten Sie diese nicht als "Aufgaben" bezeichnen. Zum Beispiel können wir es "Workflow-Aufgaben" nennen.

  1. // Пытаемся получить список задач для workflow
  2. try
  3. {
  4.      taskList = web.Lists["Workflow Tasks"];
  5. }
  6. catch (ArgumentException exc)
  7. {
  8.      // Создаём список задач для workflow
  9.      Guid listGuid = web.Lists.Add("Workflow Tasks", "", SPListTemplateType.Tasks);
  10.      taskList = web.Lists[listGuid];
  11.      taskList.Hidden = true;
  12.      taskList.Update();
  13. }

* This source code was highlighted with Source Code Highlighter.


5. Erstellen Sie eine Verknüpfung mit dem Workflow, konfigurieren Sie ihn und hängen Sie ihn an die Liste an.



  1. // Включаем небезопасные обновления для узла (web)
  2. web.AllowUnsafeUpdates = true;
  3. try
  4. {
  5.         // Создаем ассоциацию workflow
  6.         workflowAssociation = SPWorkflowAssociation.CreateListAssociation(                workflowTemplate,                workflowAssocName, taskList, historyList);
  7.  
  8.         // Устанавливаем параметры workflow
  9.         workflowAssociation.AllowManual = false;
  10.         workflowAssociation.AutoStartCreate = true;
  11.         workflowAssociation.AutoStartChange = false;
  12.  
  13.         // Связываем workflow со списком
  14.         myList.AddWorkflowAssociation(workflowAssociation);
  15.  
  16.         // Активируем ассоциацию
  17.         workflowAssociation.Enabled = true;
  18. }
  19. finally
  20. {
  21.         web.AllowUnsafeUpdates = false;
  22. }

* This source code was highlighted with Source Code Highlighter.

Jetzt auch beliebt: