Привет,

 

написал код, который вытягивает данные из веб сервиса. получается List<Addresses>, который мне надо загрузить в базу данных. 

На данный момент код выполняется в бизнес процессе как script task.

теперь мне его надо сохранить в базу данных. как это сделать? 

Прочитав статью Добавить данные https://academy.terrasoft.ua/docs/user/biznes_processy/spravka_po_eleme… я не уверен что это то, что мне нужно. 

 

Спасибо!

Нравится

2 комментария
Лучший ответ

попробовать через c# скрипт достучатся до пропети веб сервиса где лежит результат и там уже через Entity/Insert/CustomQuery.

попробовать через c# скрипт достучатся до пропети веб сервиса где лежит результат и там уже через Entity/Insert/CustomQuery.

Стас Гаврилюк,

спасибо за помощь. получилось сделать с помощью Entity.

 

var warehouseSchema = UserConnection.EntitySchemaManager.FindInstanceByName(WarehouseTableName);
var entity = warehouseSchema.CreateEntity(connection);
 
var entityExists = entity.FetchFromDB(conditionColumnName: WarehouseRefColumn, conditionValue: instance.Ref);
 
entity.SetDefColumnValues();
entity.SetColumnValue(WarehouseCityColumn, instance.CityDescription);
entity.Save();

 

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

I am trying to start the process and for the first time I am faced with the problem of setting parameters in the BP in an object of the Process class. Why does it go into the "if" block with verification, but an error occurs when assigning?

Нравится

1 комментарий

Hello Mikhail,
Following the link below you can find a community post with a similar problem and an example of starting BP from the server-side. Using this code example you can probably fix the error.

 

https://community.creatio.com/questions/calling-business-process-parame…

Hope this helps.

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

Пытаюсь запустить процесс и ни первый раз сталкиваюсь с проблемой задания параметров в БП в объекте класса Process. Почему в блок "if" с проверкой заходит, а при присвоении возникает ошибка?

Нравится

2 комментария

Михаил, добрый день!

В вашем случае для запуска процесса стоит попробовать использовать FlowEngine, привожу пример его использования:

using Terrasoft.Core;
using Terrasoft.Core.Process;
using Terrasoft.Core.Process.Configuration;
 
ProcessSchema schema = UserConnection.ProcessSchemaManager.GetInstanceByName("LeadManagement");
//schema = UserConnection.ProcessSchemaManager.GetInstanceByUId(leadManagementProcessUId);
 
//different engines for interpretable and compiled BP
bool canUseFlowEngine = ProcessSchemaManager.GetCanUseFlowEngine(UserConnection, schema);
if(canUseFlowEngine) {
    var flowEngine = new FlowEngine(UserConnection);
    var param = new Dictionary<string, string>();
    param["LeadId"] = Entity.Id.ToString();
    flowEngine.RunProcess(schema, param);
} else {
    Process process = schema.CreateProcess(UserConnection);
    process.SetPropertyValue("LeadId", Entity.Id);
    process.Execute(UserConnection);
}        

FlowEngine считается устаревшим или я ошибаюсь?

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

Доброго времени суток.

Тестирую возможности вашего инструмента, пытаюсь настроить интеграцию фронта через прокси с Creatio.

 

Научился создавать новый бизнес процесс и передавать данные, но не могу понять как им можно управлять через интеграцию.

 

Есть вот такой процесс заказа:

Мне нужно, чтобы после создания заказа, с ним можно было оперировать, например, завершить его.

 

Пытался отправлять сигнал похожим на создание процесса способом:

Но вместо schemaUId мне нужно передавать uid процесса, запущенного ранее.

По документации, не могу найти под каким параметром можно передать uid процесса, а не uid схемы процеса.

 

Конечно есть альтернативный вариант, сделать ожидание сигнала от другого процесса и при необходимости взаимодействия с процессом заказа, вызывать сторонний процесс, который просто вызовет событие в процессе заказа. Но мне такой вариант не нравится.

 

Подскажите, существует ли возможность активировать сигнал в определенном запущенном процессе с передачей данных?

Нравится

3 комментария
Лучший ответ

