31.03.2008, 13:14 | #1 |
Участник
|
Создание пользовательской конструкции бизнес-процесса...
Подскажите, что не так, почему Workflow Manager ругается когда я пытаюсь прикрутить свой dll, пишет файл конфигурации неправильный, либо к нему нет доступа.
Делаю всё как в книжке написано: 1. Создал класс с кодом: Код: using System; using System.Collections.Generic; using System.Text; using System.Web.Services; using WorkingWithCrm.Workflow.CrmSdk; using System.Net; namespace WorkingWithCrm.Workflow { public class Incident { public Incident() {} public void CreateCaseFromEmail(Guid ActivityId, string Subject, string EmailAddress, string Description) { Guid defaultContactId = new Guid("97C0AE0F-DD6C-DC11-88DB-001109412F09"); Guid defaultOwnerId = new Guid("1DDB171D-19B1-DB11-989B-001109412F09"); Guid serviceUserId = new Guid("1DDB171D-19B1-DB11-989B-001109412F09"); CrmService service = new CrmService(); service.Credentials = new NetworkCredential("CRMUSER", "***", "ROGAIKOPITA"); service.CallerIdValue = new CallerId(); service.CallerIdValue.CallerGuid = serviceUserId; //Attempt to retrieve a contact record from the e-mail, usibg QueryByAttribute class ColumnSet cols = new ColumnSet(); cols.Attributes = new string[] { "contactid" }; QueryByAttribute query = new QueryByAttribute(); query.ColumnSet = cols; query.EntityName = EntityName.contact.ToString(); //The query will retrieve all contacts who match this e-mail address query.Attributes = new string[] { "emailaddress1" }; query.Values = new string[] { EmailAddress }; //Execute the retrieval BusinessEntityCollection retrieved = service.RetrieveMultiple(query); //if we find a match, use the first one we find. Otherwise, leave the default Guid contactId = defaultContactId; if (retrieved.BusinessEntities.Length > 0) { contact oContact = new contact(); oContact = (contact)retrieved.BusinessEntities[0]; contactId = oContact.contactid.Value; } incident oIncident = new incident(); oIncident.title = Subject; oIncident.description = Description; Customer customerId = new Customer(); customerId.Value = contactId; customerId.type = EntityName.contact.ToString(); oIncident.customerid = customerId; //set the owner to be passed in queue oIncident.ownerid = new Owner(); oIncident.ownerid.Value = defaultOwnerId; oIncident.ownerid.type = EntityName.systemuser.ToString(); try { //create the case Guid incidentId = service.Create(oIncident); //set the regarding value of the E-mail activity to our new incident ID email oEmail = new email(); Lookup regarding = new Lookup(); regarding.Value = incidentId; regarding.type = EntityName.incident.ToString(); oEmail.regardingobjectid = regarding; oEmail.activityid = new Key(); oEmail.activityid.Value = ActivityId; service.Update(oEmail); } catch (System.Web.Services.Protocols.SoapException ex) { //handle error } } } } 2. выполнил команды на сервере net stop mscrmworkflowservice и iisreset 3. изменил файл конфигурации workflow.config Код: <workflow.config xmlns="http://microsoft.com/mscrm/workflow/" allowusingnedassemblies="true"> <methods> <method name="Add date and time" assembly="Microsoft.Crm.Platform.WorkflowAssembly.dll" typename="Microsoft.Crm.Platform.Workflow.BuildIn" methodname="AddDateTime" group="Date and time functions"> <parameter name="Date and Time" datatype="datetime"/> <parameter name="Years" datatype="integer" default="0"/> <parameter name="Months" datatype="integer" default="0"/> <parameter name="Days" datatype="integer" default="0"/> <parameter name="Hours" datatype="integer" default="0"/> <parameter name="Minutes" datatype="integer" default="0"/> <result datatype="datetime"/> </method> <method name="Subtract date and time" assembly="Microsoft.Crm.Platform.WorkflowAssembly.dll" typename="Microsoft.Crm.Platform.Workflow.BuildIn" methodname="SubtractDateTime" group="Date and time functions"> <parameter name="Date and Time" datatype="datetime"/> <parameter name="Years" datatype="integer" default="0"/> <parameter name="Months" datatype="integer" default="0"/> <parameter name="Days" datatype="integer" default="0"/> <parameter name="Hours" datatype="integer" default="0"/> <parameter name="Minutes" datatype="integer" default="0"/> <result datatype="datetime"/> </method> <method name="Execute" assembly="Microsoft.Crm.Platform.BulkOperationControlAssembly.dll" typename="BulkOperationControlService" methodname="Execute" group="BulkOperationControl" isvisible="0" timeout="7200"> <parameter name="Caller" datatype="caller"/> <parameter name="BulkOperationId" datatype="lookup" entityname="bulkoperation"/> <result datatype="string"/> </method> <method name="Create Case From Email" assebly="WorkingWithCrm.Workflow.dll" typename="WorkingWithCrm.Workflow.Incident" methodname="CreateCaseFromEmail" group="Custom Assemblies"> <parameter name="ActivityId" datatype="lookup" entityname="email" /> <parameter name="Subject" datatype="string" /> <parameter name="EmailAddress" datatype="string" /> <parameter name="Description" datatype="string" /> </method> </methods> </workflow.config> и когда запускаю workflow manager выскакивает вышеуказанная ошибка :-( если вернуть на место старый файл workflow.config то workflow manager вновь нормально запускается стоит CRM 3.0 создаю dll в VS2005 framework 2.0 (может надо 1.1?) не явялюсь администратором сервера, но есть права на чтение/запись в нужную папку и на запуск команд (может надо чтобы workflow.config редактировал админ?) помогите пожалуйста разобраться, что я делаю неправильно Последний раз редактировалось zhenek; 31.03.2008 в 13:45. |
|
|
|