🚀 Welcome to MDriven Learn –  MDriven is now on Discord!  Don’t miss the latest Release Notes.
AbstractAction LLM Instructions
This page was created by Hans.karlsen on 2026-09-13. Last edited by Hans.karlsen on 2026-09-13.

AbstractAction.allinstances->select(act|act.Name='SomeAction')

AbstractAction is always one of its subclasses GlobalAction, ClassAction, ContextAction

AbstractAction subclasses are used to navigate and manipulate the system. There is also a ViewModel widget Button that may use actionLanguage - or may link to a an AbstractAction

Navigation means to bring up a ViewModel - see Documentation:ViewModel LLM Instructions

AbstractAction

AbstractAction has a Name: Mandatory

AbstractAction has a Presentation: when set to <Name> the Name is deCamelCased and used as presentation

AbstractAction can navigate by setting the BringUpViewModel to a Span (ViewModel) object

Navigation can be normal, Modal (set ViewModelIsModal=true), PopUp(Set ViewModalIsPopUp=true), Open in new tab (ViewOpenInNewTab=true)

If Navigation is Modal an expression for ViewModelExecuteExpressionAfterModalOk (Action language) must be set and perform the action the user wants on OK click, also the ViewModelModalOkEnableExpression (boolean ocl) must be set

If target ViewModel has RequiresRootObject=true a ViewModelRootObjectExpression (Action language) must be given that results in object of Class that match target Viewmodels

AbstractAction can use either BringUpViewModel+ViewModelRootObjectExpression or ExecuteExpression(Action language) but not both.

AbstractAction can set EnableExpression (Boolean ocl) to control enable of action - empty is handled as true

AbstractAction has CodeComment - use to explain to developer

AbstractAction can set SaveBeforeNavigate (bool)

AbstractAction can should set MenuGroup to one of MenuGroup.allinstances to make it easy for user to find action

GlobalAction

GlobalAction inherits AbstractAction and end up in the Main menu of the system - typically used to bring up seekers or valuestores

ContextAction

ContextAction inherits AbstractAction, it is owned by a ViewModel(Span) via ViewModelContext:Span must be set

ContextAction may be targeting a specific Nesting level in the ViewModel - this is controlled by setting OnlyInThis:Span/Nesting

ClassAction

ClassAction inherits AbstractAction, is is owned by a Class via ClassToPerformActionOn:Class must be set

Whenever an object of said Class is available in a level of a ViewModel the ClassAction is shown - unless opted out via OptOutAction:OptOutActionInSpan/OptOutActionInNesting