Проблема с рабочим процессом Sharepoint с пользовательским типом контента - PullRequest
1 голос
/ 04 января 2012

У меня возникла проблема с пользовательским процессом утверждения, который был написан в visual studio.Он создает задачу утверждения с использованием пользовательского типа контента.Я разработал рабочий процесс в корпоративной среде sharepoint, но клиент пытается запустить его на базовом сервере.Проблема, с которой я сталкиваюсь, заключается в том, когда тип контента назначается списку задач.При каждом запуске рабочего процесса я не могу изменить элемент списка или обновить элемент задачи.Как только я удаляю тип содержимого из списка задач, я могу нормально просматривать и редактировать все записи.Я получаю следующее событие в журналах:

System.NullReferenceException: ссылка на объект не установлена ​​для экземпляра объекта.в Microsoft.SharePoint.Publishing.CachedListItem.GetWorkflowInfo (элемент SPListItem) в Microsoft.SharePoint.Publishing.CachedListItem

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

И немного кода .... это моя задача создания с методом типа контента:

private void createTaskWithContentType1_MethodInvoking(object sender, EventArgs e)
    {
        //set the primary approval task as not completed
        this.primaryApprovalTaskCompleted = false;

        //get the primary approver
        var field = workflowProperties.Item.Fields.GetField("primaryApprover") as SPFieldUser;
        var fieldValue = field.GetFieldValue(workflowProperties.Item[field.Id].ToString()) as SPFieldUserValue;

        createTaskWithContentType1.TaskProperties.AssignedTo = fieldValue.User.LoginName;

        createTaskWithContentType1.TaskProperties.DueDate = DateTime.Now.AddHours(4);

        createTaskWithContentType1.TaskProperties.Title = "Primary Approval for Batch Job ID: " + workflowProperties.Item["batchJobId"].ToString();

        createTaskWithContentType1.TaskProperties.SendEmailNotification = true;

    }

и XML для моего типа контента:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Field ID="{46F9442F-19E3-4818-8FE7-719E5961C8A1}" Name="ApprovalStatus" DisplayName="Approval Status" Type="Choice" Required="TRUE" Sealed="TRUE" Overwrite="True" >
    <CHOICES>
      <CHOICE>Approve</CHOICE>
      <CHOICE>Reject</CHOICE>
    </CHOICES>
  </Field>

  <Field ID="{B485C5E5-A85C-4C09-AE96-F7FC71FB4A3D}" Name="ApprovalNotes" DisplayName="Approval Notes" Type="Text" Overwrite="True" />


  <ContentType ID="0x01080100922FA9051D1C471DA956E627E6B3B81E"
           Name="ApprovalContentType"
           Group="Custom Content Types"
           Description="Approval Content Type"
           Version="0" 
           Overwrite="True">
     <FieldRefs>
      <RemoveFieldRef ID="{a8eb573e-9e11-481a-a8c9-1104a54b2fbd}" Name="Priority" Hidden="TRUE"/>
      <RemoveFieldRef ID="{c3a92d97-2b77-4a25-9698-3ab54874bc6f}" Name="Predecessors" Hidden="TRUE"/>
      <RemoveFieldRef ID="{c15b34c3-ce7d-490a-b133-3f4de8801b76}" Name="Status" Hidden="TRUE"/>
      <RemoveFieldRef ID="{d2311440-1ed6-46ea-b46d-daa643dc3886}" Name="PercentComplete" Hidden="TRUE"/>
      <RemoveFieldRef ID="{7662cd2c-f069-4dba-9e35-082cf976e170}" Name="Body" Hidden="TRUE"/>
      <FieldRef
    ID="{46F9442F-19E3-4818-8FE7-719E5961C8A1}"
    Name="ApprovalStatus" Sealed="TRUE" Required="TRUE"/>
      <FieldRef
    ID="{B485C5E5-A85C-4C09-AE96-F7FC71FB4A3D}"
    Name="ApprovalNotes"/>
    </FieldRefs>

  </ContentType>
</Elements>

Ответы [ 2 ]

1 голос
/ 14 сентября 2014

У меня такая же проблема, и она решена с помощью следующего кода.

   <ContentType ID="0x01080100C2CC93E34F784038BE7CA4CFD86BD58E"
                Name="taskCT"
                Group="Custom Content Types"
                Description="My Content Type"
                Inherits="FALSE"
                Version="0">

Просто добавьте 01 после 0x0108 (0x010801 [resting guid_]) в id типа контента, чтобы все работало нормально. Это ошибка, Microsoft дала это решение.

0 голосов
/ 10 января 2012

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

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