>Если функционал по вызову События или отправки Сигнала с передачей данных в БП через ProcessEngineService.svc отсутствует, то этот ответ меня тоже устроит.
К сожалению с таким на практике не встречался, подсказать не могу.

 

Вариант решения делать на каждой действие простой процесс (подпроцесс).

Например процесс добавления товара в заказ, у него будут входящие параметры: id заказа, id товара, булевый параметр. Запускаем этот процесс через ProcessEngineService.

На мой взгляд для текущей задачи больше подойдет odata https://academy.terrasoft.ru/docs/7-17/developer/integrations_and_api/d…

Для обобщения, меня в данном случае интересует выработка бест практайс и определение возможностей сервиса, а не решение конкретной задачи.

 

Интеграцию с odata я уже реализовал на прокси и умею через нее добавлять товары в заказ. Но хотелось бы больше контроля над бизнес процессом, от этого и вопрос.

Например мне нужно при изменении заказа уведомить склад о реформировании заказа. В таком случае я вижу 3 варианта:

1. OData. На прокси при добавлении заказа отсылать email (плохо, мало контроля и не очевидно в рамках БП).

2. OData + BPMN. В самом БП создать некую подписку на добавление товара в данный заказ и сделать отправку email (уже лучше, но например не при каждом изменении заказа мне нужно отправлять email, в таком случае появятся кастыли вроде сохранения промежуточных булевых переменных в данных, для определения вида изменения заказа).

3. BPMN. Чистая реализация на вызове отдельного события в процессе с передачей данных. Это позволит добавлять любой товар по простому сигналу и получить контроль над процессом, передавать дополнительно булевые переменные для модификации поведения БП в рантайме.

 

3-ий вариант для меня сейчас самый приоритетный.

Если функционал по вызову События или отправки Сигнала с передачей данных в БП через ProcessEngineService.svc отсутствует, то этот ответ меня тоже устроит.

>Если функционал по вызову События или отправки Сигнала с передачей данных в БП через ProcessEngineService.svc отсутствует, то этот ответ меня тоже устроит.
К сожалению с таким на практике не встречался, подсказать не могу.

 

Вариант решения делать на каждой действие простой процесс (подпроцесс).

Например процесс добавления товара в заказ, у него будут входящие параметры: id заказа, id товара, булевый параметр. Запускаем этот процесс через ProcessEngineService.

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

Привет. 

При запуске процесса из элемента "Задание сценарий" следующим образом: 

var manager    = UserConnection.ProcessSchemaManager;
var flowEngine = new FlowEngine(UserConnection);
var processSchema = manager.GetInstanceByName("test process");

Dictionary<string, object> parameter = new Dictionary<string, object>();

TestCompositeObjectList list = new TestCompositeObjectList();
list.Add(new A { ColName= "test1" });
list.Add(new A { ColName= "test2" });

parameter.Add("TestCollection", list);
parameter.Add("Name", "Test");

flowEngine.RunProcess(processSchema, parameter);

return true;

 

Сам класс TestCompositeObjectList был создан по этому примеру.

 

При запуске процесса ловим: 

System.InvalidCastException: Unable to cast object of type 'Terrasoft.Common.CompositeObjectList`1[Terrasoft.Common.CompositeObject]' to type 'System.Collections.Generic.List`1[System.String]'.

В документации не нашел примера заполнение и этот способ, что выше, тоже как ясно - не работает. 
TestCollection - и есть коллекция записей с полем стринг.
Name - просто ещё один параметр.

Дайте пожалуйста пример как сделать это.

 

 

Нравится

4 комментария
Лучший ответ

Разобрался. 
Ничего не нужно придумывать, а просто брать готовое и правильно использовать, прошу добавить инфу в документацию, что бы не приходилось как и мне тыкаться в стену. 

Код вызова: 
 

var manager	= UserConnection.ProcessSchemaManager;
var flowEngine = new FlowEngine(UserConnection);
var processSchema = manager.GetInstanceByName("ProcessName");
 
Dictionary&lt;string, object&gt; parameter = new Dictionary&lt;string, object&gt;();
 
CompositeObjectList&lt;CompositeObject&gt; objList = new CompositeObjectList&lt;CompositeObject&gt;();
 
