Nella nostra applicazione creiamo alcune migliaia di record phonecall. Ogni phonecall dovrebbe avere un proprietario diverso, determinato da un metodo denominato GetAnyAppropriateSystemUser(), che trova alcuni SystemUser casuali in base a determinati criteri.Crea un nuovo record con un proprietario specifico senza chiamare AssignRequest in CRM 2011
Nell'esempio di codice seguente, viene creata una chiamata telefonica e in seguito viene utilizzato AssignRequest per specificare il proprietario.
PhoneCall phoneCall = new PhoneCall();
//
// stuff to set up the new PhoneCall instance here; populate fields, etc...
//
// determine this phonecall's owner through some algorithm
Guid appropriateOwner = GetAnyAppropriateSystemUser();
Guid createdPhoneCallId = _serviceProxy.Create(phoneCall);
if (createdPhoneCallId != Guid.Empty)
{
AssignRequest phoneCallAssign = new AssignRequest();
phoneCallAssign.Assignee = new EntityReference(SystemUser.EntityLogicalName, appropriateOwner);
phoneCallAssign.Target = new EntityReference(PhoneCall.EntityLogicalName, createdPhoneCallId);
_serviceProxy.Execute(phoneCallAssign);
}
Funziona bene, ma ci sono due chiamate, una da creare e una da assegnare. Va bene solo impostare "ownerid" del record PhoneCall prima di chiamare il metodo Create(), eliminando così la necessità di chiamare un AssignRequest in seguito? Sembra funzionare, e ho persino trovato un esempio che fa una cosa simile nell'SDK, come mostrato di seguito.
SDK Esempio: Roll Up Obiettivo dati per un periodo personalizzato contro il bersaglio delle Entrate
// Create three goals: one parent goal and two child goals.
Goal parentGoal = new Goal()
{
Title = "Parent Goal Example",
RollupOnlyFromChildGoals = true,
ConsiderOnlyGoalOwnersRecords = true,
TargetMoney = new Money(300.0M),
IsFiscalPeriodGoal = false,
MetricId = new EntityReference
{
Id = _metricId,
LogicalName = Metric.EntityLogicalName
},
GoalOwnerId = new EntityReference
{
Id = _salesManagerId,
LogicalName = SystemUser.EntityLogicalName
},
OwnerId = new EntityReference
{
Id = _salesManagerId,
LogicalName = SystemUser.EntityLogicalName
},
GoalStartDate = DateTime.Today.AddDays(-1),
GoalEndDate = DateTime.Today.AddDays(30)
};
_parentGoalId = _serviceProxy.Create(parentGoal);
Anche se sembra funzionare, ci sono qualche cosa che dobbiamo essere consapevoli di se impostiamo ownerid prima di creare il nuovo record? Ci sono delle differenze?
Grazie mille in anticipo.