AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.03.2008, 13:14   #1  
zhenek is offline
zhenek
Участник
 
133 / 10 (1) +
Регистрация: 01.02.2007
? Создание пользовательской конструкции бизнес-процесса...
Подскажите, что не так, почему 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
            }
        }
    }
}
сгенерировал dll
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>
4. запустил службу net start mscrmworkflowservice
и когда запускаю workflow manager выскакивает вышеуказанная ошибка :-(
если вернуть на место старый файл workflow.config то workflow manager вновь нормально запускается

стоит CRM 3.0
создаю dll в VS2005 framework 2.0 (может надо 1.1?)
не явялюсь администратором сервера, но есть права на чтение/запись в нужную папку и на запуск команд (может надо чтобы workflow.config редактировал админ?)
помогите пожалуйста разобраться, что я делаю неправильно

Последний раз редактировалось zhenek; 31.03.2008 в 13:45.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка при публикации бизнес-процесса Верба Dynamics CRM: Администрирование 2 27.03.2009 16:18
Событие "Назначение записи" для бизнес-процесса Lazarus Dynamics CRM: Функционал 1 22.01.2009 19:54
Мир CRM: Отправка ярлыка по электронной почте при помощи бизнес-процесса Blog bot Dynamics CRM: Blogs 0 29.09.2008 07:16
Проблема с созданием бизнес-процесса в CRM 4.0 IgorF Dynamics CRM: Функционал 3 19.08.2008 11:15
Мир CRM: Автоматизирование добавления основного контакта при помощи Бизнес-Процесса Blog bot Dynamics CRM: Blogs 0 31.07.2008 02:08

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:26.