Добрый день!

Версия продукта: 7.14.1.935

Bpm Online Service



Идет доработка формы реклассификации в разделе обращений.

"Схема карточки редактирования действия реклассификации"

Был создал замещающий клиентский модуль.

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

 

Нравится

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

В этой карточке ReclassificationEditPage аналогичная логика реализована для полей из объекта обращения ServicePact, ServiceItem и Category. Попробуйте для своих полей сделать в коде подобным образом.

Зверев Александр,

Добрый день!

Извините за задержку с ответом. Ожидал оповещения на почту в случае комментариев, но видимо они уже не ходят.

Да, спасибо. Так и делал.

Только не все действия удалось вычленить из того кода. 

Можете подсказать, какая логика в реклассификаторе отвечает за первоначальное заполнение полей при открытии консоли?

Попытки корректировки логики именно в этой части к успеху пока не привели.

О какой консоли речь?

Зверев Александр,

Есть карточка Обращения. В ней заполнены необходимые поля.

Далее открываю консоль Реклассификации.

Вопрос: куда копать, чтобы найти логику заполнения полей консоли Реклассификации при ее открытии?

Ранее коробочный js-файл консоли реклассификации крутил, но не смог верным образом изменить заполнение новых полей.

Смотрите код ReclassificationEditPage. Что такое «консоль реклассификации» — увы, не знаю, стандартно такого механизма в системе нет. Возможно, это дополнение или проектная доработка.

Зверев Александр,

Возможно я неверно выразился.

Из карточки заявки выбираем действие: "Реклассифицировать обращения"

js-страница: ReclassificationEditPage

Ее я и называл консолью.

В CasePage вижу нечто похожее на искомое:

/**
 * Prepares Reclassification properties name.
 * @protected
 * @virtual
 * @return {Array} Reclassification properties name.
 */
prepareReclassificationPropertyNames: function() {
	return ["Id", "Contact", "Account", "Category", "ServiceItem", "ServicePact", "ServiceCategory"];
},
.....
/**
 * Returns Reclassification default values.
 * @protected
 * @virtual
 * @return {Array} Reclassification default values.
 */
getRunReclassificationDefaultValues: function() {
	var defaultValues = [];
	var propertyNames = this.prepareReclassificationPropertyNames();
	Terrasoft.each(propertyNames, function(name) {
		this.addDefaultValue(defaultValues, name);
	}, this);
	return defaultValues;
},
 
.....
/**
 * Returns run Reclassification config.
 * @protected
 * @virtual
 * @return {Array} Run Reclassification config.
 */
getRunReclassificationConfig: function() {
	var defaultValues = this.getRunReclassificationDefaultValues();
	return {
		"schemaName": "ReclassificationEditPage",
		"operation": "add",
		"primaryColumnValue": null,
		"moduleId": this.sandbox.id + "_ReclassificationEditPage",
		"isSeparateMode": false,
		"isInChain": true,
		"defaultValues": defaultValues
	};
},

 

Зверев Александр,

Огромное спасибо!

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

Добрый день!

Версия продукта: 7.14.1.935

Bpm Online Service



Идет доработка формы реклассификации в разделе обращений.

"Схема карточки редактирования действия реклассификации"

Был создал замещающий клиентский модуль.

Добавляю кастомное поле и для него

attributes "isRequired":true

но на выходе не вижу звездочки около поля.

Это стандартная ситуация или все же логика должна отрабатывать?

Нравится

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

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

Возникла необходимость доработать процесс "Установка показателей просроченности обращений". Я скопировал данный процесс в свой пакет, отредактировал его под поставленные задачи. Обнаружил, что старый процесс "Установка показателей просроченности обращений" запускается каждый час системной настройкой CaseOverduesCheckTerm. Но не могу понять, как в этой системной настройке заменить старый процесс на мой, отредактированный. Помогите, пожалуйста, подскажите как это сделать?

Нравится

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

Добавление запуска конкретного процесса CaseOverduesSettingProcess с интервалом из системной настройки CaseOverduesCheckTerm прописано в CaseSection:

/**
 * Sets initial values for SatisfactionUpdateProcessJob
 * @protected
 */
initSatisfactionUpdateProcessJob: function() {
	this.callSyncJobService(ServiceDeskConstants.SetSatisfactionTaskPeriod,
			"SatisfactionUpdateProcessJob", "SatisfactionUpdateProcess");
	var wasCheckTermSet = StorageUtilities.getItem("wasCheckTermSet");
	if (wasCheckTermSet) {
		return;
	}
	StorageUtilities.setItem(true, "wasCheckTermSet");
	this.Terrasoft.SysSettings.querySysSettingsItem("CaseOverduesCheckTerm",
			this.callOverdueSetter, this);
},
 
/**
 * Create a scheduler to run the process at intervals.
 * @param {Integer} value Value of the period in minutes
 * @param {String} jobname Name of the task scheduler
 * @param {String} processName The name of the process
 */
callSyncJobService: function(value, jobname, processName) {
	var config = {
		serviceName: "SyncJobService",
		methodName: "CreateSyncJob",
		data: {
			request: {
				JobName: jobname,
				ProcessName: processName,
				PeriodInMinutes: value
			}
		}
	};
	this.callService(config, this.Terrasoft.emptyFn, this);
},
 
