|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
Продублировал свой вопрос на форуме BizAgi. Может быть там что посоветуют. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2011, 16:43 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
Если бы фильтр контрола допускал использование XPath-функции exists(), задача решалась бы с пол-пинка. Проблема в том, что никакие выражения за исключением ссылок на поля Entity фильтр не допускает. :( Ок. Попытался решить задачу обходным путем. Создал во вспомогательной БД VIEW, в которой отфильтровываются допустимые для выбора записи в привязке ко всем экземплярам процесса (параметризованные запросы, насколько я понял, не допускаются). Надеялся, что смогу отфильтровать из него нужный набор данных по текущему экземпляру процесса, задав условие фильтрации в свойствах контрола на форме. Создал виртуализованное энтити, сославшись в нем на это VIEW. Осталась самая малость - отфильтровать в виртуализованном энтити записи, которые имеют отношение только к текущему экземпляру процесса. Так ведь опять фильтр не дает этого сделать... :( :( :( Что за черезмерная интеллектуальность у него! :( Сравниваю значение int со ссылкой на ключ Master Entity, который тоже имеет тип int. BizAgi ругается - говорит, что типы данных не совпадают... :( И на англоязычном форуме глухое молчание. Трам-тарарам... :( Неужели такая простая задача не имеет решения? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2011, 14:13 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
Garya, этоне простая задача :) это задача о Роли типа в отношении, о Ранге типа в отношении к другим типам и т.д. концептуальная вешсч, которая к тебе явилась в виде задачи LookUp :) можно конечно техническими ухищрениями выйти из положения, но не дело это это должно было быть решено модельно ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2011, 15:08 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
задача действительно простая. Но как и в любой системе, которая формирует БД самостоятельно, зависит от того, предусмотрена ли такая логика или нет. Возможно разработчики еще просто не сталкивались с такими конструкциями. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2011, 15:20 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
iscrafm, простая, если посмотреть снизу вверх с точки зрения лукап) сложная если сверху вниз, Роли и Взаимоотношения ролей ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2011, 15:55 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
ViPRosiscrafm, простая, если посмотреть снизу вверх с точки зрения лукап) сложная если сверху вниз, Роли и Взаимоотношения ролейСахават, при чем тут взаимоотношение ролей? Когда между таблицами имеются не только отношения один-ко-многим, которые можно трактовать как связь master-detail, но и имеются связи многие-ко-многим, которые необходимо учитывать в пользовательском интерфейсе, - такая ситуация весьма распространенная. Мне приходилось сталкиваться с подобной ситуацией в разных системах и жизненных ситуациях бесчисленное количество раз. И всегда выходили из нее легко и просто. Чаще всего такая ситуация разрешалась в пользовательском интерфейсе либо с помощью возможности использования параметризованного SQL-запроса, либо с помощью не-параметризованного SQL-запроса, но текст которого формируется динамически. В данном продукте нет возможности использовать SQL-запросы, она заменена XPath-коллекциями и XPath-функциями. Но в том месте, где они наиболее всего могут поднадобиться, возможность их использования почему-то закрыта. P.S. Напрягши лобную мышцу, нашел вариант, с помощью которого можно обойти траблу, с которой столкнулся при решении исходной траблы. Сейчас создам дополнительное вспомогательное поле типа int в составе Master Entity и буду триггером присваивать ему значение такое же как у идентификатора записи. В фильтре буду ссылаться не на идентификатор записи, а на вот это вспомогательное поле. Надеюсь, при таком раскладе BizAgi уже не будет считать, что два int имеют разный тип. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2011, 17:03 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
GaryaИ еще несколько вопросов, если не сильно затруднит... 1. Можно ли как-нибудь настроить bizagi, чтобы тот, кто стартует БП мог бы отказаться от его старта, если он вдруг почему-то передумал его стартовать, пока заполнял форму исходными данными? Или если нажал кнопку "запустить", то он так и будет "летать на орбите", даже если на форме имеются ошибки, которые не позволяют никаким образом продолжить выполнение процесса? 2. В какой момент отрабатывает условие фильтрации, заданное для контрола на форме в поле "Filter" и загружаются данные для отображения на форме (например, для комбобокса)? У меня такое ощущение, что при загрузке формы. А можно ли как-нибудь заставить контрол обновить данные после того как указано значение для другого контрола? 3. Можно ли создавать на форме контролы, не привязанные к данным? У меня такое ощущение, что нельзя. Поправьте меня пожалуйста, если я ошибаюсь. Можно ли как-нибудь адресовать не к данным Entity (то есть, не к источнику данных для контрола), а к данным собственно формы, если контролы, не привязанные к данным могут существовать? 4. Если требуется организовать на форме что-то вроде ReachTextBox с возможностью ввода текста произвольной длины, то существует ли какая-либо альтернатива использования строки длиной 4000 символов для использования BLOB-полей кроме аплода файла, сформированного за пределами системы? 1. Когда вы в портале в меню "Процессы" сказали "Запустить" и указали процесс, который надо запустить, то процесс уже начал исполняться. Что можно сделать, если ввели ошибочные данные: - можно проверить введенные данные и попросить пользователя их исправить так: http://wiki.bizagi.com/en/index.php?title=Grid_Validation или так: http://wiki.bizagi.com/en/index.php?title=Validations - можно в схеме процесса поставить после первого шага развилку, на которой проверить данные и если что-то не так, то отправить процесс в End. - либо пользователь, обладающий определенными привилегиями ( http://wiki.bizagi.com/en/index.php?title=How_to_configure_access_control) может в портале зайти в меню "Администрирование" и выбрать "Процессы". Там он может найти по заданным критериям нужный процесс и его либо прервать, либо переназначить другому пользователю: http://wiki.bizagi.com/en/index.php?title=Cases_Administration 2. Да условие фильтрации отрабатывает при загрузке формы. Контрол можно заставить обновить данные, например у combobox и checkbox есть свойство Submit on Change, включите его, тогда при каждом изменении значения форма будет обновляться, соответственно все фильтры будут повторно отрабатывать. При нажатии на кнопку Сохранить, форма также обновляется. Также можно и свою кнопку положить на форму, и связать её с функцией, которая будет что-то вычислять и куда-то что-то прописывать, вот пример http://wiki.bizagi.com/en/index.php?title=Button 3. Можно. Только на Query Forms. Эти поля называютcя Internal Fields: http://wiki.bizagi.com/en/index.php?title=Queries#Internal_Fields 4. По-моему нет альтернативы, только String 4000. Кстати, файлы у BizAgi не в blob полях хранятся, вот очень полезная ссылка на эту тему: http://kb.bizagi.com/KnowledgebaseArticle50110.aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2011, 19:28 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
GaryaЭта задача вообще как-нибудь решается? Или я пытаюсь решить неразрешимую проблему? Мне кажется, что решается. Я в выходные попробую сделать ваш проект. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2011, 19:33 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
AlexeyBKGaryaИ еще несколько вопросов, если не сильно затруднит... 1. Можно ли как-нибудь настроить bizagi, чтобы тот, кто стартует БП мог бы отказаться от его старта, если он вдруг почему-то передумал его стартовать, пока заполнял форму исходными данными? Или если нажал кнопку "запустить", то он так и будет "летать на орбите", даже если на форме имеются ошибки, которые не позволяют никаким образом продолжить выполнение процесса? 1. Когда вы в портале в меню "Процессы" сказали "Запустить" и указали процесс, который надо запустить, то процесс уже начал исполняться. По идее case creation phase должно помочь: http://wiki.bizagi.com/en/index.php?title=Lane_and_Phase#Considerations_2 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2011, 22:50 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
АБAlexeyBKпропущено... 1. Когда вы в портале в меню "Процессы" сказали "Запустить" и указали процесс, который надо запустить, то процесс уже начал исполняться. По идее case creation phase должно помочь: http://wiki.bizagi.com/en/index.php?title=Lane_and_Phase#Considerations_2 Спасибо, попробую. Правда вот эта фраза "All the activities in this type of phase have the property that they can return to the immediately previous activity" звучит как-то немного о другом. В моем случае речь идет об activity, у которого previous activity просто не существует. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2011, 23:10 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
AlexeyBK2. Да условие фильтрации отрабатывает при загрузке формы. Контрол можно заставить обновить данные, например у combobox и checkbox есть свойство Submit on Change, включите его, тогда при каждом изменении значения форма будет обновляться, соответственно все фильтры будут повторно отрабатывать.В этом случае после каждой попытки изменения значения контрола выводится дополнительный запрос в стиле "вы уверены, что хотите изменить значение этого элемента?". Этот вопрос совершенно неуместен, поэтому мне нужно что-то другое. AlexeyBKПри нажатии на кнопку Сохранить, форма также обновляется. Также можно и свою кнопку положить на форму, и связать её с функцией, которая будет что-то вычислять и куда-то что-то прописыватьНеобходимость пользователю нажимать на кнопку "Сохранить" (или какую-то другую) после изменения значения контрола неочевидна. Юзер может просто ее не нажать, и при этом получит пустой либо некорректный набор айтемов в других контролах. Это неудачное решение. Должно быть какое-то другое. Например, обработка события потери фокуса или события AfterChange контрола, в которую можно было бы воткнуть скрипт автоматического сохранения промежуточных данных формы (Me.Save ?) и обновления источников данных для всей формы (Me.Requery ?) или для конкретных контролов формы (Me.ComboBox2.Requery ?). Ну, или типа того. Короче, эта логика должна отрабатывать в любом случае независимо от того, как поведет себя пользователь. AlexeyBKМне кажется, что решается. Я в выходные попробую сделать ваш проект.Алексей, спасибо, конечно. И за Ваши ответы огромное спасибо. Мне, право, неловко. Не нужно делать эту задачу за меня. Достаточно подсказки, в какую сторону копать. А сделаю я сам. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2011, 23:29 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
Garya, ну я все равно не смогу все сделать. Только наброски. У меня получилась вот такая схема БД: ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 14:37 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
AlexeyBK, У Гари у каждого Юрика свои Пользователи ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 15:47 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
ViPRosAlexeyBK, У Гари у каждого Юрика свои Пользователи Да всё правильно, это таблица Использование ПО - у каждого Юрика свои Пользователи ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 16:21 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
Форма будет выглядеть как-то так (properties у join search dialog, которые я изменил, обведены кружками): ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 16:44 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
Display Form будет например такой: ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 16:45 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
Ну и в портале, в исполнении, это будет выглядеть как-то так: ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 16:49 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
Записи можно искать по любому из критериев или по всем сразу. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 16:56 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
AlexeyBKGarya, ну я все равно не смогу все сделать. Только наброски. У меня получилась вот такая схема БД:Алексей, за попытку спасибо. Но дело в том, что по сравнению с тем как задача звучала сначала она несколько усложнилась (возможно, это несколько сбило с толку). О "пользователях" предлагаю на время забыть. Проблема в том, что у юрлиц имеются еще и филиалы. На Вашей схеме корректно отображено отношение "Класс ПО" (parent) - "Программный продукт" (child). Точно такое же отношение должно быть между "Юрлицо" (parent) и "Филиал" (child). Далее между парой чайлдов имеется таблица допустимых комбинаций. Нужно добиться, чтобы на форме после выбора из первой пары parent-child по второй паре parent-child отрабатывал фильтр, который позволяет выбрать только корректные комбинации по второй паре parent-child. Вашу, Алексей, идею я понял так, что в энтити процесса устанавливается ссылка непосредственно на таблицу корректных соотношений. Но в ней очень много записей. Необходимо выбор сделать удобным для пользователя. Необходимо выбрать четыре сущности либо в таком порядке: 1) Класс ПО (все классы ПО) 2) Программный продукт (только выбранного класса ПО) 3) Юрлицо (включить фильтр только по допустимым комбинациям) 4) Филиал юрлица (фильтр по допустимым комбинациям + только выбранного юрлица) либо, как альтернативный вариант решения, вот в таком порядке: 1) Юрлицо (все юрлица) 2) Филиал юрлица (только выбранного юрлица) 3) Класс ПО (включить фильтр только по допустимым комбинациям) 4) Программный продукт (фильтр по допустимым комбинациям + только выбранного класса ПО) Насколько я понял, иного варианта решения этой задачи, нежели я предложил, просто нет. Во всяком случае, на англоязычном форуме глухое молчание уже несколько дней. Мое же решение получается каким-то уж очень громоздким. Оно требует создать вспомогательное поле типа int, приспособить к таблице энтити процесса триггер (который будет автоматом повторять в этом поле значение идентификатора записи), создать в отдельной базе данных VIEW (если пытаться делать в этой же самой, bizagi генерит ошибку, когда пытается создать таблицу с таким же именем), получить к нему доступ через виртуализированное энтити, и по нему уже настроить фильтр на форме. В общем, левой ногой через правое ухо. Конечно, в данном конкретном случае это решение - хоть какой-то выход из ситуации, но такие решения нельзя использовать в серьезных проектах. Я сейчас делаю пробный процесс, чтобы прощупать, как бороться с подводными камнями и какого рода они бывают. И этот камень весьма поубавил у меня оптимизма. Пока еще теплится очень небольшая надежда, что я нашел далеко не самое оптимальное решение, что существует более простой и изящный вариант. Но надежда эта тает... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 23:20 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
Garya Но надежда эта тает... Я ж тебе говорил, что это не техническая проблема(лукап), а концептуальная. (Между прочим ты в последнем посте забыл про первичное отношение "Юрик-ПО", хотя из контекста можно понять, что оно присутствует) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 23:56 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
Госсспади... если ЭТО вопрос жизни или смерти (что вообще-то мне представляется странным), то ради такого дела можно посадить программиста, чтобы сделал user field , в котором можно реализовать любую интерфейсную логику по собственному выбору. Например, Алексей таким способом делал автозаполнение, отображение рейтинга звездочками и прочие всякие штуки. Но мне почему-то кажется, что ты не до конца разобрался с тем, что предложил Алексей. В его варианте пользователь задает хоть все критерии, хоть часть - получает список допустимых комбинаций - одним кликом выбирает требуемый. Добавить в схему к юрлицам филиалы - не вопрос. Ну да, в этом варианте список юрлиц-филиалов будет все время одним и тем же, а не динамически меняющимся. Но я не верю, что это вопрос жизни или смерти. Если все же да - см. выше, юзерфилды тебя спасут. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 00:09 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
костылчики с программистами - куда ж без них :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 11:27 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
ViPRos(Между прочим ты в последнем посте забыл про первичное отношение "Юрик-ПО", хотя из контекста можно понять, что оно присутствует) Ничего я не забыл. Просто читая между строк, нужно не забывать читать еще и сами строки... :) GaryaДалее между парой чайлдов имеется таблица допустимых комбинаций. АБГоссспади... если ЭТО вопрос жизни или смерти (что вообще-то мне представляется странным)...Конечно же, это не вопрос жизни и смерти. Но то, что я сейчас делаю, это пробный проект с очень простым функционалом, на порядок более простым, нежели требуется для автоматизации главных процессов торговой компании. И я хочу иметь четкое представление о том, какие задачи и каким способом решаются. И какие могут случиться трудности. И какие могут возникнуть проблемы за гранью возможностей их решения. Я вообще могу не делать БП сервисдеск, никто мне и слова не скажет. Это моя собственная инициатива. В конце концов, сервисдеск находится исключительно в моей сфере ответственности, и я могу творить с ним всё что захочу. После того как этот процесс будет запущен в работу и в том случае, если я сам буду удовлетворен достигнутыми результатами я намерен продемонстрировать результаты своему руководству. В надежде на то, что мне будет предоставлена возможность использовать данный инструментарий для автоматизации более сложных процессов. Однако, для этого мне следует продемонстрировать юзабилити на достаточно высоком уровне. В нашей компании этим вещам всегда уделялось внимание, и юзвери, можно сказать, избаловались. Они "встанут дыбом", если в новом инструменте что-либо будет менее удобно, нежели в старом. И если это произойдет, то вместо союзников в среде пользователей я получу противников этого инструментария. Поэтому я подхожу к этому вопросу настролько скурпулезно. АБможно посадить программиста, чтобы сделал user field , в котором можно реализовать любую интерфейсную логику по собственному выбору.Спасибо за подсказку. Наконец-то я увидел еще одно решение этой задачи. Кстати, интересный вариант. Стоит попробовать. Конечно же, оно тоже не очень простое, но если получится сделать параметризованный контрол, который будет работать с любыми комбинациями энтити на отношениях многие-ко-многим (которые задаются в параметрах), то это, в конечном итоге, более красивое и более универсальное решение. Трудоемкие операции выполняются только один раз. АБНо мне почему-то кажется, что ты не до конца разобрался с тем, что предложил Алексей. В его варианте пользователь задает хоть все критерии, хоть часть - получает список допустимых комбинаций - одним кликом выбирает требуемый.Я пытался построить фильтр для сабформы - натолкнулся на те же грабли. Без дополнительного поля, содержимое которого заполняется триггером, построить фильтр не получается. Я не против того, чтобы делать выбор из таблицы допустимых комбинаций (и даже "за"). Но дело в том, что в этой таблице задана связка между двумя чайлдами, то есть между ПО и филиалом. Каждая комбинация ПО-филиал появляется в ней ровно один раз, но перед тем как выбирать филиал, необходимо выбрать юрлицо. А юрлицо выбрать так, чтобы оно появлялось ровно 1 раз, не получается. Потому что в таблице допустимых комбинаций может быть несколько разных филиалов одного и того же юрлица. И если мы будем выбирать юрлицо по таблице допустимых комбинаций, мы увидим одно и то же юрлицо не один раз, а столько раз, сколько у него филиалов. В то же время в перечне юрлиц при выборе юрлица не должны показываться те, ни один из филиалов которых не использует уже указанное пользователем ПО. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 14:07 |
|
Вопросы по BizAgi
|
|||
---|---|---|---|
#18+
АБ, Может быть, замолвите слово по поводу расширения слишком ограниченной функциональности фильтра для контрола на форме? В идеале было бы здорово подставлять в него любые XPath-выражения. Но для начала можно было бы включить в состав выбираемых полей не только поля энтити, созданные пользователем, но и системные поля, такие как идентификатор экземпляра, планируемое время завершения, создатель и т.п. Или мне об этом лучше самому написать в "Request New Feature"? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.04.2011, 17:39 |
|
|
start [/forum/topic.php?fid=29&msg=37218479&tid=1525807]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
60ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 194ms |
0 / 0 |