Вопрос

Доброе время суток !

Вопрос:
у меня такой вопрос, можно ли добавить событие в Автогенерируемую страницу ?

Задача:
Мне нужно сделать событие которое генерировалось при выборе значения из справочника.
Это нужно сделать в бизнес-процессе, т.е отобразить пользователю страницу для ввода.

Клиентской схемы я так понимаю нет у Автогенерируемой страницы, да ?

Примечание:
(использовать Автогенерируемую страницу не обязательно)

У меня такой же вопрос

2 комментария
Лучший ответ

Ну не используй автогенерируемую страничку используй стандартный элемент БП "Открыть страницу редактирования".

Ну не используй автогенерируемую страничку используй стандартный элемент БП "Открыть страницу редактирования".

Григорий Чех,

использовал элемент [Преднастроенная страница], там так можно

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Есть в БП автогенерируемая страница, за которой идет завершение. 

Проблема в том, что если пользователь нажал закрыть или закрыл окно, то процесс висит в стадии "Выполняется". Как настроить страницу так, чтобы процесс завершался независимо от того, что нажал или не нажал пользователь. Страница отобразилась, этого достаточно.

У меня такой же вопрос

8 комментариев

Базовые схемы (в том числе и схемы элементов БП) недоступны для редактирования, изменить заложенную логику в элемент не получится.

Добавьте рекомендации на странице, что ожидается от пользователя на этом этапе.

нажал закрыть или закрыл окно

в случае с автогенерируемой страницей -  вариантов решения нет на данный момент, по крайней мере боле не менее реализуемых "малой кровью".
Но если вы используете элементы "Открыть страницу редактирования" или "Открыть преднастроенную страницу", то в данном случае на пользователя создается Активность, а так же появляется специальный вариант, кнопка "Выполнить позже" (обуславливающая напоминание пользователю).
Как вариант решения кейса - заменить автогенерируемую страницу - преднастроенной.

Зарицкий Олег,

Значит в этой базовой схеме "баг" - ее логика не правильная. Как разработчику ее исправить? Или как построить БП, так чтобы обойти этот момент?

Может, как-то можно поймать сигнал, что БП показал страницу? И по этому сигналу завершить БП?

Владимир Соколов,

можно перед автогенерируемой страницей параллельную пустить ветку с таймером в 1 минуту.

Вне зависимости от того, что пользователь выберет на странице (и выберет ли что-то вообще), процесс будет завершен.

Севостьянов Илья Сергеевич пишет:
Как вариант решения кейса - заменить автогенерируемую страницу - преднастроенной.

Таким образом пользователь получит Активность и сможет выполнить ее позже... 
1) Преднастроеная страница - сразу после открытия, элемент считается выполненным и БП двигается дальше
2) Страница редактирования - присутствует специальная настройка

можно задать условие - всегда выполняющееся.

БП - двинется дальше после любого пользовательского действия с карточкой: "Сохранить" / "Закрыть" / "Отмена"

Как-то так...

У Вас кейс какой: Вам необходимо чтобы пользователь что-то сделал, и только потом БП продолжился, или вне зависимости от этого ?

Демьяник Алексей пишет:
можно перед автогенерируемой страницей параллельную пустить ветку с таймером в 1 минуту.Вне зависимости от того, что пользователь выберет на странице (и выберет ли что-то вообще), процесс будет завершен.

А если этот пользователь сейчас не в системе? И когда он появится в системе, то БП уже завершится, и он не увидит страницу 

Демьяник Алексей,Спасибо!

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Добрый день, Коллеги.

Насколько проблематично задать фильтр определенному лукапу на автогенерируемой странице? Кто сталкивался с такой проблемой может подсказать в каком направлении копать или может есть небольшие наработки на этот план?

Поделиться

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

Отказался от автогенерируемых страниц в пользу преднастроенных страниц

Добрый день!

Базовые схемы (в том числе и схемы элементов БП) недоступны для редактирования.

Для подобных задач используйте преднастроенную страницу.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Коллеги, добрый день.

