понедельник, 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