【问题标题】:Resolving incidents (closing cases) in CRM4 through webservices?通过 Web 服务解决 CRM4 中的事件(结案)?
【发布时间】:2009-12-29 14:33:48
【问题描述】:
我正在尝试通过网络服务解决/关闭 Dynamics CRM4 案例/事件。
单个SetStateIncidentRequest 是不够的,并返回Server was unable to process request 错误消息。我认为这与触发案例属性更改的活动工作流有关。我不知道是否还有其他因素阻止请求工作。
由于可以通过 GUI 关闭这些案例,我想为了通过 CrmService 实现它,需要遵循一组“正确”的步骤;不幸的是,我已经用谷歌搜索了一段时间,但没有找到我想要的。有人可以帮帮我吗?
【问题讨论】:
标签:
web-services
dynamics-crm
dynamics-crm-4
【解决方案1】:
要解决 CRM 中的案例(在 VB.NET 中),我执行以下操作:
Try
Dim activity As New incidentresolution
Dim closeRequest As New CloseIncidentRequest
Dim closeResponse As New CloseIncidentResponse
Dim strErrors As String = String.Empty()
activity.incidentid = New Lookup
activity.incidentid.type = EntityName.incident.ToString
activity.incidentid.Value = //[GUID OF INCIDENT]
activity.ownerid = New Owner
activity.ownerid.type = EntityName.systemuser.ToString
activity.ownerid.Value = //[GUID OF USER PERFORMING ACTION]
activity.statecode = New IncidentResolutionStateInfo
activity.statecode.Value = 1 //Resolved
activity.statuscode = New Status
activity.statuscode.Value = 5 //Problem Solved
closeRequest.IncidentResolution = activity
closeRequest.Status = 5 //Problem Solved
// IF REQUIRED:
activity.timespent = New CrmNumber
activity.timespent.Value = //[INTEGER REPRESENTING No. OF MIN SPENT ON CASE]
closeResponse = objCrm.Execute(closeRequest)
Catch ex As System.Web.Services.Protocols.SoapException
Dim root As XmlElement = ex.Detail
strErrors = strErrors & vbCrLf & vbCrLf & root.ChildNodes(0).ChildNodes(3).InnerText
Return False
End Try
【解决方案2】:
这里有一个提示 - 捕获 SoapException 并检查 Detail.OuterXML 属性,您将获得更详细的错误消息。您可能没有正确构建您的请求。
【解决方案3】:
确实,我不知道有一个CloseIncidentRequest 类可以与CrmService.Execute() 方法一起使用。 SetStateIncidentRequeset 很可能不起作用,因为预计事件解决方案是通过这种方式创建的。遗憾的是类和操作的名称使用不一致(案例/事件、解决/关闭)...