objList.Add(new CompositeObject (new Dictionary&lt;string, object&gt;() {{"SubParamName",  "SubParamValue1"}}));
objList.Add(new CompositeObject (new Dictionary&lt;string, object&gt;() {{"SubParamName",  "SubParamValue2"}}));
// ....
// Первый коллекция записей - второе примитивный 
parameter.Add("CollectionName", objList);
parameter.Add("PrimaryParam", "Test");
 
flowEngine.RunProcess(processSchema, parameter);

 

Получение в скрипте: 
 

CompositeObjectList&lt;CompositeObject&gt; collection = Get&lt;CompositeObjectList&lt;CompositeObject&gt;&gt;("CollectionName");

 

if (ProcessSchemaManager.GetCanUseFlowEngine(userConnection, processSchema)) {
                    var flowEngine = new FlowEngine(userConnection);
                    Dictionary<string, string> parameter = new Dictionary<string, string>();
                    parameter.Add("CaseRecordId", CaseRecordId.ToString());
                    flowEngine.RunProcess(processSchema, parameter);
                } else {
                    var moduleProcess = processSchema.CreateProcess(userConnection);
                    if (processSchema.Parameters.ExistsByName("CaseRecordId")) {
                        moduleProcess.SetPropertyValue("CaseRecordId", CaseRecordId);
                    }
                    moduleProcess.Execute(userConnection);
                }

Полозюков Евгений Петрович,

У вас в примере обычный параметр, а не лист. С обычными то все понятно. Меня интересует передача именно параметра типа коллекция записей.

Возможно ли это вообщ? Потому что тут последний коммент говорит что "неа".

Разобрался. 
Ничего не нужно придумывать, а просто брать готовое и правильно использовать, прошу добавить инфу в документацию, что бы не приходилось как и мне тыкаться в стену. 

Код вызова: 
 

var manager	= UserConnection.ProcessSchemaManager;
var flowEngine = new FlowEngine(UserConnection);
var processSchema = manager.GetInstanceByName("ProcessName");
 
Dictionary&lt;string, object&gt; parameter = new Dictionary&lt;string, object&gt;();
 
CompositeObjectList&lt;CompositeObject&gt; objList = new CompositeObjectList&lt;CompositeObject&gt;();
 
objList.Add(new CompositeObject (new Dictionary&lt;string, object&gt;() {{"SubParamName",  "SubParamValue1"}}));
objList.Add(new CompositeObject (new Dictionary&lt;string, object&gt;() {{"SubParamName",  "SubParamValue2"}}));
// ....
// Первый коллекция записей - второе примитивный 
parameter.Add("CollectionName", objList);
parameter.Add("PrimaryParam", "Test");
 
flowEngine.RunProcess(processSchema, parameter);

 

Получение в скрипте: 
 

CompositeObjectList&lt;CompositeObject&gt; collection = Get&lt;CompositeObjectList&lt;CompositeObject&gt;&gt;("CollectionName");

 

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

Здравствуйте

Задача:

Необходимо создать User Task, в которой создать объект ICompositeObjectList и для последующей передачи значения в другую User Task.

 

Данный пример не работает:

1 SoureCode:

namespace JustTestCompositeObject
{
    using System;
    using System.Collections.Generic;
    using Terrasoft.Common;
    public class A : ICompositeObject
    {
        internal string test;
        public bool TryGetValue(string key, Type valuetype, out object value) { value = default; return true; }
        public bool TryGetValue&lt;TValueType&gt;(string key, out TValueType value) { value = default; return true; }
    }
    public class TestCompositeObjectList : List&lt;A&gt;, ICompositeObjectList&lt;A&gt;
    {
        void ISerializableObject.Serialize(DataWriter dataWriter) { }
        void ISerializableObject.Deserialize(DataReader dataReader) { }
    }
    public class test
    {
        public static ICompositeObjectList&lt;ICompositeObject&gt; GnerateTestList()
        {
            TestCompositeObjectList list = new TestCompositeObjectList();
            list.Add(new A { test = "test1" });
            list.Add(new A { test = "test2" });
            return list;
        }
 
        public static string PrintTest(ICompositeObjectList&lt;ICompositeObject&gt; list)
        {
            string output = "";
            if (list == null)
            {
                output = "this collection is null";
            }
 
            foreach (A v in list)
            {
                output += v.test + " ";
            }
            return output;
        }
    }
}

