2017-04-11 174 views
0

我在訂單表單上有一個自定義工作流,如果訂單沒有被用戶追隨,那麼需要刪除訂單的關注。當我將它設置爲按需運行時,自定義工作流程正常工作,但在取消選中Dynamics CRM 2016中的按需選項時無法正常工作。自定義工作流程未在Dynamics CRM 2016中運行

以下是我的代碼段以及通過跟蹤服務收到的詳細信息。任何人都可以請指導這個?

代碼段

Guid orderId = this.inputEntity.Get(caContext).Id; 

var fetchXml = "<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false'>" + 
       " <entity name='postfollow'>" + 
       " <attribute name='regardingobjectid' />" + 
       " <attribute name='ownerid' />" + 
       " <filter type='and'>" + 
       "  <condition attribute='regardingobjectid' operator='eq' uitype='salesorder' value='"+ orderId + "' />" + 
       " </filter>" + 
       " </entity>" + 
       "</fetch>"; 
var followQuery = new FetchExpression(fetchXml); 
EntityCollection followCollection = service.RetrieveMultiple(followQuery); 
temp = followCollection.Entities.Count; 
if (temp < 1) 
{ 
    return; 
} 
ownerIds = new string[temp]; 
foreach (Entity follow in followCollection.Entities) 
{ 
    ownerIds[i] = (((EntityReference)follow.Attributes["ownerid"]).Id).ToString(); 
    i++; 
} 

List<string> allUsersList = allUsers(service, orderId); 
string[] allusersArray = allUsersList.Distinct().ToArray(); 
do 
{ 
    if (allusersArray.Contains(ownerIds[j].ToLower())) 
    { 

    } 
    else 
    { 
     removeFollowShip(caContext, service, new Guid(ownerIds[j]), orderId); 
    } 
    j++; 
} while (j < ownerIds.Length - 1); 

跟蹤服務詳情

插件跟蹤:

[Microsoft.Xrm.Sdk.Workflow: Microsoft.Xrm.Sdk.Workflow.Activities.RetrieveEntity] 
[RetrieveEntity] 

Error Message: 

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=8.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Entity Reference cannot have Id and Key Attributes empty.Detail: 
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts"> 
    <ErrorCode>-2147220989</ErrorCode> 
    <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" /> 
    <Message>Entity Reference cannot have Id and Key Attributes empty.</Message> 
    <Timestamp>2017-04-11T16:17:32.745259Z</Timestamp> 
    <InnerFault> 
    <ErrorCode>-2147220970</ErrorCode> 
    <ErrorDetails xmlns:d3p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic" /> 
    <Message>System.ArgumentException: Entity Reference cannot have Id and Key Attributes empty.</Message> 
    <Timestamp>2017-04-11T16:17:32.745259Z</Timestamp> 
    <InnerFault i:nil="true" /> 
    <TraceText i:nil="true" /> 
    </InnerFault> 
    <TraceText>[Microsoft.Xrm.Sdk.Workflow: Microsoft.Xrm.Sdk.Workflow.Activities.RetrieveEntity] 
[RetrieveEntity] 
</TraceText> 
</OrganizationServiceFault> 
    at Microsoft.Crm.Extensibility.OrganizationSdkServiceInternal.Retrieve(EntityReference entityReference, ColumnSet columnSet, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType, Boolean checkAdminMode) 
    at Microsoft.Crm.Extensibility.InprocessServiceProxy.RetrieveCore(String entityName, Guid id, ColumnSet columnSet) 
    at Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy.Retrieve(String entityName, Guid id, ColumnSet columnSet) 
    at Microsoft.Crm.Workflow.Services.RetrieveActivityService.<>c__DisplayClass1.<RetrieveInternal>b__0(IOrganizationService sdkService) 
    at Microsoft.Crm.Workflow.Services.ActivityServiceBase.ExecuteInTransactedContext(ActivityDelegate activityDelegate) 
    at Microsoft.Crm.Workflow.Services.RetrieveActivityService.ExecuteInternal(ActivityContext executionContext, RetrieveEntity retrieveEntity) 
    at Microsoft.Crm.Workflow.Services.RetrieveActivityService.Execute(ActivityContext executionContext, RetrieveEntity retrieveEntity) 
    at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager) 
    at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation) 
+0

投票回答問題時未解釋如何使它們變得更好並沒有幫助。 –

回答

0

當工作流點播運行時,它的安全環境下運行運行它的用戶。當它在後臺運行時,它將在工作流所有者的安全上下文中運行。你擁有這個工作流程嗎?如果沒有,請嘗試將其分配給自己,然後查看它是否可用作後臺工作流程。

+0

是的,我是工作流程的所有者 –

0

嘗試更換:

(((EntityReference)follow.Attributes["ownerid"]).Id).ToString(); 

有:

follow.Attributes.Contains("ownerid") ? (follow.GetAttributeValue<EntityReference>("ownerid").Id).ToString() : ""; 
0

我們也收到此錯誤(實體引用不能有Id和關鍵屬性爲空)。我發現在沙盒隔離模式下注冊自定義工作流程組件(在插件註冊工具中)。

相關問題