Здравствуйте! Возникла следующая задача: есть БП, в нём выполняется шарпный код, по таймеру, и при завершении процесса, в параметры этого процесса, записываются значения, и мне необходимо после выполнения этого БП, на клиенте анализировать эти параметры и выводить соответствующие информационные уведомления. Но я чего-то не пойму как передать в callback, выполнения БП, эти самые параметры?
Нравится
Здравствуйте! Попробуйте передавать по каналу web-socket
Код на стороне БП
var userConnection = Get<UserConnection>("UserConnection"); var messageToUser = Get<string>("AbMessageToUser"); Terrasoft.Configuration.MsgChannelUtilities.PostMessage(userConnection, "AbCreatingSmsAudienceProcess", messageToUser); return true;
На клиенте следующий код
define("ContactSectionV2", [], function() { return { entitySchemaName: "Contact", details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/, diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/, methods: { init: function () { this.callParent(arguments); this.subscriptionFunction(); }, subscriptionFunction: function() { Terrasoft.ServerChannel.on(Terrasoft.EventName.ON_MESSAGE, this.onAbCreatingSmsAudienceProcessMessage, this); }, onAbCreatingSmsAudienceProcessMessage: function(scope, message) { if (!message || message.Header.Sender !== "AbCreatingSmsAudienceProcess") { return; } var message2 = message.Body; if (!this.Ext.isEmpty(message2)) { this.Terrasoft.showInformation(message2); } } }, messages: {} }; });
Если процесс живёт сам по себе, запускается по таймеру, то в момент его завершения никакого клиента с открытым браузером может и не быть. В таком случае результаты процесса нужно писать в базу, в объекта какого-то справочника или детали, а в клиентской логике оттуда вычитывать результаты последнего завершённого запуска.