UserTask1:

list = test.GnerateTestList();
return true;

, где list задан как тип: Serializable list of composite values

 

UserTask2:

output=test.PrintTest(list);
return true;

, где list имеет тип: Serializable list of composite values; output имеет тип: string

 

Процесс выглядит вот так:

На Auto-generated page выводится output из UserTask2 

Конфигурация успешно компилируется.

 

Пробовал прописывать Usings на необходимый namespace в свойствах процесса, не работает...

 

Вещи типа: 

не работают и не возвращаются значение

 

В Visual Studio все ок работает в конфигурации при передачи значений через процесс - нет.

 

Да, конечно, можно делать SerializeObject и просто передавать строки, но не хочется тратить ресурсы на лишнюю серилизацию, если можно сделать и без нее...

 

Пожалуйста подскажите как можно решить подобную задачу.

Нравится

1 комментарий

Скорее всего, дело в том, что в новых версиях (7.12.3 и выше) процессы интерпретируемые. В старых версиях параметры, скрипты и другие элементы процесса представляли собой свойства и методы класса и такое, как Вы хотите, могло быть возможно.

А сейчас скрипты работают автономно и обмениваются значениями с параметрами через Get и Set.

Get&lt;T&gt;(string path)
Set(string path, T value)

Получится ли таким образом передать объект ICompositeObjectList, нужно экспериментировать, а по поводу возможности существования внутри БП класса с вызовом статических методов, сомневаюсь.

 

Больше об этом можно почитать тут и тут, а также тут и тут.

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

Добрый день, коллеги!

Набросал небольшой процесс, который позволяет на выходе получить следующий рабочий день после указанного по выбранному календарю.

На вход процесса нужно подать дату и календарь.

Можно использовать в качестве подпроцесса в своих процессах.

Прикрепленные файлы

Нравится

Поделиться

1 комментарий

Здравствуйте, Руслан.

Возможно, будет удобнее выложить данное решение на marketplace, так как на community в ленте не всегда можно быстро найти нужный пост?

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

 

О компании

Фармацевтическая компания «ГЕДЕОН РИХТЕР-РУС» – это дочернее предприятие ОАО Гедеон Рихтер (Будапешт, Венгрия), крупнейшего производителя лекарственных средств в Восточной Европе.

 

Предпосылки внедрения bpmonline

До использования bpmonline обращения в отдел информационного обслуживания не обрабатывались с использованием автоматизированных систем. После проведенного аудита ISO было принято решение автоматизировать процесс работы с заявками внутренних клиентов, которыми являются сотрудники компании.

 

Целью проекта было внедрить эффективный инструмент обработки обращений.

Выполненные настройки

Внедрение bpmonline в данной компании проходило в два этапа.

В рамках первого этапа был автоматизирован процесс работы отдела информационного обслуживания. Для обработки обращений был выбран стандартный референтный бизнес-процесс bpmonline. В ходе работ по запуску были адаптированы шаблоны сообщений под бизнес клиента, а также в разделе «Сервисы» были добавлены отраслевые сервисы такие как подключение нового рабочего места, резервное копирование и т.д.

На втором этапе внедрения стояла задача создать и автоматизировать процесс обработки обращений по запросам сотрудников в отдел по персоналу. Для обработки обращений также был выбран стандартный бизнес-процесс. В раздел «Сервисы» были добавлены следующие сервисы:

  • справка с места работы;
  • копия трудовой книжки;
  • консультация.

 

 

Также была доработана шкала оценивания. После решения своего обращения пользователь может оставить обратную связь — он получает письмо, в котором содержатся различные критерии оценки, например, своевременность оказания услуги.

 

Каждому из этих значений соответвует определенная оценка, которая выставляется в обращении после обработки обратной связи от клиента.

Также в рамках внедрения была потребность в делегировании прав во время отпуска сотрудника. Для решения данной задачи был разработан ряд процессов. При запуске первого процесса открывается окно, в котором необходимо указать пользователя, которому делегируются права. Далее процесс раздает права и актуализирует роли. После возвращения сотрудника из отпуска запускается следующий процесс, который забирает розданные ранее права. На основании данной логики был создан темплейт .

 