В рамках реализации процессов и создания автогенерируемых страниц по процессу появилась необходимость использования правил, типа BusinessRuleModule. Можете подсказать каким образом можно реализовать данные требования?

1) Закрытие полей на редактирование на автогенерируемой странице
2) Использования фильтра в справочном поле (Выбор сотрудника из раздела Физ. лица, но только из тех, у кого есть определенные роли в системе)

С уважением,
Дмитрий

У меня такой же вопрос

1 комментарий

Добрый день!

Элемент [Автогенерируемая страница] недоступен для редактирования, т.е. настроить бизнес-правила не получится.
Для решения задачи используйте [Преднастроенная страница]. Тут вы можете настроить все необходимые правила/фильтры.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Всем привет.

Используется BPMonline Bank Sales Версия 7.5.0.1275
Возникает проблема с параметром процесса типа Коллекция. Диаграмма процесса приложена.

В первом сценарии делаем выборку данных и результирующую коллекцию присваиваем параметру процесса. Во втором сценарии достаем нужную информацию из выборки через Entity, которую, в свою очередь, вытаскиваем из коллекции по индексу. Сам индекс инкрементируем в Формуле и проверяем не превысил ли он количество элементов в выборке. Так вот, первый шаг проходит хорошо. Все данные достаются и показаны в окне Проверка результата и соответствуют действительности. Но при заходе на второй круг в элементе-сценарии Формирования текста SMS и номера возникает ошибка

System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: Значение индекса находится вне допустимого диапазона значений
   at Terrasoft.Core.Entities.EntityCollection.FindNodeByIndex(Int32 index)
   at Terrasoft.Core.Process.BirthdayQuery.ScriptTask2Execute(ProcessExecutingContext context)
   at Terrasoft.Core.Process.ProcessFlowElement.Execute(ProcessExecutingContext context)

Индекс при этом равен 1. То есть, от коллекции, похоже, осталась только одна запись.

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

Код сценария Выборка данных у кого ДР

        var esqBirthdays = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "Contact");
        contactIdFieldName = esqBirthdays.AddColumn("Id").Name;
        esqBirthdays.AddColumn("GivenName");
        esqBirthdays.AddColumn("MiddleName");
               
        esqBirthdays.IsDistinct = true;
                       
        //Получение сегодняшней даты
         today = DateTime.Today;
       
        var esqMacrosTypeMonth = EntitySchemaQueryMacrosType.Month;
        var esqFilterByMonth = esqBirthdays.CreateFilter(FilterComparisonType.Equal, "BirthDate", esqMacrosTypeMonth, today.Month);
        esqBirthdays.Filters.Add(esqFilterByMonth);
               
        var esqMacrosTypeDay = EntitySchemaQueryMacrosType.DayOfMonth;
        var esqFilterByDayToday = esqBirthdays.CreateFilter(FilterComparisonType.Equal, "BirthDate", esqMacrosTypeDay, today.Day);
        esqBirthdays.Filters.Add(esqFilterByDayToday);
       
        //Есть моб тел?
        var esqFilterWithMobilePhone = esqBirthdays.CreateFilterWithParameters(FilterComparisonType.Equal, "[ContactCommunication:Contact].CommunicationType", new Guid("F039972E-470E-457F-9B77-65054B3534B0"));
        esqBirthdays.Filters.Add(esqFilterWithMobilePhone);
       
        //Выполнение запроса и получение результирующей коллекции
        entitiesBD = esqBirthdays.GetEntityCollection(UserConnection);
    numberOfentitiesBDInCollection = entitiesBD.Count;
        currentIndexBD = 0;
        esqSqlText = esqBirthdays.GetSelectQuery(UserConnection).GetSqlText();
               
        return true;

