Добавление комментария к текущему экземпляру процесса в сценарии этого процесса
Для того, чтобы добавить комментарий к текущему экземпляру процесса, необходимо создать экземпляр класса 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);
}