2012-01-04 2 views
1

Visual Studio로 작성된 사용자 지정 승인 워크 플로 문제가 발생합니다. 사용자 지정 콘텐츠 형식을 사용하여 승인 작업을 만듭니다. SharePoint 환경에서 워크 플로를 개발했지만 클라이언트가 기초 서버에서 실행하려고합니다. 내가 겪고있는 문제는 컨텐트 유형이 작업 목록에 할당 될 때입니다. 워크 플로가 실행될 때마다 목록 항목을 편집하거나 작업 항목을 업데이트 할 수 없습니다. 작업 목록에서 콘텐츠 유형을 제거하자마자 모든 레코드를보고 편집 할 수 있습니다. 로그에서 다음 이벤트가 발생합니다.사용자 지정 콘텐츠 형식의 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> 

답변

0

이 좋아, 그래서 솔루션

그리고 코드의 비트

은 ....이 내 생성 콘텐츠 형식의 방법으로 작업입니다 이 문제는 콘텐츠 유형 개체를 사용하여 만들기 작업을 사용한다는 사실과 관련이있었습니다. 생성 작업 객체로 바꾸고 코드를 통해 객체의 내용 유형을 설정할 수있었습니다. 여전히 이것이 내 테스트 농장에서 작동하지만 내 고객에게 실패한 이유는 무엇입니까? ...

+0

생성 작업 개체의 콘텐츠 형식 ID를 어떻게 설정 했습니까? 콘텐츠 형식으로 작업을 만드는 워크 플로에서 동일한 문제가 발생하여 솔루션을 시도하고 싶습니다. – Peterson

1

동일한 문제가 있으며 다음 코드로 해결되었습니다. 모든 일이 잘 작동하도록

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

그냥 콘텐츠 형식 ID에 010x0108 (0x010801 [이 지속 할 guid_])를 추가합니다. 그것은 버그, Microsoft는이 해결책을 주었다.

관련 문제