Код сценария Формирования текста СМС и номера

        Entity element = entitiesBD[currentIndexBD];
        Guid contactID = element.GetTypedColumnValueGuid>(contactIdFieldName);
    string contactName = element.GetTypedColumnValuestring>("GivenName");
        string contactMiddleName = element.GetTypedColumnValuestring>("MiddleName");
        string BirthDateText = DateTime.Today.ToString("dd MMMM");
        string messageText = "Дорогой(ая) "+contactName+"! Росинбанк поздравляет Вас с Днем Рождения "+BirthDateText+"  и желает Вам всех благ! Росинбанк";
        if(contactMiddleName!=null) messageText = "Дорогой(ая) "+contactName+" "+contactMiddleName+"! Росинбанк поздравляет Вас с Днем Рождения "+BirthDateText+"  и желает Вам всех благ! Росинбанк";
        SMSTextBD = messageText;
       
        var contactComm = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "ContactCommunication");
        var contacctNumberFieldName = contactComm.AddColumn("Number").Name;
       
        var esqFilter1 = contactComm.CreateFilterWithParameters(FilterComparisonType.Equal, "Contact", contactID);
        contactComm.Filters.Add(esqFilter1);
       
        var esqFilter2 = contactComm.CreateFilterWithParameters(FilterComparisonType.Equal, "CommunicationType", new Guid("F039972E-470E-457F-9B77-65054B3534B0"));
        contactComm.Filters.Add(esqFilter2);
       
        var mobilePhoneCollection = contactComm.GetEntityCollection(UserConnection);
        if(mobilePhoneCollection.Count>0)
        {
        phoneNumberBD = mobilePhoneCollection[0].GetTypedColumnValuestring>(contacctNumberFieldName);
        } else
        {
        phoneNumberBD = "No number";
        }
       
        //var SMSObject = new SendSMSClass(SMSServiceAddress);
        //SMSObject.SendSMS(phoneNumber, messageText);

return true;   
csharp>

У меня такой же вопрос

1 комментарий

Добрый день!
Попробуйте выполнять проверку и автоинкремент индекса в элементе “Задание сценарий”. Например,

if(IndexBD < entitiesBD.Count){
...
IndexBD++;
} else {
...
}
return true;

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день!

Создаю маленький БП, только с автогенерируемой страницей, в которой всего одна кнопка. Запуская процесс, он странно себя ведет при нажатии на клавишу закрыть. В журнале он пишет что процесс выполняется... но никак повлиять на него нельзя, не запустив автогенерируемую страницу заново из журнала процессов.

Скажите, есть ли возможность убрать эту кнопку, чтоб была лишь та, которую я добавил.

Пробовал изменить на автогенерируемую страницу на вопрос пользователя изменив трактовку задания.

Здесь та же проблема с клавишей закрыть. Но и появилась другая: Кнопка выполнить позже, ничего не делает. Пробовал добавить отображение в расписание, напоминание... и т.д. Но BPM не в какую не демонстрирует уведомление, вообще никаких показателей этому.

Использую BPM 7.5

У меня такой же вопрос

1 комментарий

Здравствуйте!

Кнопка "Закрыть" создает активность пользователю, который ее нажал. Кнопка "Выполнить позже" запрашивает у пользователя информацию, когда именно пользователь хочет выполнить отложенную активность.
Возможность убрать кнопку "Закрыть" есть (на самом деле она не убирается, а скрывается). Вам необходимо заместить AutoGeneratedPageV2Utilities и прописать логику сокрытия кнопки в замещающую страницу.

Войдите или зарегистрируйтесь, чтобы комментировать

Здравствуйте, есть БП.

Зависает на первом элементе (элемент даже не открывается). В журнале никаких ошибок.
Изначально процесс работал, после сохранения новой версии процесс перестал работать. Ничего,что могло бы повлиять на его работу таким образом, не менялось.Изменилось состояние активности,по которой завершается один из конечных элементов процесса.

В чем может быть проблема?

У меня такой же вопрос

10 комментариев

Добрый день!

Уточните, пожалуйста, правильно ли я понимаю, что пользователю не открывается страница?

Здесь могут быть два варианта:
1) Ответственный (кому должна открываться страница) отличается от пользователя, который запускает процесс (в случае преднастроенной страницы и страницы редактирования).
2) Если ответственный на открывающейся странице не указан, тогда страница открывается текущему пользователю. В таком случае, проверьте, пожалуйста, ошибки консоли браузера.

