![]() |
#13 |
Участник
|
как можно было бы реализовать,
если бы разработчикам поставили правильную задачу: "создать фреймворк для добавления и изменения функционала, который будет доступен пользователям" вместо нелепой задачи "создать фреймворк для добавления классов" ============================ идея очень простая:
X++: abstract class BaseClass_ReadOnly extends RunBaseBatch { protected static baseClass_ReadOnly construct(Args _args /*, SysExtensionInstantiationStrategy strategy = null*/) { var attr = new FormMenuItemFactoryAttribute(_args.menuItemType(), _args.menuItemName()); var obj = SysExtensionAppClassFactory::getClassFromSysAttribute(classStr(baseClass_ReadOnly), attr); //TODO add initialization strategy return obj; } public static void main(Args _args /*, SysExtensionInstantiationStrategy initStrategy = null */ ) { baseClass_ReadOnly obj = BaseClass_ReadOnly::construct(_args /*, initStrategy */); //TODO run strategy. Default is: if( obj && obj.Prompt() ) { obj.run(); } } } но для текущей версии фреймворка атрибут нужен. X++: [FormMenuItemFactoryAttribute(MenuItemType::Action, menuItemActionStr(myMenuItem))] class MyClass extends BaseClass_ReadOnly { public void run() { //TODO something useful } public static void main(Args _args) { MyClass obj = BaseClass_ReadOnly::constuct(_args); //TODO run strategy. Default is: if( obj && obj.Prompt() ) { obj.run(); } } } Код: <?xml version="1.0" encoding="utf-8"?> <AxMenuItemAction xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="Microsoft.Dynamics.AX.Metadata.V1"> <Name>myMenuItem</Name> <Object>myClass</Object> <ObjectType>Class</ObjectType> </AxMenuItemAction> ===================== кто-нибудь хочет проанализировать и рассказать про еще один фреймворк SysPlugin, который должен решать аналогичные задачи? лучше в отдельной ветке. |
|
Теги |
sysextension framework, sysoperation framework, как правильно, полезное |
|
|