Также для автоматического назначения группы ответственных был создан процесс, который при создании или изменении обращения и указании в нем категории, соответствующей заявке в отдел по персоналу, назначает группу ответственных по обращениям данной категории.

 

 

Был создан отчет, который отображает средний балл удовлетворенности по обращениям HR-департамента.

 

Результат

Внедрение bpmonline позволило решить задачу обработки обращений от внутренних клиентов — сотрудников компании. Работа в единой ИТ-экосистеме позволила сократить и упростить коммуникации между сотрудниками смежных подразделений внутри компании.

В планах внедрить соответствующий сервис по заявкам в Техническую дирекцию, связанных с обслуживанием инженерных систем. Сбор и анализ удовлетворенности клиентов услугами компании позволяет развиваться еще быстрее и сохранять лидирующие позиции в отрасли.

 

Нравится

Поделиться

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

 

О компании

Компания Viseven — ведущий поставщик интерактивного контента, CRM- и CLM-систем, обучающих мобильных приложений, а также услуг по продвижению медицинских препаратов на мировом рынке с 2009 года. Официальные представительства компании расположены в 4 странах мира — в РФ, Эстонии, Канаде и Украине.

 

Предпосылки внедрения bpmonline

Для взаимодействия с клиентами Viseven использовала продукт собственной разработки. Работа с клиентами велась разрозненно, что не позволяло сделать аналитические срезы относительно продуктивности сотрудников компании. После анализа нескольких CRM-систем Viseven приняла решение в пользу продукта bpmonline sales.

 

Задача внедрения bpm'online

В первую очередь было необходимо автоматизировать рабочий процесс отдела продаж, чтобы избавиться от «самодеятельности». Также это позволило бы получать историю взаимодействия с клиентами и в дальнейшем ее анализировать, добавить контроль в выставление счетов, создать единый источник корректной информации, упростить работу новым сотрудникам. Кроме того, внедрение bpmonline позволило бы наладить процесс утверждения цен, коммерческих предложений (КП) и стандартизировать прайс-лист услуг компании.

Выполненные настройки

В рамках процесса внедрения был доработан процесс работы с Лидом. Старт процесса — это базовая стадия «Квалификация». После того как пользователь определил, что Лид может быть квалифицирован, он выполняет квалификацию и переходит на стадию «Назначение встречи». Стадия была добавлена в кейс с помощью инструментов Case Management c целью назначения предварительной встречи с клиентом. Как только встреча назначена, Лид переходит на стадию «Встреча», по результатам которой автоматически создается продажа.

 

 

Процесс продажи также не остался без изменений: после прохождения референтной стадии «Квалификация», которая соответствует базовой логики системы, продажа переходит на стадию «Предложение». В рамках данной стадии составляется коммерческое предложение. В рамках процесса внедрения был создан раздел «Коммерческие предложения», в данном разделе клиент создает и управляет КП для клиентов.

 

Каждое коммерческое предложение содержит:

  • данные о покупателе;
  • предлагаемый список продуктов;
  • стоимость продуктов.

 

После подготовки предложения для клиента процесс продажи переходит на стадию «Внутреннее визирование». На данной стадии создается виза в разработанном разделе «Визы». После проставления положительной визы КП становится доступным для предоставления клиенту. Готовность для отправки клиенту определяется его состоянием, которое в данном случае меняется на «Утверждено». Далее КП отправляется клиенту, и процесс продажи переходит на этап «Переговоры». Данный этап состоит из нескольких вариантов ведения переговоров. Менеджер определяет являются ли данные переговоры Активными или Пассивными и в зависимости от этого определяет тактику сделки. После проведения успешных переговоров продажа переходит на стадию «Контрактация», где заключается договор, после чего продажа получает статус «Завершается с победой».     

 

 

