Технические вопросы
7.x

Привязка письма к заказу.

Использован элемент БП "Отправить email". Каким образом привязать такого письмо к заказу (активностям)? В более ранних версиях можно было создавать активность вручную через "Добавление данных" и последующим использованием "Действие процесса", где выбирался процесс "Отправить сообщение". Сейчас этот функционал убрали.

Нравится

19 комментариев

Здравствуйте, Александр!

Элемент "Отправить 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 сообщение и все получилось. Нужно анализировать какие зависимости есть у того пакета, где создаете свой бизнес-процесс.

Показать все комментарии