logo

Добавление комментария к текущему экземпляру процесса в сценарии этого процесса

Для того, чтобы добавить комментарий к текущему экземпляру процесса, необходимо создать экземпляр класса Comment и добавить его к списку комментариев с помощью метода Add(), после чего сформировать соответствующее событие добавления комментария для записи в историю экземпляра процесса.

Пример сценария с использованием PublicAPI

Примечание
Актуальная документация по PublicAPI доступна по  ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.15.38 включительно.

Пространство имен:

    using EleWise.ELMA.API;

Текст сценария:

PublicAPI.Processes.WorkflowInstance.AddComment(context.WorkflowInstance, "Текст комментария"); //Автор комментария - текущий пользователь, Дата отправки - текущая

Пример сценария без использования PublicAPI

Пространства имен:

using EleWise.ELMA.Common.Models; 
using EleWise.ELMA.Model.Services; 
using EleWise.ELMA.Services; 
using EleWise.ELMA.Model.Events; 
using EleWise.ELMA.Workflow.Models; 
using EleWise.ELMA.Common.ExtensionPoints; 

Текст сценария:

//создание комментария
var cmnt = InterfaceActivator.Create<Comment> ();
//зададим дату создания комментария
cmnt.CreationDate = DateTime.Now;
//укажем автора комментария. вместо инициатора экземпляра процесса можно указать другого пользователя
cmnt.CreationAuthor = context.WorkflowInstance.Initiator;
//введем текст комментария
cmnt.Text = "Текст комментария";
//сохранение комментария
cmnt.Save ();
//добавление комментария к списку комментариев экземпляра
context.WorkflowInstance.Comments.Add (cmnt);
//создание события добавления комментария для записи в историю
var ActionHandler = Locator.GetServiceNotNull<IEntityActionHandler> ();
var commentAction = Locator.GetService<ICommentActionHandler> ();
var commentActionModel = InterfaceActivator.Create<CommentActionModel> ();
commentActionModel.Comment = cmnt;
var args = EntityActionEventArgs.TryCreate (null, context.WorkflowInstance, WorkflowInstanceActions.AddComment);
if (args != null) {
     commentAction.ProcessEventArgs (args, commentActionModel);
     ActionHandler.ActionExecuted (args);
}