Задание контекста в Showcase

Материал из Course Orchestra
Перейти к: навигация, поиск
Showcase

Создание решений на КУРС:Showcase

Мультиконтекст - это параметры с которыми запускаются хранимые процедуры для формирования XML файлов, описывающих элементы информационной панели. Мультиконтекст состоит из 4-х контекстов (4-х параметров):

  • основной контекст (main_context)
  • добавочный контекст (add_context)
  • контекст сессии (session_context)
  • контекст-фильтр (filterinfo)

Статически задать в описании действия можно только с помощью main_context и add_context. session_context формируется автоматически на сервере перед передачей запроса в БД, а filterinfo устанавливается в клиентской части из фильтрующей компоненты (XForms или грида).

main_context и add_context могут содержать любые данные в формате xml - в том числе тэги с указанием namespace

Если в качестве значения main_context или add_context указан "current", то значение контекста остается таким же, как в родительском запросе. Частным случаем значения для add_context является значение "hide". В этом случае действием по умолчанию является скрытие элементов. Скрывающий контекст задается следующим образом:

<element id="код элемента" add_context="hide">

Значение "current" можно указывать не только для контекстов мультиконтекста, но и вместо значений идентификаторов элементов информационной панели и элементов навигатора. В этом случае элемент останется таким же, как и в предыдущем событии. Кроме того, для tab допустимым значением является отсутствие атрибута. Это означает, что будет открыта первая вкладка. Допустимым для tab также является значение firstOrCurrent. Это означает, что при смене панели будет открыта первая вкладка, либо при переключениях элементов навигатора, ссылающихся на одну и ту же панель, будет открываться ранее открытая вкладка.

session_context

В параметр session_context сервер записывает имя текущего пользователя или имя пользователя из текущего контекста, а также все параметры из URL.

<sessioncontext>
    <username>имя пользователя</username>
    <sid>S-1-5-21-3280272421-4220533252-1382601228-1147</sid>
    <email>info@curs.ru<email/>
    <fullusername>полное имя пользователя</fullusername>
    <phone>9392612<phone/>
    <userdata>название userdata (из URL)</userdata>
    <urlparams>
        <urlparam name="paramName1" value="[val1,val2]"/>
        <urlparam name="paramName2" value="[val3,val4]"/>
    </urlparams>
    <related>
     <gridContext id="d02">
         <additional></additional>
         <filter></filter>
         <sortedColumn id="_Id" sorting="ASC" valueType="INT" width="100px"/>
         <pageInfo number="1" size="15"/>
         <currentRecordId>5</currentRecordId>
         <currentColumnId>_Id</currentColumnId>
         <selectedRecordId>4</selectedRecordId>
         <selectedRecordId>5</selectedRecordId>
      </gridContext>
      <xformsContext id="0101">
         <formData><schema xmlns=""><info><name>Имя</name></info></schema></formData>
      </xformsContext>      
      <context id="d01">
         <additional></additional>
         <filter></filter>
      </context>
    </related>
    <currentDatapanelWidth>800</currentDatapanelWidth>
    <currentDatapanelHeight>600</currentDatapanelHeight>
</sessioncontext>

Если userdata в URL не задана, устанавливается значение default. Если параметры URL не заданы - тэг urlparams не добавляется.

Для sid, email и phone значение задается только для внешних пользователей (заданных в mellophone). Для внутренних пользователей Showcase тэг <sid> есть, но передается пустая строка.

Замечание: не все браузеры корректно обрабатывают русские символы в адресной строке. В частности, проблемы наблюдались у некоторых версий Firefox и Internet Explorer. При этом проблема может проявиться не сразу. Переход по ссылке, содержащей русские названия параметров проходит всегда успешно, а вот обновление страницы через нажатие Enter в адресной строке браузера может привести к проблемам. Поэтому не рекомендуется использовать русские символы в названиях userdata и других URL-параметрах.

В разделе related передается полный контекст зависимых элементов. Для графика, карты и вебтекста полный контекст включает additional- и filter-контексты, а для грида и xfroms дополнительно передается ряд настроек (см. выше).

Для грида передается информация о выбранных элементах:

  • selectedRecordId - выделенная галкой запись (можно выделить несколько записей);
  • currentRecordId - запись, на которой щелкнул мышью пользователь (таких записей может быть несколько);
  • sortedColumn - информация о столбце с сортировкой;
  • pageInfo - информация о текущей странице: ее номере и размере;

Для xforms передается:

  • formData - данные формы (mainInstance).

Передаваемый идентификатор записи можно задать в настройках для строки грида. Если этого не сделано, будет передан номер записи в таблице на момент формирование грида.

Для всех интерфейсных элементов Showcase в sessioncontext хранимых процедур, celesta- и jython-скриптов приходят следующие свойства:

  • currentDatapanelWidth – текущая полная ширина информационной панели на клиенте;
  • currentDatapanelHeight – текущая полная высота информационной панели на клиенте.

Дополнительные параметры в session_context из Mellophone

Начиная с версии 5.0.0 Showcase, реализована возможность передачи в источники данных в свойстве sessioncontext дополнительных параметров о текущем пользователе из сервера аутентификации Mellophone.

Для задания дополнительных параметров, которые требуется передать в sessioncontext необходимо в теге <searchreturningattributes> провайдера аутентификации <sqlserver> файла конфигурации Mellophone config.xml после стандартных полей (SID, login и name), задать дополнительные параметры (поля). Для примера приводим часть файла config.xml:

 <sqlserver>

    <logging>true</logging>

    <url>jdbc:postgresql://localhost:5432/iasbp</url>

    <connectionusername>postgres</connectionusername>

    <connectionpassword>F708420Dx</connectionpassword>

    <table>security.logins</table>

    <fieldlogin>userName</fieldlogin>

    <fieldpassword>password</fieldpassword>

    <searchreturningattributes

      SID="subjectId" 

      login="userName" 

      name="userName"
      
      additionparameter="additionParametrColumn"

    />

 </sqlserver>


Следует обратить внимание на то, что additionParametrColumn - это имя столбца, который должен быть в таблице, указанной в теге
<table>
файла config.xml в качестве значения этого тега.

Количество дополнительных параметров не ограничено.

После выполнения указанной выше настройки в sessioncontext источников данных элементов Showcase будут приходить значения указанных параметров.

Пример:

<sessioncontext>

 <username>имя пользователя</username>

 <sid>S-1-5-21-3280272421-4220533252-1382601228-1147</sid>

 <email>in...@curs.ru<email/>

 <fullusername>полное имя пользователя</fullusername>

 <phone>9392612<phone/>

 <additionparameter>ValueAdditionParameter</additionparameter>

 ...........

</sessioncontext>