пятница, 27 сентября 2019 г.

Порядок срабатывания событий в Siebel

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

Как запретить в OpenUI пользователю отключать сообщения об ошибках

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






Соответственно требовалось убрать эту галочку.

Чтобы это сделать, нужно в коде OpenUI переопределить метод alert следующим образом:

function alert(str){
  $("<div id='my_error'>" + str + "</div>").dialog({
        title: "Внимание",
        modal: true,
        buttons: [{ id: "btn-accept",
        text: "Ok", click: function () { $(this).dialog("close");
        }}]
    });
}
В этом случае, когда OpenUI попытается вывести ошибку он обратиться к этому переопределению и будет выведено модальное окно без возможности отключения.
Выглядит окно примерно так:




Использование Sleep в Siebel

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


Часто используемые команды srvrmgr

Эта запись, как напоминалка. Некоторые команды srvrmgr используются нечасто, поэтому лучше всегда иметь шпаргалку под рукой.
Ниже приведён перечень таких команд:


Как быстро найти нужный лог в папке с логами.


Очень часто возникает ситуация, что нужно получить от заказчика файл с логом, при этом заказчик не понимает, какой именно файл вам нужен.

понедельник, 2 июля 2018 г.

Преобразование даты в XML формат.

Очень часто требуется преобразовать дату в формат XML (YYYY-MM-DD HH24:MI:SS)

Есть несколько способов это сделать:
  • Использовать выражение(Expression) для преобразования.
    Плюсы:
    - при использовании мэппинга(DTE) не возникает ошибка преобразования дат ()
    Минусы:
    - нужно использовать мэппинг(DTE).
    - человеческий фактор, при добавлении новых полей с датой, необходимо помнить о необходимости их преобразования.
    Пример выражения.
    Right([Date of Birth], 4) + "-" + Left([Date of Birth], 2) + "-" + Mid([Date of Birth], 4, 2)
  • Использовать входной аргумент "UTCCanonical" при вызове сервиса EAI Siebel Adapter
    Плюсы:
    - Автоматическое преобразование формата для всех полей с типом дата.
    - Не требуется мэппинг данных (DTE)
    Минусы:
    - При использовании мэппинга, в случае если будет происходить мэппинг из полученного таким образом компонента, поля с датами будут иметь не корректные значения.
    (Doc ID 1073574.1)
    (Doc ID 1258715.1)

Пример преобразования дат при использовании UTCCanonical
Тип данных на поле в IC UTCCanonical=N UTCCanonical=Y
DTYPE_UTCDATETIME 05/31/2018 12:41:19 2018-05-31T12:41:19Z
DTYPE_DATETIME 05/31/2018 12:41:19 2018-05-31 12:41:19
DTYPE_DATE 05/31/2018 2018-05-31

суббота, 9 июня 2018 г.

О том, как Siebel размещает вложения(Attachment) в своей файловой системе

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

О том, как устроена загрузка вложений в Siebel.

Когда пользователь сохраняет файл в файловую систему Siebel(Siebel File System), файл копируется из клиентской машины пользователя и передаётся в Siebel Server. Протокол передачи данных зависит от настроек Web сервера, а также от того какой протокол использовал Web клиент, например это может быть HTTP или HTTPS. Далее серверная компонента File System Manager (alias FSMSrvr) сжимает файл и сохраняет сжатый файл в файловую систему Siebel. Сжатие файлов и их переименование при сохранении полностью автоматические и зашиты в File System Manager (alias FSMSrvr).

 О том, как Siebel отдаёт файлы из своей файловой системы пользователю.
 Когда пользователь пытается скачать файл, хранящийся в файловой системе Siebel(например щелкнув по ссылке на вложении), серверная компонента File System Manager (alias FSMSrvr) обрабатывает этот запрос. Компонента взаимодействует с директориями файловой системы Siebel для получения файла и отправки его пользователю. Также как и при загрузке протокол отправки данных определяется способом подключения Web клиента к Web серверу. Обычно файл передаётся Web клиенту в сжатом виде. Но в некоторых случаях файл может быть передан в несжатом виде.
