|
11.01.2019, 23:41 | #1 |
Участник
|
и опять выпустят фетву против runbase? нам-то чо делать: крестик снимать или...?
__________________
Felix nihil admirari |
|
13.01.2019, 20:28 | #2 |
Участник
|
Мне кажется, подобно тому, как начинающие разработчики в прежних версиях упускали, где (на сервере или на клиенте) в какой момент времени будет выполняться тот или иной метод их наследника RunBase, сейчас дискутирующие упускают то, кто будет писать исходный класс на основе SysOperation или RunBase - и кто потом будет его расширять Наверно, стоит ввести некую классификацию разработчиков в данном контексте:
Цитата:
Цитата:
Рассуждения про выбор между SysOperation и RunBase, как показано выше, существенно зависят от того, в какой роли вы выступаете (SYS/ISV/USR-разработчик) и про чей код говорите: свой или чужой, т.е. от сценария (1-5), в контексте которого идет обсуждение Для USR-разработчиков, по-моему, SysOperation предпочтительнее, потому что позволяет более четко отделить сервис от контракта и UI для интерактивного ввода параметров, что способствует повторному использованию сервисных операций в тех местах, которые изначально не предполагались. Наследников RunBase обычно использовать из стороннего кода менее удобно, потому что там часто не выделен четко контракт (банально не хватает parm-методов), плюс внутри могут быть какие-то неявные завязки на интерактивный запуск, скажем, инициализация по глобальным настройкам и т.п. SysOperation в этом плане как-то больше дисциплинирует что ли. Последний раз редактировалось gl00mie; 13.01.2019 в 20:57. |
|
|
За это сообщение автора поблагодарили: ta_and (4). |
14.01.2019, 10:04 | #3 |
Участник
|
Цитата:
Сообщение от gl00mie
Для USR-разработчиков, по-моему, SysOperation предпочтительнее, потому что позволяет более четко отделить сервис от контракта и UI для интерактивного ввода параметров, что способствует повторному использованию сервисных операций в тех местах, которые изначально не предполагались.
Это на мой взгляд фундаментальный баг, о котором многие забывают(или не знают) Например первая ссылка по запросу Post purchase order through code Ax2012 выдает следующий фрагмент кода(что отлично работало в 2009, когда класс был наследником от RunBase), который может прекратить работать в любом момент - из за того что юзер под которым это запускается может разнести PO из интерфейса со спец. параметрами(типа проверки кредитного лимита) X++: static void postPurchaseOrder(Args _args) { PurchTable purchTable = PurchTable::find(); PurchFormLetter purchFormLetter; purchFormLetter = PurchFormLetter::construct(DocumentStatus::PurchaseOrder); purchFormLetter.update(purchTable, , systemDateGet(), PurchUpdate::All); } |
|
14.01.2019, 12:04 | #4 |
Участник
|
Цитата:
Контракт распаковывает контроллер. Который это делает в методе unpack. Контракт - это такой же класс как и все, просто размеченный атрибутами. |
|
14.01.2019, 13:36 | #5 |
Участник
|
Цитата:
Хотя может это и кривизна конкретной реализации PurchFormLetter, но недавно мы много дней потеряли на поиски этой баги, когда у некоторых пользователей подставлялись старые значения при запуске разноски из кода Я что-то подумал что это баг всего фрамеворка, но возможно стоит еще поизучать вопрос Последний раз редактировалось trud; 14.01.2019 в 13:39. |
|
|
За это сообщение автора поблагодарили: gl00mie (5). |
13.01.2019, 21:10 | #6 |
Участник
|
Цитата:
Расширение контракт классов - хорошее прекимущество, особенно когда закроют полностью app suite. А то приходится такой велосипед городить чтобы добавить новые атрибуты в sys operation, просто капец. Не думаю, опять же, что будут хаять опять runBase, если его так прокачали, как описали выше ( новая сессия, что несомненно круто!) |
|
Теги |
runbase, sysoperation framework |
|
|