/**
 * Create a scheduler start the installation process indicators overdue appeals.
 * @param {Integer} value The value of the system setting "Term inspection overdue treatment Minutes".
 * @overridden
 */
callOverdueSetter: function(value) {
	this.callSyncJobService(value, "CaseOverduesSettingJob", "CaseOverduesSettingProcess");
},

То есть, как минимум, нужно будет заменить в коде в самом конце фрагмента название процесса на Ваш, чтобы в планировщик добавлялся уже он. Если при этом в системе ещё останется Job для запуска старого процесса, надо будет удалять запуском метода CreateSyncJob из веб-сервиса SyncJobService с нулевым периодом, что означает удаление.

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

Добрый день.

 

Подскажите, где почитать про настройку балансировщика для bpm`online на Windows? Есть статья про HAProxy, но она не подходит, ввиду отсутствия серверов на линуксе.

 

Как можно выйти из ситуации, когда есть три сервера приложения, один из которых отдан под балансировщик. Встроенная роль WS Network Load Balancer или использовать ARR (К слову, не очень то работать хочет)?

Нравится

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

Добрый день, Илья.



Мы рекомендуем использовать haproxy для балансировки нагрузки в режиме sticky session. Haproxy разворачивается на пограничном сервере с ОС Linux. Другие способы балансировки мы не тестировали и не рекомендуем.

https://academy.terrasoft.ru/documents/technic-sdk/7-14/infrastruktura-prilozheniya

 

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

У меня есть .htm файл, который лежит на серваке. Мне нужно этот файл поставить вместо баннера на главной странице. В ссылке на страницу прописываю путь (file://10.221.8.110/c$/portal_message.htm), не работает. Пишу (10.221.8.110/c$/portal_message) - тоже не работает. 

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

Подскажите пожалуйста, как мне это сделать? Может нужно в IIS в определенную папку файлик положить, или еще что?

Нравится

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

Протокол file — это ссылка на файл на локальном компьютере. Том, где запущен браузер.

В обсуждаемом случае нужно поднять на сервере IIS (или другой веб-сервер, например, Apache) и сделать файл доступным по HTTP или HTTPS с других компьютеров. И прописать адрес по этому протоколу.

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

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

Всем доброго дня. Версия 7.13.4.

На портал (в рабочее место портала) были добавлены разделы.

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

Они открываются под портальным пользователем. Там всё хорошо.

Но требуется, чтобы они были видны и под пользователем Сотрудника. В том же виде, что и на портале. Как это сделать?

Красные иконки с предупреждением сообщают нам о том, что данные каталога услуг и обращений будут доступны пользователям портала: "Объекты справочных полей на странице этого раздела не являются безопасными. Согласно текущим настройкам прав доступа все записи из перечисленных ниже объектов будут полностью доступны пользователям портала". Это явно не о том, база знаний, где предупреждения нет, тоже из рабочего места не доступна.

Нравится

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

Добрый день!

Если я не ошибаюсь, разделы портала отличаются от обычных и их нельзя добавлять в рабочие места обычных сотрудников (и наоборот). Как вариант обхода данного ограничения - создание дубликатов разделов на основе этих же объектов. Ну и не забудьте продумать настройку прав - кому и что должно быть доступно / видно.

Добрый день!

Если я не ошибаюсь, разделы портала отличаются от обычных и их нельзя добавлять в рабочие места обычных сотрудников (и наоборот). Как вариант обхода данного ограничения - создание дубликатов разделов на основе этих же объектов. Ну и не забудьте продумать настройку прав - кому и что должно быть доступно / видно.

Тёскин Дмитрий Валерьевич пишет:

Тёскин Дмитрий Валерьевич пишет:

Добрый день!Если я не ошибаюсь, разделы портала отличаются от обычных и их нельзя добавлять в рабочие места обычных сотрудников (и наоборот)

А как же "Обращения" и "База знаний"? 

Владимир, это полностью разные разделы. Общие у них только объекты, а страницы свои: PortalCaseSection, PortalCasePage, PortalCaseSectionActionsDashboard, PortalKnowledgeBaseSection, PortalKnowledgeBasePage и др.

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

Добрай день. При компиляции в WSC появляется данная ошибка. По всей видимости исполнитель заказа устанавливал надстройку "Flushing Redis cache for bpm'online" (имеется на маркетплейсе), тестировал и некорректно удалил (либо совсем не удалял), затем мне был передан пакет который не компилируется.

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

Пробовали через "Установку и удаление приложений", при компиле в конфигурации выдает "Не удалось найти список приложений" и ноль ошибок в списке.

Как и где удалить все упоминания об этой надстройке? Деинсталлятора у нее не имеется.

Нравится

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

Удалите зависимость из descriptor.json вашего пакета

Удалите зависимость из descriptor.json вашего пакета

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

Не могу понять в чем ошибка... помогите разобраться...

https://[url_app]/0/ServiceModel/EntityDataService.svc/ActivityCollection?$filter=CreatedOn ge datetime'2018-12-01T00:00' возвращает ошибку - см. аттач.

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

Нравится

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

<message xml:lang="">Unrecognized 'Edm.DateTime' literal 'datetime'2018-12-12T00:00'' in '13'.</message>

Очень интересно...

https://[url_app]/0/ServiceModel/EntityDataService.svc/ActivityCollection?$filter=CreatedOn ge datetime'2018-12-12' - а вот так заработало...

Как оказалось, если нужно с часовым поясом, то надо «/0/ServiceModel/EntityDataService.svc/ActivityCollection?$filter=CreatedOn ge datetime'2018-12-01T00:00:00' », так работает.

А еще в статье  путаница: 

где-то в примере указывают ?select=Id, а где-то $select...

по факту работает так:

$filter=CreatedOn ge datetime'2018-12-01'&$select=Id...

В спецификации тоже везде с долларом.

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

Добрый день

Интегрируюсь с BPM Online 7.13 с использованием DataService.

Реализую метод добавления записи звонка Call. Создаю объект InsertQuery

InsertQuery insertQuery = new InsertQuery()

            {

                RootSchemaName = "Call",

                ColumnValues = new ColumnValues()

            };

и добавляю поля через

insertQuery.ColumnValues.Items = new Dictionary();

При добавлении только значения Id запрос выполняется ок, запись сохраняется

При добавлении значения CreatedOn в формате [""\""2000-12-31T09:41:59\""""""""] (без экранирующих символов) после сериализации в JSON получается объект (во вложении) со следующим значением CreatedOn (с экранирующими символами)

"CreatedOn": {

                "ExpressionType": 2,

                "Parameter": {

                    "DataValueType": 7,

                    "Value": "\"\"\\\"\"2019-07-28T07:31:02\\\"\"\"\"\"\"\"\"",

                    "ShouldSkipConvertion": false

                },

                "FunctionType": 0,

                "MacrosType": 0,

                "DatePartType": 0,

                "AggregationType": 0,

                "AggregationEvalType": 0

            }

Вызов BPM DataService/json/reply/InsertQuery возращает ошибку формата JSON

HttpStatusCode: 500

 HttpResponseText: {"responseStatus":{"ErrorCode":"JsonReaderException","Message":"Additional text encountered after finished reading JSON content: \\. Path '', line 1, position 2.","Errors":[]},"rowsAffected":-1,"nextPrcElReady":false,"success":false}

 

Запрос JSON валидируется без ошибок.

Пробовал разные варианты формата, в ответ код JsonReaderException и текст ошибки те же, с отличием в position

Просьба подсказать, где ошибаюсь, и привести пример правильного значения даты после сериализации JSON

Спасибо

 

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

Нравится

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

Открыл Fiddler, записал контакту дату рождения, видно такой формат:

"Date":{  
   "expressionType":2,
   "parameter":{  
      "dataValueType":8,
      "value":"\"2001-07-08T11:46:07.000\""
   }
}

А вообще, при вставке как в таблицы разделов, так и деталей значения CreatedOn и ModifiedOn не передаются, как видно в том же Fiddler. Видимо, при пустом значении сервер сам подставляет текущую дату. Например, запрос на вставку на деталь знаменательных событий целиком:

{  
   "rootSchemaName":"ContactAnniversary",
   "operationType":1,
   "columnValues":{  
      "items":{  
         "Id":{  
            "expressionType":2,
            "parameter":{  
               "dataValueType":0,
               "value":"d5094019-1d92-4fc1-ac03-bbcf620a56c9"
            }
         },
         "CreatedBy":{  
            "expressionType":2,
            "parameter":{  
               "dataValueType":10,
               "value":"410006e1-ca4e-4502-a9ec-e54d922d2c00"
            }
         },
         "Contact":{  
            "expressionType":2,
            "parameter":{  
               "dataValueType":10,
               "value":"93a1c457-c22f-48a9-9f7f-65f1dd99dff3"
            }
         },
         "AnniversaryType":{  
            "expressionType":2,
            "parameter":{  
               "dataValueType":10,
               "value":"173d56d2-fdca-df11-9b2a-001d60e938c6"
            }
         },
         "Date":{  
            "expressionType":2,
            "parameter":{  
               "dataValueType":8,
               "value":"\"2019-07-08T11:46:07.000\""
            }
         }
      }
   }
}

 

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

Коллеги, привет. 

Помогите, пожалуйста выяснить следующую информацию :

1) какой объект отвечает за эту кнопку, что использовать при разработке БП? 

При нажатии этой кнопки отправить уведомление пользователям 

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

2) Для отправки системных уведомлений на группу в коммьюнити рекомендовали создать канал и подписать на него сотрудников.

Что использовать в BPMN SD? 

Нравится

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

Что такое «BPMN SD» и «отправка системных уведомлений на группу в коммьюнити»?

По поводу кнопки, это EmailProcessedButton в схеме CommunicationPanelEmailSchema, а её обработчик setIsNeedProcessFalse находится в схеме EmailItemSchema. Это всё клиентская логика на JS, а не бизнес-процессы.

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