В следующих случаях файл передаётся несжатым:
  • Файл имеет расширение .zip, .z, .tgz, .gz, .gif, .jpg, .jpeg
  • Web браузер клиента не поддерживает сжатие
  • Параметр текущей серверной компоненты(например FINS Object Manager)  Compressed File Download (alias CompressedFileDownload) установлен в значение False.
  • Если используется  Siebel Mobile Web Client, то сжатие настраивается параметром CompressedFileDownload в секции [InfraUIFramework]
О том, как работает File System Manager (alias FSMSrvr) при распределенной файловой системе Siebel.

Файловая система Siebel может быть как в одном каталоге, так и распределена между различными устройствами/директориями. В данном случае речь идет не о разбиении больших объёмов данных между разделами для хранения(это когда большие файлы размещаются не на одном ресурсе, а на нескольких по частям).
Директории для хранения данных указываются в параметре  Siebel
File System (alias FileSystem) Предприятия(Enterprise)/серверной компоненты. Пути указываются через запятую. Если Siebel развернут на нескольких серверах, то рекомендуется использовать сетевые пути (например: "\\ds1\sfs,\\ds2\sfs,\\ds3\sfs") . Сетевой доступ на чтение и запись к данным директориям должен быть предоставлен пользователю, под которым запущен Siebel Server.
При запуске серверная компонента File System Manager (alias FSMSrvr) проверяет доступность всех директорий перечисленных в параметре Siebel File System (alias FileSystem). При сохранении вложения(Attachment)  FSMSrvr размещает файл в одной из доступных директорий. Если выбранная директория недоступна, то  FSMSrvr пишет в свой лог соответствующую ошибку и пытается записать файл в другую доступную директорию, если же ни один из путей не доступен, то в лог пишется соответствующая запись и возвращается ошибка.

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

О том, как корректно распределять файлы между директориями файловой системы Siebel.

Сначала разберёмся какие параметры есть у утилиты sfspartition

Опции запуска утилиты sfspartition
Ключ Значение Описание Обязательность
/O Пути к текущим директориям файловой системы Siebel Пути должны быть перечислены через запятые, после запятой пробела быть не должно. Если пути содержат пробелы то необходимо указывать значения этих путей в двойных кавычках. 
\\server1\siebelFS1,"\\server1\dir with space in name",\\server2\siebelFS3
Да
/F Директории файловой системы Siebel в которые будут распределены файлы Пути должны быть перечислены через запятые, после запятой пробела быть не должно. Если пути содержат пробелы то необходимо указывать значения этих путей в двойных кавычках.
\\server1\siebelFS1,"\\server1\dir with space in name",\\server2\siebelFS3,"\\server3\new fsdir1"
Да
/H Y/N По умолчанию Y. Если установлено значение Y, то утилита автоматически добавляет ко всем перечисленным путям поддиректорию att. Если же вы не хотите перераспределять файлы из поддиректорий att, то устанвоите значение N Нет


Перед использованием утилиты sfspartition убедитесь, что для именуемой подсистемы ServerDataSrc параметр DSFileSystem равен *FSM*.
Установите значение параметра предприятия/компоненты  Siebel File System (alias FileSystem) в новое значение, перечислив там пути к директориям файловой системы Siebel, пути должны быть перечислены через запятую, пробела после запятой быть не должно, бэкслеш в путях должен быть экранирован вторым бэкслешем. (Например: \\\\server1\\siebelFS1,"\\\\server1\\dir with space in name",\\\\server2\\siebelFS3,"\\\\server3\\new fsdir1")
Обратите особое внимание, что порядок директорий не должен меняться, т.е. если при вызове утилиты вы указали \\s1\d1,\\s1\d2,\\s2\d1, то в парметре Siebel File System (alias FileSystem) директории должны быть перечислены в том же порядке.(\\\\s1\\d1,\\\\s1\\d2,\\\\s2\\d1)
После запуска утилита перераспределит файлы из директорий, перечисленных в параметре /O в директории, перечисленные в параметре /F.