Действительно, не открывается страница. Используется автогенерируемая страница. На ней всего одно справочное поле и 2 кнопки.
Ответственный не указывается. В консоли браузера никаких ошибок нет.
Также хочу добавить, что сразу после переезда с версии 7.4 на 7.5 процесс запускался и работал. После сохранения новой версии перестал.
Я для теста создал новый БП, перенес в него все элементы, результат не изменился. Не открывается окно автогенерируемой странийцы

Данное поведение обусловлено сохранением процесса в новой версии. Такое поведение иногда встречается.
В рабочих процессах двух версий уберите, пожалуйста, признак "Активен". Запускается ли тестовый процесс после снятия признака?

Убрал, все-равно не запускается. Создал процесс из одного элемента - автогенерируемой страницы, также не запускается.
Как ещё можно попробовать побороть данную проблему? На чистой базе(до изменений в процессе) БП запускался без проблем. На какие таблицы можно обратить внимание?

Предлагаю попробовать следующий вариант - помогает в большинстве случаев: находясь в дизайнере процессов, нажмите Дополнительно -> Копировать диаграмму. Укажите новое название и заголовок, а также пакет для сохранения. После того, как диаграмма будет скопирована, удалите новую версию процесса (старая удалится автоматически), а также тестовый процесс. Таким образом по событию будет запускаться только один процесс, который был создан путем копирования диаграммы. В нем автогенерируемые страницы должны открываться.

Алексей, верно ли я Вас понял, что должна остаться только копия процесса, созданная через Дополнительно -> Копировать диаграмму?

Сделал все как указано. Все удалилось, остался всего один процесс в моем пакете, но элемент "Автогенерируемая страница" так и не выполнился.

Добрый вечер! Для решение требуется удаленное подключение. Как и было согласовано, подключение осуществим после 8 июня в удобное для Вас время.

Добрый вечер!
Если Вы используете Windows Server 2012, тогда наиболее вероятно, что карточки по процессам не поднимаются из-за некорректных настроек веб соккетов.
Для исправления необходимо:

1. Установить компоненту WebSocket протокола (Server Manager\add roles and features … Web-server\Websocket protocol) – в R2 вроде как установлена по умолчанию
2. Откорректировать корневой web.config:

<location path="." inheritInChildApplications="false">
             <system.web>
             ...
             <httpRuntime maxRequestLength="102400" executionTimeout="28800" targetFramework="4.5" />

3. Откорректировать Terrasoft.WebApp\Web.config
Секция wsService должна выглядеть так:

<wsService type="Terrasoft.Messaging.MicrosoftWSService.MicrosoftWSService, Terrasoft.Messaging.MicrosoftWSService" encrypted="false" portForClientConnection="0" />

Секция location\system.web:

<location path="." inheritInChildApplications="false">
    <system.web>
     ...
      <httpRuntime maxRequestLength="102400" executionTimeout="28800" <strong>targetFramework="4.5"</strong> />
      <httpHandlers>
        ...
       <add verb="GET" path="*ViewModule.aspx.ashx" type="Terrasoft.Messaging.MicrosoftWSService.WSHandler, Terrasoft.Messaging.MicrosoftWSService" />

Секция system.webServer:

<system.webServer>
    ...
    <handlers>
      ...
      <add name="WSHandler" verb="*" path="*ViewModule.aspx.ashx" type="Terrasoft.Messaging.MicrosoftWSService.WSHandler, Terrasoft.Messaging.MicrosoftWSService" />

Алексей, сейчас нет возможности попробовать предложенное Вами решение, но используется Windows Server 2008 R2. Карточки по процессам поднимались до сохранения новой версии процесса.
Предложенный вами вариант смогу попробовать немного позже.
Заранее спасибо за отклик!

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Колегги,

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

подскажите как реализовать подобную логику но уже в версии 7.4.x

в версии 7.2 можно было сделать следующим образом:
http://www.community.terrasoft.ru/forum/topic/10904#comment-49670

У меня такой же вопрос

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

