Доброго времени суток!
Делаю кастомный класс(ничего не замещает).
Есть вопросы:
1. Как вызвать его из Js?
Я так понимаю что вот так:
верно?
2. Как сделать выборку и получить данные из БД в сдк описано, а вот как вставить новую запись?
Нравится
Создал такой класс:
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Data; using Terrasoft.Common; using Terrasoft.Core; using Terrasoft.Core.DB; using Terrasoft.Core.Entities; public class ConvertPropertyToListing { public ConvertPropertyToListing(String a) { } public ConvertPropertyToListing() { } public String Response() { return "Abrakadabra"; } }
на кнопку в схеме повесил вот такой код:
showInfo: function() { var substituteObject = ClassFactory.Get<ConvertPropertyToListing>(); this.showInformationDialog(substituteObject.Response()); }
В итоге js выдает ошибку:
Метка времени: 09.12.2015 13:42:24
Ошибка: SyntaxError: expected expression, got ')'
Источник: https://ipotekansk-test.bpmonline.com/0/configuration/b2db0922da8d4c427…
Строка 856, символ 73
Исходный код:
var substituteObject = ClassFactory.Get<ConvertPropertyToListing>();
Что не так?
Как минимум, впервые слышу про ClassFactory в контексте js кода.
Если вы хотите что бы по какому-то событию на страничке выполнялся именно c# (серверный) код, а судя по тому что вы спрашиваете в своем втором вопросе, вам нужен именно серверный код. Т.к. создать новые объекты в БД, можно только в контексте сервера. Вам нужно использовать бизнес-процессы. И в них уже писать свой c# код.
Подробнее про бизнес-процессы:
http://www.academy.terrasoft.ru/documents/?product=BPMS&ver=7.6.0
О том как потом вызвать БП из кода, было не мало тем на форуме, к примеру:
http://www.community.terrasoft.ru/forum/topic/10554#comment-47944
http://www.community.terrasoft.ru/forum/topic/13848
Еще раз кратко ответ на ваши 2 вопроса:
1. Через вызов БП.
2. Только на уровне c# кода, c помощью:
http://academy.terrasoft.ua/documents/docs/technic/SDK/7.4.0/Terrasoft…
P.S.
Примеры использования Insert можно посмотреть в исходных кодах схем с кодом на c#, либо выгрузив все доступные исходные коды, если вы on-site, с помощью:
http://academy.terrasoft.ru/documents/docs/technic/SDK/7.6.0/ServerCode…
В общем случае код Insert'а будет выглядеть примерно так:
Insert insertRelationshipQuery = new Insert(UserConnection); insertRelationshipQuery.Into("Relationship"); insertRelationshipQuery.Set("Active", Column.Parameter(true)); insertRelationshipQuery.Set("AccountBId", Column.Parameter(accountId)); insertRelationshipQuery.Set("RelationTypeId", Column.Parameter(relationTypeId)); insertRelationshipQuery.Set("AccountAId", Column.Parameter(parentId)); insertRelationshipQuery.Set("ReverseRelationTypeId", Column.Parameter(reverseRelationTypeId)); insertRelationshipQuery.Execute(executor);
Я что то не нашел как из БП вызвать c# код...
Как это сделать?
Это есть в академии, в том разделе что указан выше, а именно, произвольный c# код, на странице:
http://academy.terrasoft.ua/documents/docs/technic/BPMS/7.6.0/BPMonline…
Так же видео:
http://www.community.terrasoft.ru/usr/video/10684
Видео немного устаревшее, но суть должно дополнить, к тому, что написано в академии.
Просмотрел данное видео.
Вопросы:
1. Это c# или таки js?
2. Можно ли оттуда вызвать свой класс созданный в конфигурации?
3. Как получить значение параметра пришедшего в БП?
4. Мне к примеру надо будет сделать выборку по RecordId(параметр), потом создать новую запись, и сообщить юзеру результат. Как это сделать?
Я понимаю что задаю много тупых вопросов, но найти нужную мне информацию в документации иногда не возможно.
К чему я это все спрашиваю. Есть у меня задача, надо написать job, который будет собирать все листинги по определенному параметру, сформировать xml и отправить на удалённый сервер. Это вообще возможно?
1. С#, там же даже на иконке элемента написано "C#".
2. Можно, только объявите его в Usings секции процесса. Старайтесь смотреть на уже созданные БП, и как там все это реализовано.
3. Просто по имени. Если вы создали в секции parameters, параметр с именем, к примеру TestParameter и типом строка. То так по коду к нему и обращайтесь "TestParameter"
К примеру, генерация события сообщения, с значением этой строки:
Terrasoft.Configuration.MsgChannelUtilities.PostMessage(UserConnection, "MyProcess", TestParameter);
4.a. Выборка данных решается применением EntitySchemaQuery http://academy.terrasoft.ru/documents/docs/technic/SDK/7.6.0/UsingEntit…
4.b. Сообщение пользователю из бп можно сделать предварительно сделав подписку в определенной схеме, которая будет открыта у пользователя в момент выполнения БП. К примеру, собственно, в схеме от куда этот БП и будет у вас запускаться. Данный вопрос рассматривался тут:
http://www.community.terrasoft.ru/forum/topic/11784
Так же обратите внимание на статью, в ней описан процесс вызова БП с параметрами из схемы:
http://academy.terrasoft.ru/documents/docs/technic/SDK/7.6.0/ExecutePro…
Вы отредактировали свой комментарий добавив еще один вопрос, и да, это c# код, и веб приложение. Конечно вы сможете формировать файл и дернуть апи своего удаленного сервера если он это позволяет. Но эти вопросы уже не касаются bpmonline.
"Щиголь Максим" написал:2. Можно, только объявите его в Usings секции процесса. Старайтесь смотреть на уже созданные БП, и как там все это реализовано.
Не совсем понял как его вызвать... БУду благодарен если вы дадите пример как из скрипт-сценария создать экземпляр моего класса.
Вызов экземпляра класса я уже показывал тут:
http://www.community.terrasoft.ua/forum/topic/14174#comment-57144
Объявление немспейса в Usings секции, нужно только если вы хотите обращаться к имени класса без приставки немспейса по коду.
К примеру, если писать полное обращение, вроде
var myClass = new MyNamespace.MyClass();
то выносить "MyNamespace" не нужно.