Вопрос

Обработка текстовой строки в бизнес процессе

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

Сам вопрос состоит в том что - все данный которые высылает веб сервис являются " Тип Данных Текст", и только в этом формате они могут попасть в bpm online. К письму прикрепляю скриншот авто генерирующей страницы данных в бизнес процессе , который показывает все данные с веб сервиса при одном запросе (то есть данные одного звонка). Без труда по бизнес процессу в Детали Звонок заполнил Данные - "Номер от" и "Номер Кому", по скольку эти поля в bpm online " строковые (текстовые) как и в веб сервисе, но к примеру:

1. Как в бизнес процессе добавить в детали Звонок, в Справочном Поле "Направление звонка", где есть варианты "Входящий" и "Исходящий", если Веб сервис выдает направление звонка в виде Тип Данных Текстового поля (строковое) в двух вариантах: "1" - это исходящий звонок и "0" - это входящий звонок. Как я понимаю это можно сделать по идее через "Условный поток"  или элемент бизнес процесса "Формула", где по видимому логика на подобие "если Направление Звонка в Веб Сервисе == "1", то далее поток идет в элемент процесса Добавить Данные в Деталь звонок и заполняем там Направление Звонка "Исходящий". К сожалению заполнив в условном потоке условие: 

[#Мои Звонки 1.napravlenie_zvonka#]=="1"  

процесс через данный условный поток не проходит и далее не отрабатывается элемент Добавить Данные в Деталь звонок, как правильно реализовать данную идею ?

2. Необходимо чтоб веб сервис вызывался каждые 3-5 секунд, чтоб синхронизировать звонки с веб сервиса, как решение нашел пока только запуск бизнес процесса через элемент "Начальное Событие Стартовый Таймер", но там минимальное значение 1 мин, то есть бизнес процесс запускается не чаще чем каждые 1 мин, как реализовать начало бизнес процесса (запрос данных с веб сервиса) каждые 3-5 секунд

3. Веб сервис выдает в текстовом формате тип данных (как и все данне) "Дату Звонка" в виде тип данных текст - набор цифр (визуально для нас), а для системы получается в виде текста (в сриншоте видно) пример:

Дата Звонка: 15218316845

Представитель веб сервиса Мои Звонки, сказал:

"по дате звонка - это дата/время в формате unix timetamp (количество секунд, прошедших с полуночи (00:00:00 UTC) 1 января 1970 года), стандартный формат для передачи дат в числе .."

Вопрос состоит в том как эти данные которые попадают в bpm online в виде Тип Данных Текст преобразовать в Тип Данных Время в формате bpm online и далее чтоб отрабатывался элемент бизнес процесса - Добавить Данные в Деталь звонок и заполнилось поле " Дата Начала", " Дата Завершения" ... где данные поля заполняются/имеют Тип Данных Дата и Время.

Спасибо

Изображение удалено.

Нравится

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

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

Пример как решить проблему с UTC тоже ниже привел.



Запускать БП можете через крон тригер, настроив его так, как вам нужно, пример ниже.



Для пункта 2

// Создание задания для запуска процесса.
IJobDetail job = AppScheduler.CreateProcessJob("OpStateActivityInAccountProcessJob", null, "OpStateActivityInAccountProcess",
"CurrentWorkspace", "CurrentUserName");
 
// Создание Cron-триггера, соответствующего графику запуска задания.
ITrigger trigger = new CronTriggerImpl("OpStateActivityInAccountProcessTrigger", null, "0 60 * * * ?");  //Каждый час будет запускать БП OpStateActivityInAccountProcess
 
//Секунды будут выглядеть так: ("0/5 * * * * ?"), то есть каждые 5 секунд запускать
 
// Добавление задания и триггера в планировщик.
AppScheduler.Instance.ScheduleJob(job, trigger);
return true;





Для пункт 1, 3.

Условие направления звонка можете так сделать --- if (direction.ToString() == "0")

var insert = new Insert(userConn)
     .Into("Call")
      .Set("Duration", Column.Const(Int32.Parse(duration)))
      .Set("StartDate", Column.Const(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(start_time)))
      Set("EndDate", Column.Const(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(end_time)))
                        as Insert;
insert.Execute();



А еще лучше, вместо БП которые будет каждые 5 секунд у вас делать синхронизацию, это привязаться на событие окончания звонка из сервиса Моих звонков и указать шарпный сервис, который будет принимать и обрабатывать это событие, примером если надо могу поделится, как я интегрировался с ними

 

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

Пример как решить проблему с UTC тоже ниже привел.



Запускать БП можете через крон тригер, настроив его так, как вам нужно, пример ниже.



Для пункта 2

// Создание задания для запуска процесса.
IJobDetail job = AppScheduler.CreateProcessJob("OpStateActivityInAccountProcessJob", null, "OpStateActivityInAccountProcess",
"CurrentWorkspace", "CurrentUserName");
 
// Создание Cron-триггера, соответствующего графику запуска задания.
ITrigger trigger = new CronTriggerImpl("OpStateActivityInAccountProcessTrigger", null, "0 60 * * * ?");  //Каждый час будет запускать БП OpStateActivityInAccountProcess
 
//Секунды будут выглядеть так: ("0/5 * * * * ?"), то есть каждые 5 секунд запускать
 
// Добавление задания и триггера в планировщик.
AppScheduler.Instance.ScheduleJob(job, trigger);
return true;





Для пункт 1, 3.

Условие направления звонка можете так сделать --- if (direction.ToString() == "0")

var insert = new Insert(userConn)
     .Into("Call")
      .Set("Duration", Column.Const(Int32.Parse(duration)))
      .Set("StartDate", Column.Const(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(start_time)))
      Set("EndDate", Column.Const(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(end_time)))
                        as Insert;
insert.Execute();



А еще лучше, вместо БП которые будет каждые 5 секунд у вас делать синхронизацию, это привязаться на событие окончания звонка из сервиса Моих звонков и указать шарпный сервис, который будет принимать и обрабатывать это событие, примером если надо могу поделится, как я интегрировался с ними

 

Для пункта 1 сделал как вы сказали: --- if (direction.ToString() == "0"), все сработало отлично, Спасибо !

по остальным пунктам напишу вам личное сообщение

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