Владимир, здравствуйте!
В базовом функционале 7.3 и выше не заложена возможность расширять автогенерируемую страницу.
Как вариант решения задачи можно доработать AutoGeneratedPageV2Utilities так, чтобы модуль поддерживал бизнес-правила, но подробных рекомендаций дать не могу.
Вообще для отрисовки автогенерируемой страницы используются модули ProcessCardModuleV2, AutoGeneratedPageV2 и упомянутый выше AutoGeneratedPageV2Utilities.

Здравствуйте, Андрей!

Спасибо, за объяснение.
Очень надеюсь что в последующих версиях разработчики bpm'online дадут нам возможность расширять автогенерируемую страницу.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Здравствуйте! Собственно, вопрос в заголовке темы. Какой код нужно добавить на вкладку "Расширяющий клиентский модуль" элемента Автогенерируемая страница, чтобы организовать проверку введенных в поля данных при сохранении?
BPMonline Версия 7.2.2.257

У меня такой же вопрос

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

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.

Здравствуйте, Акмаль!

Ознакомитесь, пожалуйста, со следующими постами:

http://www.community.terrasoft.ru/blogs/10617
http://www.community.terrasoft.ru/usr/video/10677
http://www.community.terrasoft.ru/forum/topic/11152

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Элемент процесса "Автогенерируемая страница". В каком формате писать код на вкладке "Расширяющий клиентский модуль" ?

У меня есть два поля на странице, мне нужно чтобы второе заполнялось после выбора значения в первом.

У меня такой же вопрос

9 комментариев

Здравствуйте, Лариса!

Спасибо за Ваше обращение. Мы зарегистрировали его в Службе технической поддержки и назначили специалиста, который сможет Вас компетентно проконсультировать по данному вопросу.

Лариса, вкладка [Расширяемый клиентский модуль] используется для программирования
дополнительной логики работы автогенерируемой страницы на языке C#.

Из расширяемого клиентского модуля автогенерируемой страницы нельзя напрямую обратиться к модели представления страницы, чтобы добавить бизнес-правила для поля. Для решения Вашей задачи можно написать свой модуль и пользоваться элементом «Преднастроенная страница».

Доброго дня!

Роман, я з Вами не погоджуюсь! Ви на праві!
Для того та вкладка і є, щоб розширити функціонал сторінки!

Хочу ще додати, що там є помилка в регулярному виразі. Прийміть це до уваги.
Дивився на версії 7.2.0.1351.

"Саварин Володимир" написал:

Для того та вкладка і є, щоб розширити функціонал сторінки!

Володимир, буду вдячна за приклад.

"Саварин Володимир" написал:Хочу ще додати, що там є помилка в регулярному виразі. Прийміть це до уваги.

Владимир, уточните, пожалуйста, данный момент.

Лариса, ось приклад.

Настроїв сторінку з двома полями: Контрагент ("Account"), Контакт ("Contact").

Код на вкладці "Расширяющий клиентский модуль":

finalizeStructure: function(processData, callback) {
    var bindToObj = new Object();
    bindToObj.bindTo = 'contactEnabled';
    processData.pageSchema.schema.leftContainer[1].enabled = bindToObj;
 
    callback(processData);
};
 
contactEnabled: function() {
    return (!Ext.isEmpty(this.get('Account')));
};

В результаті, при незаповненому полі Контрагент, поле Контакт недоступне:

"Саварин Володимир" написал:
Є помилка в регулярному виразі.

"Резвов Роман" написал:
Владимир, уточните, пожалуйста, данный момент.

Регулярний вираз виходить з методу завчасно.
Розумію, що можна обійти, але все ж :wink:

"Резвов Роман" написал:
Владимир, уточните, пожалуйста, данный момент.

Ще мене турбує, що для елемента "Поле выбора" не можна задати фільтрації (властивість "filter") по певній умові, вірніше задати його то можна через розширяючий модуль, але генератор карточки його не підтягне.

Владимир, все верно, для элемента "Поле выбора" на данный момент не реализована возможность накладывать фильтрацию.

Касательно регулярного выражения, пожалуйста, предоставьте более подробное описание.

Войдите или зарегистрируйтесь, чтобы комментировать