Использован элемент БП "Отправить email". Каким образом привязать такого письмо к заказу (активностям)? В более ранних версиях можно было создавать активность вручную через "Добавление данных" и последующим использованием "Действие процесса", где выбирался процесс "Отправить сообщение". Сейчас этот функционал убрали.
Нравится
Здравствуйте, Александр!
Элемент "Отправить email" не создает в системе записей. В версии 770 возможность добавлять активность с типом email и отправлять письмо элементом "Задание сценарий".
Пример реализации можно посмотреть в процессе "Отправить email контакту обращения" в продуктах линейки Service.
Здравствуйте, Александр!
Элемент "Отправить email" не создает в системе записей. В версии 770 возможность добавлять активность с типом email и отправлять письмо элементом "Задание сценарий".
Пример реализации можно посмотреть в процессе "Отправить email контакту обращения" в продуктах линейки Service.
Код используемый в процессе "Отправить email контакту обращения" не работает корректно, при попытке его смоделировать и запустить на кастомном процессе.
Скорее всего, в структуре процесса в параметре Usings не подключены пространства имен, методы которых используются в процессе. Проверьте, пожалуйста.
Если ошибка при публикации сохранится, предоставьте, пожалуйста, скриншот ошибки при компиляции.
Usings добавлены так же как в процессе "Отправить email контакту обращения"
Строки 38-40: в 770 был изменен алгоритм получение userConnection пользователя. Теперь userConnection получается так:
[csharp]
var userConnection = Get(“UserConnection”);
[/csharp]
Строка 37: предполагаю, что элемент процесса "Добавить данные" называется по другому, соответственно в коде Вы обращаетесь к элементу, которого нет на диаграмме.
Строка 37: Элемент переименовывался соответственно. И в коде, и сам элемент, так чтобы они совпадали. Это проблемы не решало.
Попробуйте поискать данный элемент в параметре процесса:

Думаю, элемент, на который ругается не будет отображаться.
Элемент присутствует, но кодом он не подхватывается :confused:
У элемента есть два параметра:
- Caption (Заголовок)
- Name (Название)
В структуре процессов Вы ищите по названию, в элементе Вы также должны обращаться к названию.
Самый простой способ - выделить элемент на диаграмме. Тогда его название выделится в структуре процесса.
AddDataUserTask1 - название элемента в структуре и на диаграме.
AddDataUserTask1 в коде используется тоже самое название, результата это не дает.
Здравствуйте!
Давайте поступим следующим образом - скомпилируйте Ваш процесс. В результате появится ошибка. Предоставьте, пожалуйста, скриншот ошибки и листинг кода +- 50 строк от строки, в которой произошла ошибка (для просмотра исходного кода в диаграмме процесса необходимо открыть меню "Дополнительно" и выбрать пункт "Открыть исходный код")
[csharp]
namespace Terrasoft.Core.Process
{
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing;
using System.Globalization;
using Terrasoft.Common;
using Terrasoft.Configuration;
using Terrasoft.Core;
using Terrasoft.Core.Configuration;
using Terrasoft.Core.DB;
using Terrasoft.Core.Entities;
using Terrasoft.Core.Factories;
using Terrasoft.Core.Process;
using Terrasoft.Core.Process.Configuration;
using Terrasoft.Mail;
using Terrasoft.Mail.Sender;
#region Class: UsrProcess1MethodsWrapper
///
public class UsrProcess1MethodsWrapper : ProcessModel
{
public UsrProcess1MethodsWrapper(Process process)
: base(process) {
AddScriptTaskMethod("ScriptTask1Execute", ScriptTask1Execute);
}
#region Methods: Private
private bool ScriptTask1Execute(ProcessExecutingContext context) {
var activityId = AddDataUserTask1.RecordId;
var userConnection = Get("UserConnection");
var emailClientFactory = ClassFactory.Get(new ConstructorArgument("userConnection", UserConnection));
var activityEmailSender = new ActivityEmailSender(emailClientFactory, UserConnection);
var entity = new Terrasoft.Configuration.Activity(UserConnection);
if (entity.FetchFromDB(activityId)) {
entity.SetColumnValue("IsHtmlBody", true);
entity.Save();
}
activityEmailSender.Send(activityId);
return true;
}
#endregion
}
#endregion
#region Class: UsrProcess1
///
public class UsrProcess1 : Terrasoft.Core.Process.Process
{
#region Class: ProcessLane1
///
public class ProcessLane1 : ProcessLane
{
public ProcessLane1(UserConnection userConnection, UsrProcess1 process)
: base(userConnection) {
Owner = process;
IsUsedParentUserContexts = false;
}
}
#endregion
#region Class: AddDataUserTask1FlowElement
///
public class AddDataUserTask1FlowElement : AddDataUserTask
{
#region Constructors: Public
public AddDataUserTask1FlowElement(UserConnection userConnection, UsrProcess1 process)
: base(userConnection) {
UId = Guid.NewGuid();
Owner = process;
Type = "ProcessSchemaUserTask";
Name = "AddDataUserTask1";
IsLogging = true;
SchemaElementUId = new Guid("cb50206d-a0b9-482c-a7df-3310717b43ea");
CreatedInSchemaUId = process.InternalSchemaUId;
SerializeToDB = true;
}
#endregion
#region Properties: Public
private Guid _entitySchemaId = new Guid("c449d832-a4cc-4b01-b9d5-8a12c42a9f89");
public override Guid EntitySchemaId {
get {
return _entitySchemaId;
}
set {
_entitySchemaId = value;
}
}
#endregion
}
#endregion
public UsrProcess1(UserConnection userConnection)
: base(userConnection) {
InitializeMetaPathParameterValues();
UId = Guid.NewGuid();
Name = "UsrProcess1";
SchemaUId = new Guid("62bbfc92-cc55-451a-afc4-a87fd1cb5433");
SchemaManagerName = "ProcessSchemaManager";
SerializeToDB = true;
SerializeToMemory = true;
IsLogging = true;
ProcessModel = new UsrProcess1MethodsWrapper(this);
InitializeFlowElements();
}
![]()
[/csharp]
Подобная проблема возникает в любым элементом, попробовал добавить чтение данных, а в коде использовать его имя (ReadDataUserTask1) - пишет, элемент не найден
Здравствуйте!
Пожалуйста, напишите на support@terrasoft.ru - нужно будет удаленно подключаться и анализировать. К сожалению, по коду нельзя определить в чем проблема.
"Бахматов Александр Валерьевич" написал:Использован элемент БП "Отправить email". Каким образом привязать такого письмо к заказу (активностям)? В более ранних версиях можно было создавать активность вручную через "Добавление данных" и последующим использованием "Действие процесса", где выбирался процесс "Отправить сообщение". Сейчас этот функционал убрали.
Добрый день Александр!!!
странно что у вас вообще возникла проблема. В версии 7.7 и 7.8 даже попробовал создал Активность, через добавление данных, и далее через "действие процесса" отправил Email сообщение и все получилось. Нужно анализировать какие зависимости есть у того пакета, где создаете свой бизнес-процесс.