Добрый день всем !

Посоветуйте, пожалуйста, есть ли возможность для своего пакета создать набор параметров сеанса, который будет инициализироваться при авторизации пользователя. Чтобы этот набор можно было читать на клиенте. Что-то вроде глобальных переменных как Terrasoft.SysValue.CURRENT_USER.value.

В моей задаче по интеграции при нажатии на кнопку, я формирую строку запроса в зависимости от двух системных настроек и данных о пользователе, для хранения которых я добавил раздел. Изучаю BPMOnline недавно, поэтому работающий код получается такой, что я запускаю три запроса подряд, хочется оптимизировать.

Привожу отрывок кода, кот. выполняется при нажатии на кнопку на форме записи Opportunity:

this.Terrasoft.SysSettings.querySysSettingsItem("SAMServerURL", function(_SAMServerUrl) {

                    SAMServerUrl = _SAMServerUrl;

                }, this);                

this.Terrasoft.SysSettings.querySysSettingsItem("SAMServerOrganizationID", function(_OrgID) {

                    OrganizationID = _OrgID;

                }, this);       

                var UserName = "";

                var esq = Ext.create("Terrasoft.EntitySchemaQuery", {

                    rootSchemaName: "G2MHGroup"

                });              

                esq.addColumn("G2FirstName", "FirstName");

                esq.addColumn("G2BPMUser", "BPMUser");

                esq.filters.add("G2BPMUser", Terrasoft.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, "G2BPMUser", Terrasoft.SysValue.CURRENT_USER.value));

                esq.getEntityCollection(function (result) {

                    if (!result.success) {

                        this.showInformationDialog("Ошибка запроса данных схемы G2MHGroup");

                        return;

                    }

                    result.collection.each(function (item) {

                        UserName = item.get("FirstName"); 

                ReadOnlyFlag = "false";

                RequestString = SAMServerUrl + "ShowSheet.aspx?OrgID="+OrganizationID+"&Popup=Y&User="+UserName+"&Product=Bluesheet%20&ProductKey="+activeRow+"&ReadOnly="+ReadOnlyFlag+"","Blue Sheet"

                

                var str = "width=1003, height=674, scrollbars=yes, status=0, menubar=no, resizable=yes";              

                window.open(RequestString, str);

                    });

                }, this);

Хочется сделать один запрос к серверу чтобы прочитать все что нужно. И его можно сделать один раз при авторизации а не каждый раз при нажатии на кнопку.

Спасибо !

 

 

 

 

 

Нравится

2 комментария

Михаил, здравствуйте!





Начиная с версии 7.11.3, в приложении появился файловый контент

(есть статья на академии), там имеется механизм bootstraps файлов, это файлы код которых выполняется с момента загрузки JS ядра Terrasoft, но до момента загрузки конфигурации, там можно выполнить запрос в базу данных и сохранить результаты в глобальную переменную в среде JS.

 

Если версия более старая, то можно определить свой метод в схеме и задействовать механизм ленивой инициализации

(с кешированием в глобальной переменной в среде JS). Информацию по реализации ленивой инициализации, можно найти в интернете.

 

Также можно использовать механизм кеширования.

 

Спасибо большое  !  У меня версия 7.11.1,  попробую кеширование.

Показать все комментарии