Всем привет, меня зовут Малкин Роман.

В этой статье расскажу о недокументированных возможностях Siebel, а именно  как добавить новые методы PropertySet.

О том, что такое PropertySet  и для чего  используется много открытой информации, например, тут

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

За свою практику видел попытки реализации данного метода. Как правило, они сводились к написанию локальной функции, которая на вход принимала родительский PropertySet и в цикле искала дочерний  определенного типа. Такой подход имеет ряд  недостатков:

  • необходимо каждый раз писать локальную функцию или же написать ее в сервисе и каждый раз вызывать этот сервис;
  • отсутствие возможности использовать длинную цепочку вызовов, к примеру, Inputs.GetChild(0). GetChildByType(Type) .GetChild(0).

Предлагаю свою реализацию метода «GetChildByType», которая не содержит вышеперечисленных недостатков.

  1. Необходимо создать Сервис, который расширит «класс» PropertySet.

Пример кода такого сервиса:

  1. Чтобы гарантированно все PropertySet могли бы использовать этот метод, данный сервис нужно вызывать сразу после входа в Siebel. Вызов данного сервиса встраивается либо по событию Application_Start  серверного скрипта, либо при помощи  Application. Login  RTE.

Данная реализация не единственный пример расширения возможностей Siebel. С помощью такого подхода можно не только расширять функции PropertySet, но и других объектов Siebel.