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

Как запретить в 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.


четверг, 7 июня 2018 г.

Очистка файловой системы Siebel (Siebel file system cleanup utility) sfscleanup

Очень часто в файловой системе Siebel валяется множество файлов, к которым Siebel не сможет уже обратиться по причине того, что связи между ними и данными в системе уже нет.
К примеру: в системе удалили Attachment, но при этом сам файл из системы не удалился или же прикрепили один файл, затем в туже запись второй.

Что же делать с такими файлами? Конечно же их надо удалять из файловой системы Siebel.
Для этого существует утилита sfscleanup (для Windows sfscleanup.exe)

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


Перед вызовом данной утилиты в системе должна быть корректно заполнена переменная окружения SIEBEL_REPOSITORY, в неё должно быть записано название текущего репозитория.
Например(для Windows): set SIEBEL_REPOSITORY="Siebel Repository"

sfscleanup /U <Siebel Login> /P <Password> /C <ODBC источник данных> /F <путь к Siebel File System> /X <путь к log файлу> /M <путь для складирования удаляемых файлов>

Таблица параметров утилиты sfscleanup
Параметр Значение Описание Обязательность
/U Имя пользователя Имя пользователя Siebel для подключения к БД Да
/P Пароль Пароль пользователя Siebel для подключения к БД Да
ODBC источник данных ODBC источник данных для подключения к БД Нет, если задана переменная окружения SIEBEL_DATA_SOURCE, иначе - да
/D Имя пользователя владельца схемы в БД Имя пользователя владельца схемы в БД. Обычно это siebel Нет, если задана переменная окружения SIEBEL_TABLE_OWNER, иначе - да
/F Пути к директории с Siebel File System Пути к директории в которой расположены Siebel File System. Путей может быть несколько. По умолчанию утилита также смотрит файлы в дочерних директориях att. Если вы установили параметр /H в значение Y, то дочерние директории att просматриваться не будут. Да
/H Y/N Не добавлять к путям Siebel File System дочернюю директорию att. Если установлено значение Y, то утилита не будет проверять для каждого указанного пути также поддиректорию att. По умолчанию N. Нет
/X Путь к файлу с отчетом В этот файл будет выгружена информация о работе утилиты Нет
/M Путь для перемещения файлов В эту директорию будут перемещены файлы из Siebel File System Нет
/N Y/N Если установлено значение Y,то старые версии файлов будут удалены. Речь идет о Attachmnt, в которых обновляли файл. По умолчанию файлы помечены как ANCIENT. По умолчанию N Нет
/G Y/N Удаление мусорных файлов. Если установлено значение Y,то из Siebel File System будут удалены файлы, которые созданы не компонентой FSMSrvr (не относящиеся к файлам Siebel). По умолчанию N Нет
/R Y/N Генерировать файл отчета. Если установлено значение Y,то будет сгенерирован только файл отчета, удаление или перемещение файлов выполняться не будет. В файле отчета будут перечислены названия файлов и их типы. По умолчанию N Нет
/Q Y/N Частичная зачистка по запросу. Если установлено значение Y,то файлы будут очищаться частично, а не для всей системы в целом. Ограничения выборки задаются параметрами /I /O /S /T По умолчанию N Нет
/I Число записей Используется только с параметром /Q. Позволяет ограничить число обрабатываемых записей с Attachment Нет
/O Y/N Используется только с параметром /Q. Позволяет изменить способ запроса данных о Attachment. Если установлено значение Y, то запрос будет формироваться через логическое OR (ROW_ID='Id1' OR ROW_ID='Id1' OR ...), иначе будет формироваться запрос IN (ROW_ID IN ('Id1','Id2')). По умолчанию N Нет
/S Y/N Продолжить очистку. Позволяет возобновить предыдущий процесс очистки с последней обработанной записи. Если установлено значение Y, то возобновить очистку с того места где она завершилась в прошлый раз, если о этом есть информация. По умолчанию N Нет
/T Минуты Длительность очистки. Указывается число в минутах, по истечении которых утилита завершит работу. Обычно используется при запуске на высоконагруженных системах по расписанию. В таких системах обычно присутствуют технологические окна определенной длительности. Нет


Таблица типов файлов, выводимых в отчет, генерируемый по параметру /R
Тип файла Описание Действие
CURRENT Текущий действующий файл. Файл связан с записью Attachment в БД Сохранить
NEW Файл создан менее одного часа назад. Утилита не проверяет наличие записи в БД для таких файлов. Сохранить
ORPHAN Файл сиротка. Для данного файла в БД не существует записей ссылающихся на него.Файл будет удален, либо перемещён если указан параметр /M Удалить/Переместить в зависимости от параметра /M
INVALID Файл инвалид. Данный файл создан не компонентой FSMSrvr и нее является файлом Siebel. Файл будет сохранён, либо удалён, если указан параметр /G Y Сохранить/Удалить в зависимости от параметра /G
ANCIENT Файл пенсионер. Данный файл появился в результате замены файла в записи Attachment на новый. Файл будет сохранён, если указан параметр /N Y, то файл ,будет удалён(перемещён, если указан параметр /M) Сохранить/Удалить/Переместить в зависимости от параметра /N и /M