Также в рамках реализации сопутствующих задач, всплывающих в процессе внедрения, были использованы такие приложения из маркетплейса как:

  • Fields patterns for bpm'online — с помощью этого приложения были установлены маски ввода телефонных номеров в карточках контакта, контрагента, правила для email-адресов.
  • Lookup records merging — приложение позволило быстро произвести объединение записей в необходимых справочниках, например таких как Страны, Города.
  • Выделение цветом записей — позволило настроить выделение цветом заказов в реестре в зависимости от их состояния. Например, завершенные заказы залиты зеленым цветом.
  • Map widget for bpm'online — данное приложение позволило настроить визуальное отображение на карте мира территориальное расположения клиентов компании, а также проанализировать самые прибыльные регионы. Красивые карты с графиками радуют глаз руководству.

 

При реализации аналитических итогов была перестроена воронка продаж, так как было важно, чтобы она строилась на основании поля «Сумма продажи». Также для удобства пользователей в отображение воронки продаж были статично выведены данные о количество продаж и сумме продаж по стадиям.

  

Результат

Внедрение bpm’online позволило автоматизировать работу менеджеров отдела продаж. Фиксация всех договоренностей и консолидация информации в единой системе позволили провести качественный анализ эффективности работы менеджеров. Компания Viseven не останавливается на достигнутом и уже планирует продолжить автоматизацию для дальнейшего привлечение к системе других организационных подразделений компании.

Нравится

Поделиться

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

 

О компании

BOX Catering — компания, которая занимается доставкой готовой еды в коробках. Это кейтеринг, который Вы можете заказывать себе действительно каждый день в офис или домой.

 

Предпосылки внедрения bpmonline

Работа с клиентами в компании проводилась в индивидуальных табличных формах «Excel», что было в свою очередь разрозненно, и не способствовало консолидации информации в единой системе. Также отсутствовала возможность качественно анализировать деятельность отдела продаж и планировать развитие бизнеса. Для агрегации информации, построения процесса продаж была выбрана bpm'online sales enterprise.

 

Задачей внедрения bpm'online было создать и автоматизировать рабочий процесс отдела продаж, который бы позволил эффективно работать с клиентами в направлении B2B и B2C сегментов.

Выполненные настройки

В рамках процесса внедрения была доработана карточка «Лида», были добавлены такие поля как:

- информационный повод мероприятия;

- количество гостей;

- место проведения мероприятия;

- тип заказа;

- дата мероприятия.

Фиксация данной информации позволит внести максимально полные данные по предстоящему мероприятию.

 

 

Процесс работы с клиентом начинается с референтной стадии лида «Квалификация», на которой добавлены задачи по выяснению и внесению дополнительных контактных лиц, с целью определения ЛПР. Далее процесс переходит на стадию «Перевод в продажу», в случае горящей потребности у клиента создается «Продажа», если же нет, то процесс возвращается на этап «Взращивания» в рамках которого основная цель назначить встречу с клиентом, и по результатам встречи перевести Лид в Продажу.

В карточку продажи были также добавлены поля, такие как:

- количество гостей

- итоговая сумма по мероприятию

- итоговая сумма на одного гостя.

 

 

 

 

Для удобства менеджеров, в объекте «Продажа» был реализован бизнес-процесс, позволяющий быстро и удобно рассчитать итоговую сумму мероприятия, рассчитать цену на одного гостя, рассчитать общий вес заказа и отдельный вес на человека. В случае увеличения или уменьшения количества гостей или изменения (объема-веса) заказа процесс позволяет оперативно пересчитать данные.

 

 

         

Процесс продажи также был изменен. На первой стадии «Квалификация» добавлены задачи по подготовке и проведению встречи по снятию запроса от клиента о планируемом мероприятии. Далее «Коммерческое предложение», на которой менеджер формирует и направляет  клиенту коммерческое предложение. После отправки предложения процесс переходит на стадию «Презентация». В рамках данной стадии проводится встреча по презентации КП и обсуждение дальнейшей работы, следующим шагом происходит переход на стадию «Утверждение» в рамках которой добавлены задачи по контролю оплаты от клиента. После прохождения оплаты запускается подготовка мероприятия сотрудниками компании BoxCatering.

 

Результат

Внедрение bpm’online позволило автоматизировать работу менеджеров отдела продаж. Качественная работа менеджеров с клиентами, фиксация всех договоренностей, автоматический просчет данных необходимых для формирования документов, сделали работу менеджеров эффективнее. Освободившееся время менеджеры планируют использовать, для увеличения клиентского портфеля.

Нравится

Поделиться

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