Всем привет!

Очень уж давно ничего нового тут не появлялось. Причин тому две: во-первых, совсем нет времени (впахиваю за троих); во-вторых, признаюсь честно, как-то не идут в голову идеи про что же еще написать. Если у Вас есть вопросы, то задавайте их здесь, в нашей группе в ВК или пишите мне лично на почту: mail@knazarov.ru. Может из ответов на Ваши вопросы и будут получаться какие-нибудь интересные темы для статей!

А теперь вернемся к теме, описанной в заголовке статьи. Буквально сегодня мне пришлось делать не самую хорошую вещь (вставлять SQL-ем запись в таблицу Сибеля). Но будучи уж не совсем засранцем я решил, что все системные поля нужно заполнить по фен шую. Почти все поля легко заполняемы, кроме ROW_ID. Но оказалось, что и тут вопрос довольно легко решаем.

Среди множества полезных бизнес сервисов в Siebel есть один с названием SIS OM PC Service. У него есть набор методов. Честно говоря я не стал особо углубляться и изучать каждый из них. Мне нужен был только один метод с названием Get Next RowId. Из названия все понятно. Входных параметров у него нет. Есть только один выходной (также сразу понятно какой) — RowId. Принцип действия очень прост! Вызываем метод этого бизнес сервиса — получаем очередной row_id для вставки записи.

Посмотрел я на то, что написал выше и понял, что статья уж слишком коротка! Решил добавить немного еще. Наверно у Вас возникнет логичный вопрос: на хрена мне генерировать id таким образом, если в тех местах, где я могу вызвать этот сервис, я могу прекрасно вставить запись через объект Business Component  и у меня автоматом будет проставлен новый уникальный id ? Согласен, с первого взгляда действительно выглядит довольно странно. Но есть важный момент: бизнес сервис Сибеля можно вызвать не только из самого Сибеля! Его можно вызвать и извне! Причем разными способами! Как пример, я приведу два способа:

  • из программы, написанной на Java с использованием SJDB
  • через командную строку с использованием srvrmgr

Про основы SJDB я уже рассказывал в одной из статей, на которую дал ссылку выше. А про такой офигенный инструмент как srvrmgr я еще не рассказывал. Я надеялся, что мой хороший друг и товарищ (админ Сибеля) все таки найдет время и накидает здесь пару статеек на эту тему, но видимо так и не дождусь. Поэтому про srvrmgr я расскажу в следующих статьях (вот и придумал о чем же еще написать)! А сейчас приведу пример вызова данного сервиса с помощью SJDB из Java программы, как я и делал сегодня для своих нужд.

Сейчас я довольно активно использую SJDB и накатал универсальный метод для вызова любого бизнес сервиса:

Данный универсальный метод предполагает, что входные аргументы поступают списком и каждый элемент списка имеет формат: <название_параметра>=<значение>.

А теперь маленький кусочек кода с вызовом метода, генерирующего row_id:

Вот и все! В следующий раз расскажу в общих чертах о Server Manager (или сокращенно srvrmgr) и заострю внимание на том, как из него вызывать бизнес сервисы.