07.07.2010, 14:22 | #1 |
Участник
|
Не выполняется отправка email в workflow activity
Всем доброго дня!
Не могу понять почему не выполняется SendEmailRequest. Подскажите, плиз, куда копать? CRM 4.0 RU8 X++: namespace CRM_SendMailActivity { [CrmWorkflowActivity("Send Mail")] public partial class SendMailActivity : SequenceActivity { protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) { IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService)); IWorkflowContext workflowContext = contextService.Context; ICrmService crmservice = workflowContext.CreateCrmService(true); Guid EmailId = new Guid(EntityIDIN); QueryByAttribute queryByAttribute = new QueryByAttribute(); queryByAttribute.ColumnSet = new AllColumns(); queryByAttribute.EntityName = EntityName.email.ToString(); queryByAttribute.Attributes = new string[]{"activityid"}; queryByAttribute.Values = new string[] { EmailId.ToString() }; BusinessEntityCollection retrieved = crmservice.RetrieveMultiple(queryByAttribute); if (retrieved.BusinessEntities.Count == 0) return ActivityExecutionStatus.Canceling; SendEmailRequest sendrequest = new SendEmailRequest(); sendrequest.EmailId = ((Key)((email)retrieved.BusinessEntities[0]).activityid).Value; sendrequest.TrackingToken = ""; sendrequest.IssueSend = true; crmservice.Execute(sendrequest); return ActivityExecutionStatus.Closed; } public static readonly DependencyProperty EntityIDINProperty = DependencyProperty.Register("EntityIDIN", typeof(string), typeof(SendMailActivity)); [CrmInput("Entity ID InpuT")] public string EntityIDIN { get { return (string)GetValue(EntityIDINProperty); } set { SetValue(EntityIDINProperty, value); } } } } Последний раз редактировалось _AV_; 07.07.2010 в 14:43. Причина: Версия приложения |
|
08.07.2010, 11:09 | #2 |
Участник
|
Ну а что значит "не выполняется"? С ошибкой падает? С какой?
Попробуйте для начала этот кусок кода вытащить в отдельное консольное приложение, так будет проще разобраться.
__________________
Опыт позволяет ошибаться гораздо увереннее. |
|
08.07.2010, 12:01 | #3 |
Участник
|
Цитата:
Ну а что значит "не выполняется"? С ошибкой падает? С какой?
Цитата:
Попробуйте для начала этот кусок кода вытащить в отдельное консольное приложение, так будет проще разобраться.
|
|
08.07.2010, 12:17 | #4 |
Чайный пьяница
|
Цитата:
Не совсем понятно зачем этот ретрив стоит. Попробуйте использовать следующий код: Код: namespace CRM_SendMailActivity { [CrmWorkflowActivity("Send Mail")] public partial class SendMailActivity : SequenceActivity { protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) { IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService)); IWorkflowContext workflowContext = contextService.Context; ICrmService crmservice = workflowContext.CreateCrmService(true); Guid EmailId = new Guid(EntityIDIN); SendEmailRequest sendrequest = new SendEmailRequest(); sendrequest.EmailId = EmailId; sendrequest.TrackingToken = ""; sendrequest.IssueSend = true; try { crmservice.Execute(sendrequest); } catch (SoapException sexc) { throw new Exception(sexc.Detail.InnerText); } return ActivityExecutionStatus.Closed; } public static readonly DependencyProperty EntityIDINProperty = DependencyProperty.Register("EntityIDIN", typeof(string), typeof(SendMailActivity)); [CrmInput("Entity ID InpuT")] public string EntityIDIN { get { return (string)GetValue(EntityIDINProperty); } set { SetValue(EntityIDINProperty, value); } } } }
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
08.07.2010, 12:38 | #5 |
Участник
|
Цитата:
Цитата:
Не совсем понятно зачем этот ретрив стоит. Попробуйте использовать следующий код:
.... |
|
08.07.2010, 12:41 | #6 |
Участник
|
Господа, а скажите, пож-та, у вас работает данный пример в workflow activity?
|
|
08.07.2010, 13:05 | #7 |
Чайный пьяница
|
Цитата:
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
08.07.2010, 13:16 | #8 |
Участник
|
Прям в таком виде - не будет, согласен. Но тут context используется только для создания CrmService. В консольном приложении его можно и ручками создать.
__________________
Опыт позволяет ошибаться гораздо увереннее. |
|
08.07.2010, 14:10 | #9 |
Чайный пьяница
|
Цитата:
PS в своих плагинах/кастомных экшенах всегда использовал метод создания сервиса через контекст - и ни разу не сталкивался с ошибками начиная со 2-го роллапа (до него были проблемы, которые 2-ым роллапом исправлялись).
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
10.08.2010, 18:37 | #10 |
Участник
|
Наконец-то нашлось время поразбираться с моей проблемой.
за 20 мин нашел из-за чего были проблемы.... оказалось, что в способе создания crmservice. ICrmService crmservice = workflowContext.CreateCrmService(true); //Не выполняется SendEmailRequest =( ICrmService crmservice = workflowContext.CreateCrmService(); //Выполняется SendEmailRequest =D Оказывается все работает, если не указывать параметр asAdminUser.... %) Последний раз редактировалось _AV_; 10.08.2010 в 18:44. |
|
|
За это сообщение автора поблагодарили: a33ik (1). |
Теги |
activity, email, sendemailrequest, workflow |
|
|