Home

User`s Guide

image

Contents

1. por Pies Browser Process class Connection Options Ale alela ele lelels 3 E Pms micaoa Process Classes Hierarchy Processes Hierarchy Hame Value MicexampleMemberProcess A Type MAIN_PROCESS Hame micExampleMemberProcess Class MicExampleMemberProcess Viewport lt generic gt MLS context lt none gt MLS supercontext lt none gt Default view lt none gt lt Transaction Main Transaction handling None Transaction Child Transaction handling None Process ol Jass eae ss J Motivated t Undefined Lees 6 orr X Non Activated L Not editable MicExampleMemberProcess without default base connection and without default view name For this example only we are interested in the left list you select the domain processes which you want to define here e the list in the center here once again appears the Process for Process in its role as a model object for the Relationship to itself here you will define the relationships of the UseCase Connections to the domain objects e the right list is the parameter list here you can change name and type and a lot more of a selected connection the transaction handling that you can change here as well is not relevant by now It is part of a later exercise e the status line shows whether and which default view was declared to the DomainProcess and not important for us yet the default base connection relationship between the proce
2. Application Framework User s Guide MA 322 Appendix C Frequently asked questions MYND ErrorObject nil self abstractWindow windowImplementation window converterManager converter AttributesChanged self abstractWindow realValue self abstractWindow abstractValue self abstractWindow windowImplementation window widget setInputFocus FAQ 4 Forms FAQ 4 1 Why should I avoid adding MicFwMetaPartCollection when working with dynamically exchanged forms You should work with the visible Subaspect and have only one visible at a time This approach is sup ported by the new Framework behavior which is to have model access only for visible widgets FAQ 5 Lists FAQ 5 1 How do I delete elements from a list with the Del or other key Deleting elements with the Del key requires MicVaMnemonics R3 4 V1 1 or higher and MicVaMnemonicsD R3 4 V1 1 or higher In the Composition Editor in which the view is displayed Create a new free popup menu and add a menu item to it On the settings page of the menu item Select the Del key as the accelerator Open the context menu on the popup menu not on the item and connect micKeyboardConnection with the micKeyboardConnection of the required List Set the fw accessor name of the menu item as for a button This button will be clicked and the method will be performed when the Del key is clicked assuming that the List has the focus FAQ 6 Notebooks FAQ 6 1 How Do I Get
3. 7 1 3 Methods and Formats 7 1 3 1 MicMlsLocaleCategory All Locale Entities are identified by their territory their language and a string The string is the name of the Locale Entity Locale name It is required for unique identification since several Locale Entities in a cate gory can have the same Locale Any name can be used but may not contain any blanks or underscores The following methods are the basis for all Locale Categories but they are only needed when creating Locale Entities manually and not inside the MLS Data Editor MicMlsLocaleCategory gt gt locale aLocale lt aLocale gt is which specifies the territory and the language e g language english territory united kingdom or language german territory germany If you use a Locale Entity within a MLS context this Locale Entity will be set to the Locale of the context and should not be modified manually MicMlsLocaleCategory gt gt localeName aLocaleName A Locale Entity within a context already got its name because its needed to add it MicMlsLocaleCategory gt gt localize anObject Application Framework User s Guide aA 7 Multi Language Support MLS MYND 7 1 Language Support Base System 239 MicMlsLocaleCategory gt gt localize 7 1 3 2 MicMlsLocaleContext MicMlsLocaleContext gt gt MicMlsLocaleContext gt gt MicMlsLocaleContext gt gt MicMlsLocaleContext gt gt Class M
4. 000 221 223 226 MicFwAbstractWindow s 221 222 MicFwAbstractWindowEvent c000008 223 MicFwAbtTextViewImplementation 229 MicFwActivateCOMmMand cccccceecssceeeees 224 MicFwActivateRequestEvent 224 MicFwChooseComman cccccccceeeeeeee 224 MicFwChooseRequestEvert 223 224 MicFwCloseCommand cceseeeeeeeeeeees 224 MicFwCloseRequestEvent cseeeeee 224 MicFwCommandRequestControl 222 MicFwCommandRequestEvent 221 222 224 228 MicFwControllmplementation 0 5 227 MicFwControlUpdateEvent 221 224 MicFwControlValidation Event 224 MicFwDomainObject eeeeeeeeee 30 221 MicFwDomainProcess 19 20 33 205 221 MicFwDynamicControl eeceeeeeeeeeteeee 223 Application Framework User s Guide 344 Index MicFwDynamicMenuControl 222 MicFwEvaluatorChainHead eee 225 MicFwFitnessClubExample eseeeee 47 MicFwFullApplicationModal esee 77 MicFwGenericAbstractCommand 230 MicFwGenericDomainProcess 00 55 MicFwGenusMapppet seceeeeesneeeeeees 232 MicFwGroupControl s es 223 MicFwHelpRequestEvent 224 229 MicFwHoverHelpRequestEvent 224 MicFwlnvalidModel sscccceessreeeeeeees 229 MicFwlinvalid View c
5. eeeeeees 131 Container Details Tree eee 129 container details VIEWS ccceeeeeeeeees 186 Container Details cece ccccccceceeeeeeseeees 213 Container Flowed Icon List 00 126 Container ICON Area ccccccccceeees essences 124 Container ICOn List ececcceccce cess eeeeeeees 125 Container ICON Tre e cccccccceceeeeseeeeeeees 127 Control 33 34 55 62 76 85 102 189 209 214 219 E E S 220 227 231 242 Control IOW 328 Control Update Event ccceccessececeeeees 221 converterManager ccccceceeeseesersreeees 322 crash recovery eessssssseseeseressssreereeresssseee 225 createApplicationDescription 81 199 createViewForPolicy inConnector 223 creation of a runtime executable 263 OSV Ul Giceccstesect ss voce saetuabes E EE 19 CAA enee ann a e S 199 CAB anciosa eaan aE E 200 Cia E EE A E 200 iE A AAA aeedianhiadeinas 199 Cl EMi eies e E 200 CIES ceraian ra iss 199 customer ViewPortRequestBroker 175 customized solutions 42 D Data Entry sscsisrsiissesicsiisserossssrsrsassstessnsias 104 Gata CriVeN eseis itni 29 debug ernennen 210 212 DebD ggEr sena eateeed 210 Debugging Tool ssssseeeesssseseseresssssessssreese 18 Default Base Connection 55 84 107 108 109 110 112 113 114 115 117 118 119 120 121 122 124 125 126 127 128 129 130 13
6. MicFwTextCollectionControlImplementation object collections but the platform widget accepts strings only MicFwGroupControlImplementation groups of child platform wid gets MicFwMainWindowControlImplementation Adapter for the shell widget Main Window top pane MicFwPageControliImplementation note book pages MicFwSingleAspectControlImplementation representing one Aspect of one or more objects MicFwChoiceControliImplementation List widgets with a mandatory single selection shown in a special way MicFwRangeControlImplementation widgets similar to List widgets showing a value out of a numeric interval MicFwStaticControlImplementation showing one Object Aspect read only MicFwTextControlImplementation showing an Object Aspect as edit able string MicFwToggleControlImplementation an object represented by a boolean typed Aspect allows true or false only MicFwCommandCollectionControliImplementation list or group of command requests g Menus MicFwCommandRequestControlImplementation command request controls like Push Buttons and Menu items MicFwVisualProgrammingImplementation non visual parts VA integration of the Application Framework Each Window Adapter class is a subclass of one of the classes above Class implements most of the methods common to all windows 6 2 2 6 Platform Methods With the exception of integratio
7. icFwCommandRequestControliImplementation MicFwAbtHotSpotViewImplementation MicFwAbtPushButtonViewImplementation MicFwVisualProgrammingImplementation MicFwAbtVariableImplementation MicFwMicFwDomainManagerPartImplementation 6 2 2 8 Example of an Adapter for an Entry Field This section describes how a Platform Adapter is created As our example we will use an entry field in Visual Age VA In VA the class of the entry field widget is named AbtTextView The class of the Adapter for the entry field is Below are methods which are re implemented in a manner which differs from their implementation in the root classes One of these methods is editable which is used to change the editable flag of an entry field Therefore the method editable is re implemented in the Adapter class named The method is executed when an event in the object net triggers a change concerning the cor responding entry field For the textual representation of the widget the method text is re implemented An entry field in VA is rep resented by the user input 6 2 2 9 Mapping of Platform Events The entry field requires a different event mapping than that of the root class The re implemented method maps the Platform Event losingFocus to the framework event stringChanged to and e helpRequested to losingFocus is triggered if the user leaves the entry field The framework checks to see if it is necessary to update the object
8. title ColumnTitel columnWidth 80 yourself result The MetaPartCollection can be changed Any changes will be displayed in the details view 4 8 3 8 Direct editing in Container Details Views When a container details view is direct editted a control in the cell of the container details view that has the focus is opened The value of the cell can be defined with this control In order to use direct editting in the container details view the edittable setting for the detail view and the column in the settings pane of the Composition Editor must be set to true Application Framework User s Guide 4 Advanced Programming Reference MA 186 4 8 Group Controls MYND Define the partName property for the column Do not define the aspectName or attributeName properties There are 6 types of standard embedded controls TEXT gt Entry field DROPDOWNLIST gt Drop down list COMBOBOX gt Combo box RADIOBUTTONS gt Radio button set TOGGLEBUTTON gt Toggle button NULL gt it opens no embedded part for a not ediable cell The DomainModel ViewPort that is displayed in the details view cell is the connection that specifies the type of direct editting used An aspect is defined in the property partName column eg column1 Content for the details view is obtained via the viewport for the connection The method that returns the aspect for the column is implmented in this view
9. The corresponding methods in are commit commit the changes made and close the associated window self commitAndCloseProcess and abort abort the changes made and close the associated window self abortAndCloseProcess Now we have to define the transaction behavior of our member process Therefore we open the domain processes browser on our process an take a closer look on the parameter list Here are three possibilities to define transaction behavior For now our member process is the entrance of our application The trans action behavior of the first started process has to be defined at M ain Click in the field under Main and choose the radio button defined Here you have to change the behav Application Framework User s Guide gt 2 3 Beyond Basics 57 ior in the following way see next figure Hame Value a Type MAIH_PROCESS Hame micExampleMemberProcess Class I MicExampleMemberProcesg viewport lt generic gt MLS context lt none gt MLS supercontext I lt none gt Default view lt none gt Transaction Main Transaction handling Defined Autostart mode Use own context v Use parent context _ x Isolate mode 4 Persistence context 8 Transaction context 4 Hierarchical mode 4 La m Usually it make sense to set isolation to because isolation means that the process reads commited values only and this avoids that the
10. 000 221 223 226 Abstract Window System sseeeeeeeeee 220 ADSUHACTION cccvscscsssssnacecesscevsasasaaccccsiwertesdsaaveces 41 abstract VieW eee eeeeeeeeccceceseeseeeseeeeseeeees 19 ACCEIEL ATOM ececc ce eeesesescecececeaeeesseseeseeeees 184 ACCOSSON fviscisdcsiddees sincdies 37 87 209 222 316 accessor Method cccccceceee eens 37 38 51 accessor NAME ceessesscececeseseeeeeeseeees 224 Action Feature ccccccccccceccessssseeeeeeeeees 225 ACTIVATE a S 223 activate model view interaction 98 307 Adapter 41 219 220 228 245 327 328 AO o MEAE AAE EET 19 Add a new base connection toolbar icon 202 Add a new child process connection toolbar icon 202 Add base connection menu item 200 Add child connection menu item 200 Add Multiple Child Conn menu item 200 Allow undefined parent conteXt 207 ANALYSIS scassesdecice vers ceasads ieir E nPE ANES 29 Anonymous Evaluator cceccceceesseeeeeees 225 AP e E E aneneaes 19 100 applicationDescription sacassdiesssiascasssesacsanansed 199 architecture 26 41 221 329 aslistENtY senses 66 214 ASPE Clicia nsien eiaei 37 Aspect Connection 89 90 215 216 Aspect Control ccccceeesesseeeeeees 220 223 Aspect Feature ccccsscccceceeeeeseees 225 229 aspectName ee eceseesettececeeeeeeeeeees 19 214 authorization 37 42
11. Application Framework User s Guide 5 Tools et s 210 5 4 Framework Logger MYND Object gt gt micTraceBlock aZeroArgumentBlock The passed block will be evaluated only if the logger is active For example self micTraceBlock self log stringl string2 string3 string4 string5 M Y Application Framework User s Guide A 5 Tools ND 5 4 Framework Logger 211 5 5 Online Debugger If you want to debug a Framework problem e g a button doesn t get disabled even though it should be you also have to know about internal structures built up by the Framework In order to get these additional information about the model you should use the Online Debugger It will help you to inspect the Framework structure while your application is running and allows you to inspect the usually invisible information When working with Application Framework one designs Domain Objects and Domain Processes and con nects them with the help of DomainProcessesBrowser Besides these user defined structures Application Framework builds up internal structures and provides additional information about the model If you want to debug a Framework problem e g a button doesn t get disabled although it should you have to know which process this button is currently connected to and what the state of the enabled method is Because of the dynamic of the Framework this can be a rather complex procedure The Online Debugger helps you t
12. Creating and Using of Dynamic Domain Pro cesses MicFwDomainProcess addNewChildProcess aDomainProcess Class named aSymbol withContext aContext withSuperContext aSuperCon text Creating and Using of Dynamic Domain Pro cesses MicFwDomainProcess startingChildProcess aChildProcess Creating and Using of Dynamic Domain Pro cesses MicFwDomainProcess removeChildProcess aChildProcess Creating and Using of Dynamic Domain Pro cesses MicFwDomainProcess removeChildProcessNamed aConnec tionName Process Context MicFwDomainProcess processContext Process Context MicFwAbstractDomain copyEnvFromParent aDomainProcess ProcessContext Context Application Framework User s Guide 4 Advanced Programming Reference ew s 154 4 3 Domain Process MYND Type Implementor Message Process Context MicFwAbstractDomain ProcessContext createChildProcessContextFor aDomain Process Process Context MicFwAbstractDomain ProcessContext getEnv var Process Context MicFwAbstractDomain ProcessContext processFinished Process Context MicFwAbstractDomain ProcessContext setDomainProcess aDomainProcess Process Context MicFwAbstractDomain ProcessContext setEnv var to value Process Context MicFwAbstractDomain ProcessContext transactionPolicy Process Context MicFwAbstractDomain ProcessCont
13. 3 5 24 2 Supported Subaspects e BackgroundColor CgRGBColor e Editable Boolean e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide 3 Programming Reference 130 3 5 View Parts as M YN D 3 5 25 Container Details Column 3 5 25 1 partName 3 5 25 1 1 Syntax connectionName_ accessorMethod_ The content of this Control is aSymbol which is the attributeName of the column If the Connection Name is omitted or declared as VOID_ the Default Base Connection will be used 3 5 25 1 2 Supported Variations 3 5 25 1 2 1 All parts of partName specified connectionName_ accessorMethod_ 3 5 25 1 2 2 connectionName not specified VOID_ accessorMethod 3 5 25 2 Supported Subaspects e BackgroundColor CgRGBColor e Editable Boolean e Enabled Boolean ForegroundColor CgRGBColor e Label String e Visible Boolean Application Framework User s Guide aA 3 Programming Reference 3 5 View Parts 131 3 5 26 Popup Menu 3 5 26 1 partName 3 5 26 1 1 Syntax connectionName_ commandMethod_ If the Connection Name is omitted or declared as VOID_ the Default Base Connection will be used 3 5 26 1 2 Supported Variations 3 5 26 1 2 1 All parts of partName specified connectionName_ commandMethod_ 3 5 26 1 2 2 connectionName not specified VOID_ commandMethod_ 3 5 26 2 Supported Subaspects e Accelerator CwAccelerator e Acc
14. ccceeeeeseeceeeeeeeeeeeeeeaaeeeeeeeaaaeaeeeeeaaeee eee eaaaeaeeeeeaaeaeseeeaeaaeeeeeeenneaaeeeenenaaees 37 Figure 14 Connecting Independent Domain Models c cceeeceeeeeeeeeeeeeeeeeeneeeeeeeeeeeeeeeeeeeeeeesecneeeeeeeeneeeeeeenes 37 Figure 15 Model Connections cccceesseeceeeeeseeeeeeeeceeeeeeeeaaeeeeeeeaaaeeeeeeeaaeaeeeeeaaaeaeeeesaeaeeeeenneaeeeeeeesnneaaeeeennnnaees 37 Figure 16 Transaction Handling occse narnia en a EAA REE E E 39 Figure 17 Layered architecture including optional and future features eseseeseeesseeirssserrrnsrrrrnserirrssrrennsns 41 Figure 18 Create application oiaeiwiiscsieecdecvvvetescrveuscea iien EEE TE E NEEE EEEE 48 Figure 19 New application Settings c ceeeceeeeeee eee eee ee eeneeee inin innnan En EAA EEE EANNA EAEN EENEN 48 Figure 20 Full MOnus sis cssceeveci ce Seveeesgetve ec esievereesboceieied suet bene gaetvebecusedvesbaesdevayehy E AO N 48 Figure 21 PrerequisiteS MENU ccceessscceeeeeeeeeeeeeeneeaeeeeeeeaaaeeeeeeeaaeeeeeeeaaeaaeseeesaeeeeeeeaaeaaeseenaeeeeeeenseaaeeeeneneaees 49 Figure 22 Change prerequiSiteS viii cisisceedc veve ste scnvvedceecceveeens dcvevvece cevveeeede cnveeiees ceeeevecesvvedbaedauvvidevecereiveeeesndvil 49 Figure 23 Open Object Model Explorer ececccceeeeeeeceeeeeeeneeeeeeeeaeeeeeeeeaeeeeeeeeaeeeeeesaeeeeeeseeeeeseeseneeeeeeseeeeeees 49 Figure 24 Create new class at Object Model Explorer 0 c cccceeeceeeeeeeeeeeeeeeeeeeeeae
15. e Application Framework User s Guide 4 Advanced Programming Reference 4 3 Domain Process 155 Type Implementor Message MicFwAbstractWindow ingPolicy MicFwAbstractWindow ingPolicy viewClass aClassHint MicFwViewCachingWin dowingPolicy MicFwViewCachingWin dowingPolicy resetViewForCache Transaction Policy MicFwDomainProcess transactionPolicy Advanced API Methods MicFwDomainProcess addPresetChoiceConnectionNamed aSymbol withContext aContext withSu perContext aSuperContext Advanced API Methods MicFwDomainProcess addPresetHierarchyListConnec tionNamed aSymbol withContext aCon text withSuperContext aSuperContext Advanced API Methods MicFwDomainProcess addPresetListConnectionNamed aSym bol withContext aContext withSuperCon text aSuperContext 4 3 3 Method descriptions 4 3 3 1 Declaring MicFwDomainProcess class gt gt defaultHierarchicalPersistent TransactionPolicyClass MicFwDomainProcess class gt gt defaultHierarchicalTransactionPolicyClass MicFwDomainProcess class gt gt defaultInheritedTransactionPolicyClass MicFwDomainProcess class gt gt defaultPersistentTransactionPolicyClass MicFwDomainProcess class gt gt defaultProcessContextFor aParentProcess named aConName asChildof aniInstance MicFwDomainProcess class gt gt defaultTransactionPolicyClass MicFwDomainProcess class gt gt defaultTrans
16. cccccce ceases 29 42 BUON esenee a a RSE 104 C Cached View 19 147 156 191 283 CAND ACK csser en ar iens na 224 Chainable Evaluator ccccccesscceeeeeees 225 child process cccsccsnacrintaateresvarceacteaeaines 30 38 child process connections cccceee 207 CHILD_ PROCESS ossis 203 Choice Control cccccccceceeesessessnteceeeeeees 214 choice of NAMES ccccccceceeessesenteeeeeeeees 64 Chooseanewenvironmentconnector toolbaricon 202 Choose ENvirOnMeNt cccccceeeeseeeeeeees 205 Choose ENVIFONMENL ccececcccceeeesceeeeeees 199 CIASS aaan cee Beeas thc casidettatins 203 Class based coupling eeeeeesseeeceeeees 230 ClOS eee eise seeks scans eee ads estas ees 223 Close menu item ee eeeeesetteeeeeeees 199 close corresponding view 06 99 277 closeProcesSS eeesseeeenesssesssscereresssssseereeee 19 ClOSEV IEW isniceccoscssciestsavveccracteeedsaveacerteesest ae 19 Application Framework User s Guide Index 341 closing a Domain Process ceceesereeees 19 closing a VIEW vas gesceteusdcesarwtedeaaeridnsivedacieads 19 codepage ee 19 oro 16 0 ee 32 Collection Control ccc eeeecececcceseeesesseeees 223 COON ena aa EEE A EE E 222 combinable seesinane 328 Combo BOX o ccciscccccccdccssecccciesseasestacnees 122 214 Command cceesesceccccceeeeeessseeseeceeees 37 41
17. 4 5 ViewPort RequestBroker 4 5 1 How the ViewPortRequestBroker searches for a ViewPort The ViewPortRequestBroker search the right ViewPort for DomainObjects and DomainProcesses You can change this broker when you need other rules a VP for the model defined 7 he DomainProcessesBrowse generic PClass of ApplicationFrameWork it normally MicFwViewPort All subclasses of this VPClass were searched for a efault VPClass lt isDefaultViewPort gt ue with the required method no yesyes e new model class is the Superclass of the actual model class Is the new model class MicFwDomainObject superclass of the actua model class Is the new model class The combination of the model class and the defined viewport class is used as a key i for the located The VPClass The generic viewport class that was VPClass of the which will be found will be Application taken from the used and FrameWork will be cache retrieved from used and retrieved the cache from the cache The VPClass The VPClass defined in the that was Processes found will be Browser will be used and used and retrieved retrieved from the from the cache cache 4 5 2 Using a custom ViewPortRequestBroker When the tools are loaded in the development image technicalViewPort and customViewPort will be added to the broker mapping After the tools are loaded a MicFwViewPortRequestBrokerDispatcher is regist
18. Mic Fw Framed Toolbar View page 137 3 5 1 4 5 Canvas Window page 138 e Form page 139 e Group Box page 140 Scrolled Window page 141 PM Notebook page 142 Windows Notebook page 148 e Notebook Page page 144 Application Framework User s Guide 3 Programming Reference 3 5 View Parts 105 3 5 2 Push Button 3 5 2 1 partName 3 5 2 1 1 Syntax connectionName_ commandMethod_ If connectionName_ omitted or declared as VOID_ The Default Process Connection will be used 3 5 2 1 2 Supported variations 3 5 2 1 2 1 All parts of partName specified connectionName_ commandMethod_ 3 5 2 1 2 2 connectionName not specified VOID_ commandMethod_ 3 5 2 2 Supported Subaspects e Enabled Boolean e Label String Visible Boolean Application Framework User s Guide 3 Programming Reference MA 106 3 5 View Parts MYN D 3 5 3 Toggle Button 3 5 3 1 partName 3 5 3 1 1 Syntax connectionName_ accessorName_ Content of the Control is aBoolean If connectionName omitted or declared as VOID_ The Default Base Connection will be used 3 5 3 1 2 Supported variations 3 5 3 1 2 1 All parts of partName specified connectionName_ accessorName_ 3 5 3 1 2 2 connectionName not specified VOID_ accessorName_ 3 5 3 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean ForegroundColor CgRGBColor e Label Strin
19. The architecture and components of Mynd Application Frameworks enable the stability of the fundamental structures of your applications to be assured 1 1 2 2 Saving through Reuse After the initial phase of familiarisation use of Mynd Application Frameworks guarantees efficient system atic and thus inexpensive and rapid software development from the initial draft right through to the produc tive application The effect increases with subsequent projects due to reuse of the Framework itself and the components which are created in a standard manner By deciding to use Mynd Application Framework companies create the basis for meeting a major objective of their development operations Fit for re use 1 1 2 3 Saving through Adaptation Much lower costs are incurred for porting to other platforms and connecting to new technologies This is achieved by promoting a uniform model based procedure as well as with technical details which are iso lated by means of Adapters It is now no longer necessary to redefine the entire application in order to ensure that new technologies can be used by the company 1 1 3 Role in Applications Many business applications developed today provide a Graphical User Interface GUI and normally are connected to some other external resources like other applications communication channels databases and so on The event driven nature of such an application leads to a high degree of complexity since it must
20. displaySelector dragDropSpec enabled true fontName foregroundColor framingSpec AbtViewAttachmentConstrain helpFile helpKeysld helpTitle helpTopicld items items partName aList refreshEntireListOnChange true selectionAspectName selectedMembers selectionConnectionName member The Connection settings has been added to the table view for manipulating the settings of a part 5 6 1 1 Content Command Settings Command Control and Controls which get any sort of content are connected to a model by using the same two settings attribute names e The is like a path to the corresponding model e The is an Action or an Attribute at this model e The has the same task as the 15t name part of the name convention The corresponds to the 2 name part 5 6 1 2 List Selection Settings With List and Choice Controls e g Spin Button Radio Button Set IconTree Container Details you can connect the selection to a model The is like a path to the corresponding model and e The is an Action or an Attribute at this model e The has the same task as the 3 name part of the name convention of a List Control The corresponds to the 4 name part of the name convention of a List Control In addition to this you want to set the display method of the list items for that you can use the which corresponds to the 5th name part of the name convention of a List Contr
21. or You confirm a command control for example a button with the result that a Debugger with the message appears even though you have implemented the method in a Viewport View Display in the Connectors Browser In the Viewport column of the Domain Object Domain Process appears even though a specific class was defined for the Domain Object Domain Process Cause When running the Domain Process the Viewport for the Domain Object Domain Process was not found The class method which contains the class name of the corresponding Domain Object Domain Process as a String was not implemented was implemented as an instance method or the name of the Domain Object Domain Process was accidentally misspelled the name of the Domain Object Domain Process was not enclosed by apostrophes A second possibility to connect a Viewport to a model is to declare it in the DomainProcessesBrowser at the Connection of the Domain Object Domain Process to its parent Domain Process You have to check this as well Problem 2 No objects are set in the List Cause The widget name does not comply with the list convention Either the name of the Connection for the list entry is not correct or the name of the accessor method is incorrect Problem 3 When entering data in the view no changes can be observed in TransactionsBrowser s data even though the Domain Process has started a transaction context View Display in the
22. 2 Number 1 1 2 Numeric 1 00 1 2 choice Integer 1 A file gt 1 Some files A file Application Framework User s Guide 7 Multi Language Support MLS ew 258 7 6 Usage of Locale Categories CompoundMessage and CompoundString MYND 7 7 Packing the Frameworks using MLS Different strategies can be used with MLS packaging There are basically 2 directions in which MLS pack aging can be optimized e Minimize initialization time MLS is initialized before packaging in order to minimize the initialization time e Minimize runtime image MLS is not initialized before packaging in order to minimize the runtime image In this case the following API methods will be used at runtime to initialize the MLS system MicMlsSystemInitializer initializeLibraryBasedSystem MicMlsSystemInitializer initializeFileBasedSystem For runtime initialization with a database system an initialized POM should be assigned to the MLS Data manager MicMlsLocaleDBManager pom aPom After this the initialization methods can be used MicMlsSystemInitializer initializeDBBasedSystem The storage classes for a library based system are not required in a runtine image if the system is initial ized and the cache is filled If development is library based and runtime is file based then none of the stor age classes should be packed in the runtime image It sometimes makes sense to pack the runtime with a filled
23. 3 5 30 1 2 6 connectionName accessorMethod baseConnectionName not specified VOID_ VOID_ VOID_ baseDefaultProcessName 3 5 30 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean e ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide 3 Programming Reference MA 136 3 5 View Parts M YN D 3 5 31 Mic Fw Framed Toolbar View 3 5 31 1 partName 3 5 31 1 1 Syntax connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ Content of the Control is aMicFwMetaPartCollection If connectionName omitted or declared as VOID_ The Default Process Connection will be used 3 5 31 1 2 Supported Variations 3 5 31 1 2 1 All parts of partName specified connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ 3 5 31 1 2 2 baseConnectionName not specified connectionName_ accessorMethod_ VOID_ baseDefaultProcessName_ 3 5 31 1 2 3 baseConnectionName baseDefaultProcessName not specified connectionName_ accessorMethod_ VOID_ VOID_ 3 5 31 1 2 4 connectionName baseConnectionName baseDefaultProcessName not specified VOID_ accessorMethod_ VOID_ VOID_ 3 5 31 1 2 5 connectionName baseConnectionName not specified VOID_ accessorMethod_ VOID_ baseDefaultProcessName 3 5 31 1 2 6 connectionName accessorMethod baseConnectionName not specified VOID_ VOID_ VOID_ baseDefa
24. Ge MicE xampleMasterViewVisual Composition Editor File Edit View Options Tools Help View Edit 3 N Delete Y defaut ak ra Done Paster a o u 9 on a Y A ake i j ENothing selected Now you re ready to connect the GUI parts to the s Let s start with the button Select the Viewport named and right click it From the Popup Menu select Connect newMember and drag the resulting wire to the button After you drop it there select as the feature you want to connect to Note if you are using VisualAge 3 0a select instead of You can verify the Connection information by double clicking the button to open the Connection set tings You can manipulate the information here if you want Now connect the remaining buttons to their respective Viewport Aspects Finally we have to connect the List Right click it and select Connect micContents from the Popup Menu Note if you are using VisualAge 3 0a select items instead of micContents Connect this feature to the feature of the icon To connect the selection of the List to the appropriate Aspect connect on the List to on the Viewport icon Note if you are using VisualAge 3 0a select Application Framework User s Guide PMS MICADO 2 Tutorial 2 5 Connect to models using Non Visual Parts 91 instead of The completed Window should look like this a MicExampleMasterViewVisua
25. If connectionName is omitted or declared as VOID_ The Default Base Connection will be used 3 5 21 1 2 Supported variations 3 5 21 1 2 1 All parts of partName specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction displayMethodItem_ 3 5 21 1 2 2 displayMethod not specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ VOID_ 3 5 21 1 2 3 connectionNameContents displayMethod not specified VOID accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ VOID_ 3 5 21 1 2 4 connectionNameContents connectionNameSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ accessorMethodSelection_ VOID_ 3 5 21 1 2 5 connectionNameContents connectionNameSelection accessorMethodSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ VOID_ VOID 3 5 21 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean ForegroundColor CgRGBColor e Visible Boolean Application Framework User s Guide aA 3 Programming Reference MYND 3 5 View Parts 127 3 5 22 Container Details 3 5 22 1 partName 3 5 22 1 1 Syntax connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ displayMethodItem_ The co
26. Object Net Browser A visual OBF tool that dispayes both the object net of a class and information about the instance variables of the class key validated transacted persistent type relationship The visual OBF tools Type Editor and Relationship Editor are opened from the Object Net Browser Object Net An Object Net consists of objects and its relationships between them ObjectVersion version object An ObjectVersion is created if a transaction context is active and a target object is assigned to a transacted variable of a source object The ObjectVersion is assigned to the highest TrLevel in the active context If an ObjectVersion already exists in this TrLevel it is replaced The ObjectVer sion references the committed target object committed and the uncommitted target object uncommitted ref erenced by the variable ONB Object Net Browser Packaging The process of creating a runtime executable Parent context A parent context is a context object that created its child context when it responded to the aA Application Framework User s Guide MYND Appendix D Glossary 329 newTransactionContext message The parent context can have any number of child contexts A parent con text can also be a child context If parent context B has a parent context A and B also has a child context C then A and C also have a parent child relationship See Child Context POM Persistent Object Manager Primitive relationship A 1 way re
27. becomeTransient Make the receiver non persistent This will allow instance data to be manipulated outside of persistent transaction contexts This call only affects the image object not any stored data MicFwTransactionContext gt gt beginTransaction Begin a new transaction level MicFwDomainProcess gt gt beNotifiedOfDocumentsClose Can be overwritten to be notified of last child document close MicFwAbstractPersistenceManagerRdb gt gt cachedObjectsFor abstractTargetClassMapping with foreignKeys from dependentMapping Interface Answer an instance of abstractTargetClassMapping mappedClasswhose primary keys join with for eignKeys for dependentMappingInterface MicFwDomainProcess gt gt canAbortAndClose Obsolete Called when a user wants to close the corresponding view Called first for all open children then for the business object itself The close action is performed only if the receiver and all open children return true MicFwDomainProcess gt gt canClose Called when a user wants to close the corresponding view This method is first called for all open children then for the business object itself The close action is performed only if the receiver and all open children return true MicFwDomainProcess gt gt canClose closelnfo Called when a user wants to close the corresponding view Called first for all open children then for the business object itself The close action is performed only if the receiver and all op
28. self club members do eachMember eachMember session self session MicExampleMemberProcess gt gt transactionStarted Hook for initializations immediately after starting a transaction self clubMember session self session The session must be initialized with a user MicExampleSession gt gt initialize super initialize self currentUser MicExampleUser new The user must be initialized MicExampleUser gt gt initialize super initialize self password name The AuthorizedDomainObject must be initialized MicExampleAuthorizedDomainObject gt gt initialize super initialize self session MicExampleSession new 2 3 6 7 Log on The logon procedure for this tutorial will be kept as simple as possible Application Framework User s Guide 2 Tutorial PMS MICADO on 72 2 3 Beyond Basics A user with a userName longer than two characters can read data A user with a password that matches his user ID reversed e g user ABC with password CBA can modify data A user JOE with password EOJ is the coach 2 3 6 7 1 Create logon View The view shown in the following diagram will be used for the logon ca ioj x File Edit View Layout Connections Options Help UltraTools lize amp Posi if e i g i E SER Ki aeea T eee Sli elle FS E E T o Bile
29. 3 5 10 1 2 1 All parts of partName specified connectionName_ accessorMethod_ 3 5 10 1 2 2 connectionName not specified VOID_ accessorMethod_ 3 5 10 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide 3 Programming Reference ots 114 3 5 View Parts MYN D 3 5 11 Spin Button 3 5 11 1 partName 3 5 11 1 1 Syntax connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ displayMethodItem_ connectionNameEntryField_ accessorMethodEntryField_ The default presentation method is The content of this Control is aCollection The selection of this Control is anObject If connectionName is omitted or declared as VOID_ The Default Base Connection will be used 3 5 11 1 2 Supported variations 3 5 11 1 2 1 All parts of partName specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ hods ction dItem o NameEntryField h accessorMet displayMe connection accessorMet 3 5 11 1 2 2 connectionNameSelection accessorMethodSelection not specified connectionNameContents_ accessorMethodContents_ VOID VOID_ displayMethodItem_ connectionNameEntryField accessorMethodEntryField_ 3 5 11 1 2 3 connectionNameEntryField accessorMethodEntryField not specified connectionNa
30. 7 5 1 Externalize Data and Change Language During Runtime 7 5 1 1 Fundamental Requirements A completely initialized library based MLS system is specified see Application Framework documentation MLS If the user wishes to work with a file based system he should initially transfer all data to a new file based system Multi language tools gt Convert all library data into a new file system and should then initialize such a file based system In a newly installed MLS system an MLS context entitled StandardMasterContext normally exists as a sub class of This context contains some standard data and some prepared Locales which however do not yet contain any data This standard context is used in this example in order to provide some standard Locales in a simple man ner A new application entitled has been created The following classes have been created in this application a Domain Object It contains the instance variables name firstName street city phone dayOfBirth a Domain Process a view drawn in the composition editor In this view not only all entry fields but also the button labels the Group Box and all static texts concerning the widget names are connected to Application Framework When MLS is used the data required for this reason are taken from the MLS system without methods hav ing to be written for this purpose A new Default Base Connection bearing an object of class is created in the Domai
31. A symbol before the name of the context indicates an inconsistency in the Locale Entities which are to be added to this context In this case Locale Entities are not available in the data pool for all language ter ritory combinations and it would not be possible for this context to be switched perfectly to all existing Locales This inconsistency is not noticed as long as the specific Locale is not used 7 3 1 1 6 Technical comment The instance in the LocaleManager is used for processing a Master Context However if a normal con text is processed a new instance is created for the editor 7 3 1 1 7 MLS Categories This list indicates which categories of Locales are present in the particular context With lt All MLS data available gt the system displays all categories which exist in the current data pool 7 3 1 1 8 MLS Locale Entities This list indicates which Locale Entities of the selected category exist in the particular context More precisely the system displays all Locale Entities which could theoretically exist in this context as a result of the entries in Edit context settings depending on the Locale to which this context is currently con nected With lt All MLS data available gt the system displays all Locale Entities of the selected category which exist in the data pool The Menu items 7 3 1 1 8 1 Add locale entity One or more new Locale Entities are created in the current storage system
32. Appendix D Glossary oY pplication Framework User s Guide MY D Appendix D Glossary 325 Application Framework User s Guide MA 326 Appendix D Glossary MYN This glossary defines terms that are presented throughout this manual gt 1 relationship In gt 1 relationships a source instance variable references 0 1 target objects nil or 1 object No target instance variable refers to the source object An example of a gt 1 relationship is the relationship between Person source and PersonName target Per son instance variable name references 1 PersonName object a person has only 1 name No PersonName instance variable references the Person object a PersonName object never needs to know which Person object is referencing it gt N relationship In gt N relationships a source instance variable references min max target objects where min max is specified by the cardinality An example of a gt N relationship would be the relationship between Person source and PersonName tar get with the assumption that a person can have more than 1 name Person instance variable name refer ences min max PersonName objects where min 1 and max is unspecified No PersonName instance variable references the Person object 1 lt gt 1 relationship In 1 lt gt 1 relationships a source instance variable references 0 1 signified by the 1 on the RIGHT of 1 lt gt 1 target object The target instance variable refe
33. Figure 48 Enable hover help ccccccciveisscccsvede cccnveueenceceveeccenenveedecesevveees EA RE E 61 Figure 49 Hover Help for the name entry field oo eee ee ee eeeee eee eeee eee eeeeeeaeeeeeeeeaaeeeeeeeaaaeeeseseaeeeeseaaeeeeenenaeaaees 62 Figure 50 Help for the name entry field ou eee ceeeeeeeeeeee eee eeeee eters eeeeeeeeeeeneaaeeeeeeeeaeeeeeeeeaaeeeseeeaaeeeesneaaeeeeneeaees 62 Figure 51 The MicExampleClub class with relationship to Club member eceeeeeeeeeeeeeeeeeeeeeeeeeeenaeeeeeeenaees 62 Figure 52 The layout of MicExampleClubMasterView ccccceeeeeeeeeeeeeeeeeeeeeeeeeeaaeeeeeeeaaeeeeeeeaaaeeeeeenaeeeeenaees 64 Figure 53 Domain Processes Browser on MicExampleMasterProcess cccccesscececeeneeeeeeeeeneeeeseenaeeeeeeenaees 64 Figure 54 Child process transaction behavior definition 2 ceeeeee essence ee eeeeeeeeeeeeeeaaeeeeeeeeaeeeeseeaaeeeeneeaaees 65 Figure 55 Viewport for Master PrOCESS oo eeeeeeeeeeeeeeee eee eeee eee eeeeeeeae eee eeeaaeeeeeaaaeeeeseeeaaeeeseeeaaeeeeseaeeeeseeaaeeeeeeeaees 66 Figure 56 The fitness club Master WINGOW 00 cccceeeeceeeee eee eeeee cette eeeeee Eanan TEE SEALER AEEA TEES 67 Figure 57 The add new member to club process definition 20 2 eeeeeeeeeeeeneeeeeeeeeeeeeeeeeeaaeeeeeeeeaaeeeeeenaeeeeeseaes 68 aA Application Framework User s Guide MYND List Of Figures 337 Figure 58 Figure 59 Figure 60 Figure 61 Figure 62 Figure 63 Figure 64 Figure 6
34. IBM Visual Age User s Guide Reference Rel 4 0 IBM LALO Wilf LaLonde 1994 Discovering Smalltalk Benjamin Cummings OBFW PMS MICADO 1998 Object Behavior Framework R3 3 V1 3 User s Manual PMS MICADO PSFW PMS MICADO 1998 Persistence Framework R3 3 V1 3 User s Manual PMS MICADO RUMB James Rumbaugh et al 1993 Object Oriented Modeling and Design Prentice Hall STVP Digitalk 1994 Smalltalk V Programming Reference Digitalk Inc WBPR Object Share Systems 1995 WindowBuilder Pro V 3 1 Tutorial and Reference Guide Object Share Systems Inc BJR Fowler Scott 1998 UML Distilled Addison Wesley RATIONAL www rational com uml OBJECT INT http Awww oi com aA Application Framework User s Guide MYND Bibliography 333 Application Framework User s Guide 334 Bibliography ots M YN D List Of Tables Table 1 DemoStartView part type labels and part NAMES 0 ee ceeeeeeeeeeee eee eeeeeeeeeeteaeeeeeeseeeeeeeeteaeeeeeeeeeeeeeeees 79 Table 2 DemoView part type labels and part NAMES ceececcececeeeeeeeeeeeneeeeeeeeeeeeeeeeeeceaeaaeeeeeeeeeeeeeseseeeeeaeeaaaees 79 Table 3 Example table for API information cccececceecceccee cece eee eeeeeaeeeaeeeceeeeeeeeesgeeaaeaaeaeceeeeeeeeeseesensinaeeaeeees 95 Table 4 Domain Object Base API instance Methods ccccccccecceeeeeceeeceeceeeeeeeeeeeeeeeesceceaecaeceeeeeeeeeeeeenneeaees 96 Table 5 Domain Process
35. Including Classes The Packager can be forced to include classes even if they are not referenced by implementing the mes sage packagerlIncludeClasses in your application class This method needs to return a collection of the classes to include in the runtime image For instance the method MicFwFitnessClubExample class gt gt packagerIncludeClasses is implemented to include all the classes in that application and its subapplications packagerIncludeClasses OrderedCollection new addAll self defined asOrderedCollection addAll self extended asOrderedCollection yourself reject each each inheritsFrom SubApplication Application Framework User s Guide 8 Creating Runtime Executables for Distribution et 266 8 3 The VA Packager MYND If you have classes in your application which you need only at development time you may want to choose a more sophisticated implementation of this method to ensure that they are not included in your runtime image However we suggest that you move development classes into an application of their own 8 3 1 1 2 Including Methods Similar to the mechanism for explicitly including classes there is a message that you can implement in order to force the Packager to include the implementors of specific message selectors This message is called packagerIncludeSelectors It has to return a Collection of Symbols the implementors of which will be included in the packaged
36. MLS MYND 7 1 Language Support Base System 237 Task Context Date formatting Messages Localization of a number indexed message Monetary Formatting of a currency Numeric Formatting of a number Strings Localization of a character string indexed mes Time sage Formatting of a time 7 1 2 3 MLS In order to realize an MLS the Locale Category was implemented This category manages objects from other Locale Categories and can be linked in a tree like structure i e such a con text can have a parent context and child contexts A context also has a Locale If the Locale of a context changes the following happens all connected child contexts receive the new Locale e all Locale Entities which are linked to the context and its child contexts receive the new Locale If the Locale of a Locale Entity is changed the data for this Locale is loaded from an external source and the Locale Entity is initialized with this data If a localization is now carried out using the Locale Entity the objects to be localized date time messages are now localized for the new Locale 7 1 2 4 Unicode Unicode is a standardized 16 bit character set and the basis for the new ISO 32 bit character set The first 256 characters of Unicode are compatible with the ANSI character set as used by Windows 3 x and Win dows 95 for example In order to allow tests produced on one platform to be correctly displayed on ano
37. MicFwMetaPart gt gt icon aIcon MicFwMetaPart gt gt label aLabel MicFwMetaPart gt gt positionHint aPositionHint MicFwMetaPart gt gt tabType aSymbol e MAJOR MINOR e NONE Tab types are ignored by a windows Notebook due to the fact all pages are major Example Pattern person and its roles Notebook is named person_roles_ Roles return a MetaPartCollection of meta information of our dynamicPages result result self getMetaControlListForAspect roles ifNil self newMetaControlListForAspect roles self model roles do aRole aRole isMemberOf Manager ifTrue result add MicFwMetaPart new accessorString VOID VOID VOID VOID Application Framework User s Guide aA 4 Advanced Programming Reference MYND 4 8 Group Controls 185 partClassName ManagerView label MicFwAbstractLabel new labelString aRole asString labelType 2 yourself yourself ifFalse result add MicFwMetaPart new accessorString VOID VOID VOID VOID partClassName ClientView label aRole asString yourself result In contrast to the name convention at the composition editor the name parts of the accessorString at Meta Parts are seperated by spaces and the last character is not a space Only name parts which begins with a lower case letter are interpret by the framework Changing this collection will result in the dynamic Notebook Pages being closed and replaced by the newly declared ones Th
38. MicFwWriteAccessDuringReadError 20 148 MicMlsDomainLocaleContext 0008 245 MicMlsLCCompoundMessages 242 258 MicMlsLCCompoundsStrings 242 258 MicMIsLCDate ccc cc eeececceeeeeseeeeee 242 253 MicMIsLCMessages ccsessereeeeeseees 242 MicMIsLCMonetary ccccceceees 242 253 MicMIsLCNumeric 0cccccccccccese nese 242 253 MIGMISUG Siri sieseacascaaescansocavendeveceaneeeeses 242 MicMISLCOTIME osien 242 253 MicMlsLocale oo eeeececcccccceeeeeeseeeeeceeees 239 MicMlsLocaleCategory eeeeee 237 239 MicMlsLocaleContext cccceeeeeees 238 240 MICSEIECTION cece ccceeeeececeeeeeceeeeeees 90 216 middleWafE on 25 Migrate Accessor Methods cecceeeeeee 19 Mirat aset a 20 MISSING ACCESSSOM cescceeccecesecessseeeesteees 83 MUS sernir nsn 19 205 213 237 MLS Adapter cccecsccececeesssessnteeeeeeens 241 MES API spierien E EENEN 247 MLS Category cccecsccececeesssessnteeeeeeeens 242 MLS classes entry field eee eeeeeeeee 208 MLS Context 99 205 242 243 297 MLS context 200 0 eee eeesecsceceeeesseesenneeeeeeeens 204 MLS DAA yctcsrasarssaactvbeste ciiniens 19 238 241 242 MLS Persitence Interface eeeeeeeee 239 MLS supercontext cccceccceseessrteeeeeeeees 204 MSM S ar a ssacsctatecaiaveeee sine 19 modality errer e R TT Modere A T 328 Model AC
39. Property MicFwDomainProcess isViewOpen Property MicFwDomainProcess mlsContext e Application Framework User s Guide 4 Advanced Programming Reference 4 3 Domain Process 153 Type Implementor Message Property MicFwDomainProcess namelnParent Closing MicFwDomainProcess canClose Closing MicFwDomainProcess canClose aCloselnfo Closing MicFwDomainProcess canClose closelnfo Closing MicFwDomainProcess childProcessFinished aChildProcess named aConnectionName withResult aProcessResult Closing MicFwDomainProcess closeProcess Closing MicFwDomainProcess closeRequested aCloselnfo Closing MicFwDomainProcess closeView Closing MicFwDomainProcess connectorDeactivated Closing MicFwDomainProcess viewClosed Closing MicFwDomainProcess beNotifiedOfDocumentsClose Closing MicFwDomainProcess defaultClose Closing MicFwDomainProcess processClosed Closing MicFwDomainProcess processResult Closing MicFwDomainProcess removeChildProcess aChildProcess Closing MicFwDomainProcess removeChildProcessNamed aConnec tionName Closing MicFwDomainProcess topLevelProcessClosed Closing MicFwDomainProcess viewClosed Creating and Using of Dynamic Domain Pro cesses MicFwDomainProcess addNewChildProcess aDomainProcess Class Creating and Using of Dynamic Domain Pro cesses MicFwDomainProcess addNewChildProcess aDomainProcess Class named aSymbol
40. Property descriptions Application Framework User s Guide 5 Tools MA 204 5 2 Domain Processes Browser MYN 5 2 2 10 3 1 Class Within the framework type checking is implemented ensuring that only Domain Models of the specified Domain Model class its subclasses or may be connected to a Base Con nection during runtime The Domain Process itself is attached to the Default Process Connection which cannot be changed or removed neither by the browser nor by API methods Processes Hierarchy F MAIH_PROCESS toolCenter Hame MicFwConnectorProcess connectorFditPracess The default Connection receives the class name of the Domain Process as name by default This name is sufficient if you don t want to attach platform part like entry fields or lists to this Process Connection In order to be able to access this Connection explicitly by name it has to be renamed like any other base or Process Connection declared Because a Connection Name beginning with an upper case letter are interpreted as a joker by the framework and replaced using e g for entry fields and lists or e g for Command Controls Connection 5 2 2 10 3 2 Viewport Every connection defines its own Viewport The Framework uses this information to start the search for the right portName which returns the class name of the model instance that will write to the Connection at runtime If no Viewport of this hierarchy answers the right model class th
41. This method does not check the dependency lattice and thus depends on the user to make sure that objects are stored in the right order MicFwPersistenceManager gt gt instanceName Answer the lt instanceName gt under which the receiver is kept MicFwAbstractWindowingPolicy gt gt interceptAbortClose Abort closing the view Return the abort close value Default is to return the request to the caller MicFwAbstractWindowingPolicy gt gt interceptClosePlatformView Close the Platform View for the connected Abstract View Default is just to return the request to the Abstract View MicFwAbstractWindowingPolicy gt gt interceptCommitClose Commit closing the view Return the commit close value Default is to return the request to the caller aA Application Framework User s Guide MYND Appendix A API 291 MicFwAbstractWindowingPolicy gt gt interceptOpenPlatformView Open the Platform View for the connected Abstract View Default is just to return the request to the Abstract View MicFwAbstractWindowingPolicy gt gt interceptPrepareClose Prepare closing the view Default is to return the request to the caller MicFwPsExtentldentifier gt gt intersect anExtentldentifier Combine the queryAnalyzer of this descriptor with the queryAnalyzer of anExtentldentifier with the intersect operation MicFwPsProjectionDescriptor gt gt intersect aProjectionDescriptor Combine the queryAnalyzer of this descriptor with the que
42. anObject method of the domain process e MlsContext The mls context class to use for the new dynamic child processes e MlsSuperContext The super mls context class to use for the new dynamic child processes e Default view The default view class to open when opening a view for the new dynamic child pro cesses e Max instances The maximum number of instances of the new child processes which should be allowed to be started Usage examples Most convenient API aMicFwDomainProcess startDynamicProcessUsingObject anObject The system will look for a declared multiple process connection which has a base class which is the class of anObject If such a multiple process connection is declared use anObject to initialize the new process instance and open the declared view If a process has already been started for anObject open a new view or bring the current view to front Lower level APIs aMicFwDomainProcess multipleProcessControllerNamed multi openProcessUsingMainObject anObject Use anObject to initialize the new process instance and open the declared view If a process has already been started for anObject open a new view or bring the current view to front aMicFwDomainProcess multipleProcessControllerNamed multi prepareNewProcessUsingObject anObject Use anObject to initialize an new dynamic process instance openProcessUsingMainObject anObject When used first a new view is opened for the process If used when the view
43. and d m Y for the German format The meaning of the format symbols which all commence with a percent symbol is explained in this mask Accept the format with accept changes and the format is then immediately available in the edited Locale Entity When our application is restarted this new format is used to format the date object which comes from the model The new format overrides the default format of the StandardMasterContext Advanced exercises use of a MicMlisKey An even more advanced technique will now be used The purpose of the model is to specify whether the person is over 18 years of age or not and an appropri ate message should be displayed as help text Application Framework User s Guide 7 Multi Language Support MLS MA 256 7 5 Examples MYND In order to display this variant as well these texts should be messages instead of help texts For this purpose we initially create Locale Entities for the category for English and German Only figures are accepted as a key for this Locale and we create the message over 18 under key 1 and the message not over 18 under key 2 If these texts are to be capable of being displayed as help texts it is necessary to write two methods in Viewport and in the model these are as follows In Viewport DayOfBirthHelpText Public return a MLS key which contains a text to visualize if the person is over 18 years of age self model returnAgeKey In the
44. eila im ai Main Process Default base J Petivated t Undefined Inheritable B Process class default base Inheritable Inheritable child process variable Child process Base X Non Activated L Not editable MicExampleMasterProcess with default base connection lt club gt and without default view name Don t forget to close and save it 2 3 5 4 5 3 Implement the filter Methods MicExampleMasterProcessAtDefaultViewPort gt gt selectedMember Array with self model currentMember MicExampleMasterProcessAtDefaultViewPort gt gt selectedMember aMemberColl aMemberColl notNil and aMemberColl notEmpty ifTrue self clubMember aMemberColl first self parent member2 clubMember aMemberColl first 2 3 5 4 6 ViewPort for list items Before we can test the view we have to define a couple of additional methods First of all since the List is composed of club members we have to define how a club member should display itself in a List This is view driven code So we have to implement this code in a Viewport 2 3 5 4 6 1 Create List Viewport Every Intem in a list is decorated by a Viewport For our task we need an user defined Viewport for a club member displayed as item in a list MicFwViewPort subclass MicExampleClubMemberAsListItemViewPort instanceVariableNames classVariableNames poolDictionaries 2 3 5 4 6 2 Bind Viewport to Model A Model find its Vi
45. gt aboutToCloseTransaction aTransactionCloseMode Called when a user wants to close the corresponding view lt aTransactionCloseMode gt is a boolean which is meant to indicate if an open transaction is to be committed or aborted MicFwDomainProcess gt gt aboutToCommitTransaction Called when a user wants to close the corresponding view when the transaction of the receiver process is going to be committed MicFwDomainProcess gt gt aboutToStartTransaction Hook called immediately before the transaction is started It may have been reimplemented for further actions MicFwAbstractWindowingPolicy gt gt abstractView Get the Abstract View MicFwAbstractWindowingPolicy gt gt abstractView anAbstractView Set the Abstract View MicFwDomainProcess gt gt accessesConnectionNamed aConnectionName Answer true if the receiver has access to a Connection named lt aConnectionName gt MicFwMetaPart gt gt accessorString aString partClassName aSymbol Set the Connection specification lt aString gt and the associated view class lt aSymbol gt MicFwTransactionContext gt gt activate Receiver becomes the single active context MicFwDomainProcess gt gt activateConnectorWithRefresh Obsolete Activate the receivers Model View Connector Flagged obsolete because it really is a reactiva tion Use reactivateViewlnteraction for reactivation or openView for any activation MicFwTransactionContext gt gt activateFor aBlock Temporaril
46. lt aspectName gt Editable aspects Controlling Sub aspects MicFwViewPort lt aspectName gt Enabled Controlling Sub MicFwViewPort lt aspectName gt ForegroundColor aspects Controlling Sub MicFwViewPort lt aspectName gt HelpText aspects Controlling Sub MicFwViewPort lt aspectName gt HoverHelpText aspects Application Framework User s Guide 4 Advanced Programming Reference 166 4 4 Viewport as Y D Type Implementor Message Controlling Sub MicFwViewPort lt aspectName gt Label aspects Controlling Sub MicFwViewPort lt aspectName gt Readable aspects Controlling Sub MicFwViewPort lt aspectName gt Visible aspects Controlling Sub aspects MicFwViewPort lt anContentAspectOfAGroupControl gt Child PaneConnectionMode Controlling Sub aspects MicFwViewPort lt columnAspectName gt EmbeddedPart Controlling Sub aspects MicFwViewPort lt detailsViewContentAspectName gt lItemAspects Controlling Sub aspects MicFwViewPort lt anAspect gt Manipulator Controlling Sub aspects MicFwViewPort lt anAspect gt MetaControlListUpdate aMetaCon trolList Controlling Sub aspects MicFwViewPort defaultAcceptedOperationsValueOf anAspect Controlling Sub aspects MicFwViewPort defaultCanCopy aList valueOf aSourceAspect Controlling Sub aspects MicFwViewPort defaultCanLink aList valueOf aSo
47. refers to the names of confi gurationmaps In the dialog Enter the full path name of the library library refers to the dat file that contain the configu ration maps Double click on the Frameworks library file V50 dat on the CD ROM Selecting the configuration maps for importing and click OK The configuration maps and their applications are imported to your library The message Finished import ing from vast V50 dat appears in the System Transcript Loading configuration maps When aconfiguration map is loaded all of its required configuration maps are also loaded Therefore load ing the configuration maps in the order described below will minimize the required effort to load all configu rationmaps e Load with required maps the e Applications that support Object Behavior functionality e Load with required maps the e Required for support of visual programming in the Composition Editor e Required for Drag and Drop support e Required for authorization support e Required for object validation e Required for multi language sup port micApplicationService Multi Danan Development e Select File Save Image Importing the code with Load Features aA Application Framework User s Guide MYND Installing the Application Framework 21 To import the code into your library and to load it into your image Select Tools gt Load Unload Features from your Transcript window e Select Mynd Application Framework an
48. s Guide vaa 6 Customizing N D 6 2 Internal Design 221 6 2 1 1 8 Platform Windows and View e MW Main Window platform specific top pane shell e PVw Platform View the object which holds and coordinates the view on the platform Wh Window Widget Pane or View Part 6 2 1 2 Abstract Controls incl Internal Interfaces Focus change command issuance and transfer of data including a range of state information like valida tion or authorization will be performed in this abstract layer The real Controls are completely decoupled from all Domain Process actions and Domain Model Aspect data all technical details of external interfaces GUI DDE are completely hidden in the Abstract Control implementation In contrast to the large real Control class hierarchy wrapping or representing the whole group of emulated or native Controls there are only few Abstract Control classes whose instances are managed by their Abstract Views which themselves are held in a Model View Connector Each real Control class has a unique but changeable mapping to the hierarchy of Abstract Controls A simple fixed protocol is imple mented in the Abstract Control to perform changes in the corresponding real Control Because of this dif ferent windowing systems can be supported uniformly by the framework Visual Age Composition Editor 6 2 1 2 1 Abstract Control Classes CommandReaquestControl Push Button Menultem Smartlcon e ObjectA
49. there are 3 main possibilities e The database uses Unicode and the Mls system uses this Unicode to display the data Strings are saved as a collection of integers in which each integer represents a Unicode character e The database knows the code page in which the data was created Each string is then transformed into Unicode and from Unicode into the code page of the current system and vice versa In this case data could be lost if it doesn t exist in the code page of the database 7 2 2 3 Categories As mentioned in earlier chapters the MLS base system offers a set of Locale Categories to handle all this which can format a Date object in a specified format which can format a Time object in a specified format which contains one message string for each integer MLS key which can format a Float or Integer object in a specified format which can format a Float or Integer object in a specified monetary format which contains one string for each string MLS key and to display strings which are assem bled from static string parts non localized object parts and localized object parts All Locale Categories contain formatting information or keys and Unicode strings which are used to dis play static texts or display data in a desired format They can be saved in classes or files In a view each Control may need a different Locale Category to display its label or fill its content In most cases you will have groups l
50. 1 2 New context This is used for creating a new context class in the required application and the marked Locale Entities are generated in the required languages and added to the context i Create a new context ioj x Context name IRVAPrivateTestApplicationMlsContext Target application RVAPrivateTestApplication r Choose locales to be added M LC Strings for labels r Create for selected locales english united kingdom S I LC Strings for hover help german germany french france F LC Strings for help F LC Messages F LC Numeric F LC Monetary Edit standard locales F LC Time Default locale F LC Date english united kingdom z Start creating the context The individual fields of the view Create a new context have the following meaning Context name The name of the context a default name is proposed Target application The application in which this class is to be defined the most recently created version of an application is proposed Choose Locales to be added The user is able to specify the categories for which new Locale Entities are to be created These Locale Entities are given standard names based on the name of the context Create for selected Locales The user is able to specify the Locales language territory combinations for which the selected Locale Entities are to be created Start creating new context is used to start the process of creating a context Whe
51. 2 2 Prerequiste Applications 2 0 2 ccceeeesseeeeeeenseeeeeeeaaeaaeeeeeeeaaaeee eee aan EAE NEE ONE E EAA 265 8 3 The VA Packager cise ieceit ta treater eantsndnecncihssateddneteinsagedneucccuitiet asiabaneceeadahatadeAndedidinenn 266 Bi 3 1 PACKAGING GUNG ossai a o a E E AENEON SENEE EAA EEN EN RA 266 Appendix A APE E a tad en pen es taaaeuenntadtaaubbenasiacdaalecaraiaetansetuin 269 Appendix B Trouble Shooting Guide ics crete anaeian wusirece ennaite atawcanide cada aasaaneantnecenaamnnnss 313 MS As AP PICA OM isisieecedes case cectcesscc E E ctive ot cocky A E TA E OTE 315 TS 2 DBZ siuii iania a lab dia e a a eE a A hs te A aaa ae has aaa aaa aa e a a ava 315 To v Poman ObDjeGt DO horeenisi r a E ce E E AA O nd aaaeed anes 315 TS 4 Domain PROCESS seeccutivetcecinsrenDhivnes EEEE EEE AEEA EE euicersesbaatads 315 TS 5 Domain Processes Browser DPB necoresorsssaniaraiiir aei n NAE E 315 To 6 Envy debugger MeSSageS ssiri renasci raen rE AA EN EENEN EEE E T sade 315 1S7 Object Net Browser ONB si cscsseectccausie ach ena E E E 315 T98 Transaction Browser 1B raiiissyraisii srai ai E E EENES EEAS 315 Toos Tansa VONS ai T E O T 316 TS 10 VOWP OM igiri i r S ENEE ENE TE EA A ERSE EAU EE E 316 To 11s VisWial Age Organize erni E OEE E EEE 317 Appendix C Frequently asked questions ccccceeeeeeeeeeeeeeeteteeeeeeeeeeeeeeeesaeaseeeeeeaeeeeeeneeees 319 FAQ 1 Connections ssis Aianei a a a aana aa aidaa dat iaaea a aaar 321 FAO 2 Doma
52. 223 224 O Object Behavior Framework 21 42 328 330 object a Sn 31 329 Object Net Browser 42 49 51 58 78 79 85 86 328 Object Update Event cceeeessesereeees 221 Online Debugger e scccceceeeeessersreeees 212 Open a VIEW os scan scana hea tedoarssianceasaetieentoesenss 98 Open Domain Processes Browser menu item 198 Open MLS data editor eee eeeeeeeees 245 Open preferences window toolbar icon 202 optimization eee 225 Options Menu sssssssesesesssssssesrsersessssssseee 200 0 0 a 11 0 e ee 20 OS COntrol ssvisiessssescseeavesesascsesaseousesesieess 84 209 p PACKAGE srann a S 266 packaging 263 266 267 329 packaging PFOCESS ee ceeeeeessesseteeeeeeeees 267 Packeting Container Details 130 DANG nicnn nnani 84 209 222 226 Pane Adapter ccecsesssccceceeseessessaeees 221 Part Adapter cccsssssceceeeeeeeseeneneeees 221 patterns a iasessectcedcsidaseieccteldeeeseiseiduseateschaasels 29 performParticularDeregistrations 226 performParticularRegistrations 04 226 permitWriteDuringReadWhile aBlock 148 Persistence Context ccccscccccssssseeeeeees 205 Persistence context cccccceeeeeesestreeees 204 Persistence Framework 19 21 328 330 Persistence Manage sssccceeessteeeeees 205 Persistence Transaction Context 39 Platform Ada
53. 3 3 3 Initializing MicFwModelObject class gt gt initializeAuthorizationTable MicFwModelObject class gt gt initializeValidationTable 4 3 3 3 0 1 During the connector initialization The base objects are initialized lt initializelnvolvedBaseConnections gt The static child processes are created The message lt created gt is sent to a child process immediately after the child process is created and the initialization of the child process connector All child processes receives lt starting gt After a dynamic child process is created During the connector initialization receives the child lt initializelnvolvedBaseConnections gt and lt initialize ChildProcessConnections gt The parent process sends the lt created gt message to the child process The child process in response sends the the lt startingChildProcess aChildProcess gt to the parent The child process then receives lt starting gt MicFwDomainProcess gt gt startingChildProcess aChildProcess 4 3 3 4 Starting MicFwDomainProcess class gt gt start MicFwDomainProcess gt gt childProcessesAreStarting Application Framework User s Guide aA 4 Advanced Programming Reference MYND 4 3 Domain Process 157 MicFwDomainProcess gt gt connectorActivated MicFwDomainProcess gt gt prepareChildForInteraction aChildProcess MicFwDomainProcess gt gt start 4 3 3 5 Opening MicFwDomainProcess gt gt openView aViewClass withParentProcess aDomain Pro
54. 4 2 3 3 Connect the Domain Processes with their view classes To connect a Domain Process with its view class choose the Domain Process In order to assign a view class select the 7 row of the right pane Open the drop down box and select from the list of available views Now connect the to the in the same way 2 4 2 3 4 Setting of a simple Transaction Context It is not necessary to assign a Transaction Context to the Domain Process because no Domain Object is directly changed in it Domain Processes Browser on DemoProcess Oo x Process Child process nvolvedBase A Child process Class Mewport MLS context MLS supercontext Transact Begin Tr Isolate Parent conte Demo StartProcess DemoProcess DemoPracess 4 Y Involved base Class Viewport MLS context MLS supercontexti leonn DemoBase linit DemolnitBase Transaction handling M Transaction handling T Isolate mode Begin transaction when staring M Use own context Transaction context I Persistence context T Use context from parent LJ DemoProcess with default base connection lt conn gt and without default view name A Transaction Context is assigned to the Domain Process This process should use its own Transaction Context Use Own Context Also it behaves as a child process transaction so it should be set by the Connection of the parent process s As shown in the picture sel
55. Base API class Methods 0 ccccceeeeeeneeceeeeeneeeeeeeaaeeeeeeeaaaeeeeeeeaaeeeeeesaaeeeeeenaeeeeeeeaea 97 Table 6 Domain Process Base API instance Methods 00 0 cceeeeeeeeeeeeeeeee eee eeeeeeeeeetaeeeeeesaeeeeeeeseeeeeeeeeeeeneeeees 97 Table 7 ViewPort base API instance Methods 0 eee ceceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeaaeeeeeeteaeeeeeesaeeeeeeeseneeeeeeeeeeeeees 100 Table 8 Example table of API information ccccccceeeeeccceecee cece eee eeeeeeecaaeaaeeeseeeeeeeeeseeaaeaaeaeeeeeeeeeeeeeeeeesenaaees 147 Table 9 Domain Object Advanced API class Methods 0 ececceeeeeceeeeeeeeeceeeeeeeeeeeeeeteaeeeeeeseaeeeeeeeeeneeeeeeeeeeeaees 148 Table 10 Domain Process Advanced API class Methods 00 ccccceeeeeeeeeeeeeeeneeeeeeeaaeeeeeeeaaeeeeeeeaaeeeeeeeaeeeeee 150 Table 11 Domain Process Advanced API instance Methods cccceeeeeeneeeeeeeeaeeeeeeeaeeeeeeeaaeeeeeeeaeeeeeees 156 Table 12 Viewport Advanced API class Methods ccceceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeaaeeeeeeneaeeeeeeseeeeeeeeteneeeeeeeeeneaees 166 Table 13 Viewport Advanced API instance Methods cccccceeeeeeeeeeeeeeeeaeeeeeeeeeeeeeseeeeeaaeaeeeeeeeeeeeeeeeeneeeaaees 170 Table 14 Authorization Methods sssusa eiiean a aa Kaaa AEAEE aaa 177 Table 15 Group controls Advanced API instance methodS essssesssisssssirsssssrrsstsirrnsrtirrnstinnnnntnnnnnstnnnnnnnnn 182 Table 16 Non transaction properties displayed in column Name ac
56. CgRGBColor e Label String Visible Boolean Application Framework User s Guide oe 3 Programming Reference 138 3 5 View Parts MYN D 3 5 33 Form 3 5 33 1 partName 3 5 33 1 1 Syntax connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ Content of the Control is aMicFwMetaPartCollection If connectionName omitted or declared as VOID_ The Default Process Connection will be used 3 5 33 1 2 Supported Variations 3 5 33 1 2 1 All parts of partName specified connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ 3 5 33 1 2 2 baseConnectionName not specified connectionName_ accessorMethod_ VOID_ baseDefaultProcessName_ 3 5 33 1 2 3 baseConnectionName baseDefaultProcessName not specified connectionName_ accessorMethod_ VOID_ VOID_ 3 5 33 1 2 4 connectionName baseConnectionName baseDefaultProcessName not specified VOID_ accessorMethod_ VOID_ VOID_ 3 5 33 1 2 5 connectionName baseConnectionName not specified VOID_ accessorMethod_ VOID_ baseDefaultProcessName 3 5 33 1 2 6 connectionName accessorMethod baseConnectionName not specified VOID_ VOID_ VOID_ baseDefaultProcessName 3 5 33 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean e ForegroundColor CgRGBColor Visible Boolean vA Application Framework User s Guide 3 Programming Reference N
57. Context This facility should only be used to have a quick look at the current keys which are available in a MLS Con text at one point in time and to view changes during runtime You can get more information using the Online Debugger which displays all Locale Entities which where used for one Control 7 2 7 Using the MicMisKey The is a class which can be used to modify or avoid the generic behavior of the Adapter When you want to access the MLS base system directly or when you want to realize special conversion behavior for a Control this offers an interface to do this The has 6 instance variables and a corresponding API which should be used as follows e value When using or it contains the key which can be found in the MLS Data When using y or it contains the object which should be transformed eg a date object This value must be set in any case Application Framework User s Guide aA 7 Multi Language Support MLS MYND 7 2 MLS and Application Framework 245 localeType Contains the Locale class as symbol e g which should be used when converting this key localeName Contains the name of the Locale Entity as string which should be used when converting this key nameExtension Alternatively to LocaleName you can specify the Locale Entity name extension Labels HoverHelp and let the mls system search in all corresponding Locale Entities when con verting this key connectionName Contains the name of
58. D 3 5 View Parts 139 3 5 34 Group Box 3 5 34 1 partName 3 5 34 1 1 Syntax connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ Content of the Control is aMicFwMetaPartCollection If connectionName omitted or declared as VOID_ The Default Process Connection will be used 3 5 34 1 2 Supported Variations 3 5 34 1 2 1 All parts of partName specified connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ 3 5 34 1 2 2 baseConnectionName not specified connectionName_ accessorMethod_ VOID_ baseDefaultProcessName_ 3 5 34 1 2 3 baseConnectionName baseDefaultProcessName not specified connectionName_ accessorMethod_ VOID_ VOID_ 3 5 34 1 2 4 connectionName baseConnectionName baseDefaultProcessName not specified VOID_ accessorMethod_ VOID_ VOID_ 3 5 34 1 2 5 connectionName baseConnectionName not specified VOID_ accessorMethod_ VOID_ baseDefaultProcessName 3 5 34 1 2 6 connectionName accessorMethod baseConnectionName not specified VOID_ VOID_ VOID_ baseDefaultProcessName 3 5 34 2 Supported Subaspects BackgroundColor CgRGBColor e Enabled Boolean e ForegroundColor CgRGBColor e Label String Visible Boolean Application Framework User s Guide oe 3 Programming Reference 140 3 5 View Parts MYN D 3 5 35 Scrolled Window 3 5 35 1 partName 3 5 35 1 1 Syntax connectionNa
59. Dynamic Container Details View MicFwMetaAspect columnWidth aValue ote M Y N D Application Framework User s Guide 4 Advanced Programming Reference 4 8 Group Controls 181 Type Implementor Message Dynamic Container Details MicFwMetaAspect positionHint aValue View Dynamic Container Details MicFwMetaAspect title aValue View 4 8 3 Method descriptions 4 8 3 1 Metapart Collections A metapart collection i e an instance of the class is a specialized collection object which maintain the changes within and enforces the update on components which have changed Therefore it provides a significant performace gain All Group Controls requires MetapartCollections as content The exchange of view components is a view dependend Aspect and should be implemented within the responsible viewports The Viewport class provide an api to create and access Metapartcollections for an Aspect These methods are MicFwViewPort gt gt getMetaControlListForAspect anAspect MicFwViewPort gt gt getMetaControlListForAspect anAspect ifAbsent absence Block MicFwViewPort gt gt newMetaControlListForAspect anAspect MicFwViewPort gt gt removeMetaControlListForAspect anAspect You can use the API of an OrderedCollection to add and remove Items If you want to add more than one item it is recommended to use the protocol If you replace the complete collection all former meta parts will
60. EEEE AASE AAA EE EANAN EE AEAEE EAN IEEE 53 Figure 37 Set base connection NAME ssssisisainersnsanninnnin annin Nana ANARAN MEANNAN AANA A ANANN AREENA 53 Figure 38 Definition for the club member VICW eee ceeeceeeeeeeee eee eeeeee eee eeeeaaeeeeeeeaaeeeeeeceaaeeeeeeeaaeeeeseeaaeeeeneenaees 53 Figure 39 The club member view in the Composition Editor occ eceeceeeeeeeeeeeeeeeeeeaaeeeeeeeeaeeeeeeeaaeeeeeeeaees 54 Figure 40 The edit member view on a sample Member ceceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeaaeeeseeeaaeeeeesenaaeeeeneeaees 54 Figure 41 The Connectors Browser on a MicExampleMemberProcessView cecsceeeeeseeeeeenneeeeeeeeeeeeeaaees 55 Figure 42 The Connectors Browser on a MicExampleMemberProcessView cccceeceeseeeeeeeeeeeeeeeeeeeeeeaaees 55 Figure 43 The sample window With an error eeeeeeeceeeeee scene eee eeeeeeeee eee eeaeeeeeeseaaeeeeeeseaeeeeeeseaeeeeeeeseeeeeeeeeneeeeeeees 55 Figure 44 Connectors Browser on erroneous MicExampleClubMemberView eccceceeeeceeeeeeeeeeeeeeeseeeeeeeees 56 Figure 45 The window with OK and Cancel buttons 2 0 0 0 eee cee eeeeeee eee eeee ee eee eee aeee eee eeaeeeeeeeaaeeeeeeeeeaeeeeeeseeeeaeenes 57 Figure 46 Transaction behavior definition of member PrOCeSS ceeeeeeeeeeeeeeeeeeeeeeeeeeeeseeeeeeeeeeeeeeeeeeeeeeeeenes 58 Figure 47 ObjectNetBrowser on MicExampleClubMember cccceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeneeeeeeeeneeeeeees 59
61. Framework User s Guide 1 Concepts ew 36 1 3 Mynd Frameworks Concepts MYND Domain Object Customer Contract Customer Edit gt View Create Request Port Delegation models are placed between the Connector and connected Domain Objects and Domain Pro cesses and transform Aspects of the model world to Aspects of the view world and vice versa not only looking at model contents but also gathering state information concerning a View Aspect For example View Aspect nameModel Aspects firstName lastName may be a mapping between Aspects and a lot of state information can be provided for the View Aspect name to be updated when one Model Aspect changes Delegation models are called viewports in the notation of the Application Framework For each connected Domain Object or Domain Process one instance of a Viewport is provided by the Connector see diagram during the opening of the view A simple view with basic accessors and presentation of data do not need the Domain Model to utilize an explicitly defined Viewport the generic one provided by the framework can be relied on in these cases The default behavior of a Viewport is to propagate simple requests like accessors or commands to the con nected model This is often sufficient for Domain Processes if they do not need special treatment for com mand states or authorization This also holds true for Domain Models which implement proper accessor methods for instance va
62. Guide MYND Appendix A API 293 Answer whether the receiver is persistent within aPersistenceManager MicFwRelationship gt gt isPrimitive Answer whether the receiver is a primitive one sided relationship object MicFwTransactionContext gt gt isRunning Answer whether the receiver is in an uncommited state MicFwDomainProcess class gt gt isTechnicalDomainProcess A technical domain process can be a browser process which uses the Application Framework to imple ment a part of the development environment The default is a user domain process which is part of a cus tom application MicFw1Relationship gt gt isTo1 Answer whether the receiver describes a to 1 relationship MicFwRelationship gt gt isTo1 Answer whether the receiver describes a to 1 relationship MicFwNRelationship gt gt isToN Answer whether the receiver describes a to N relationship MicFwRelationship gt gt isToN Answer whether the receiver describes a to N relationship MicFw1Relationship gt gt isValid Answer true if the receiver conforms to the declared cardinality constraints false otherwise MicFwNRelationship gt gt isValid Answer true if the receiver conforms to the declared cardinality constraints false otherwise MicFwRelationship gt gt isValid Answer true if the receiver conforms to the declared cardinality constraints false otherwise MicFwDomainProcess class gt gt isValidationActive Answer true if validation for instance variables is sw
63. If the Connection Name is omitted or declared as VOID_ the Default Base Connection will be used 3 5 29 1 2 Supported Variations 3 5 29 1 2 1 All parts of partName specified connectionName_ accessorName_ 3 5 29 1 2 2 connectionName not specified VOID_ accessorName_ 3 5 29 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean ForegroundColor CgRGBColor e Label String e Visible Boolean Application Framework User s Guide aA 3 Programming Reference 3 5 View Parts 135 3 5 30 Mic Fw Toolbar View 3 5 30 1 partName 3 5 30 1 1 Syntax connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ Content of the Control is aMicFwMetaPartCollection If connectionName omitted or declared as VOID_ The Default Process Connection will be used 3 5 30 1 2 Supported Variations 3 5 30 1 2 1 All parts of partName specified connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ 3 5 30 1 2 2 baseConnectionName not specified connectionName_ accessorMethod_ VOID_ baseDefaultProcessName_ 3 5 30 1 2 3 baseConnectionName baseDefaultProcess not specified connectionName_ accessorMethod_ VOID_ VOID_ 3 5 30 1 2 4 connectionName baseConnectionName baseDefaultProcess not specified VOID_ accessorMethod_ VOID_ VOID_ 3 5 30 1 2 5 connectionName baseConnectionName not specified VOID_ accessorMethod_ VOID_ baseDefaultProcessName
64. MYND update Instead the Abstract View is informed about the change and memorizes that the widget holds modified data This will cause any Command Request Event to enforce an update of the model with the modified data kept in the widget The behavior of the object change event can be configured in the Viewport by overriding the method This event is used by entry fields to hook the event triggered upon each key stroke is an Abstract Event for communicating the selection made in a List or similar widget to the models It performs an update of the Model Aspect which holds the selection and addition ally updates the selection in the List Connection the Connection dynamically created by the abstract Collection Control is an Abstract Event which can hold a platform specific method to retrieve a graphics representation of a model object an icon returned by the Viewport method 6 2 1 5 Abstract Command incl Internal Interface All of the Command Request Events launch the execution of Abstract Commands The behavior provided by the framework s generic Class is to pass on the given selector without change to the connected Domain Process or its Viewport This behavior can be refined or extended by providing and registering specific command classes Some examples of functionality which can be implemented this way e Macros chaining of commands e Crash recovery Queuing caching of commands for later execution e Transfer propagating
65. MicFwDomainProcess defaultTransactionPolicyClass Declaring MicFwDomainProcess defaultTransactionPolicyFor aChildPro cess asChildOf aParentProcess named conNameSymbol Declaring MicFwModelObject defaultValidationRule Declaring MicFwDomainProcess defaultWindowingPolicyClass Declaring MicFwDomainProcess defaultWindowingPolicyFor aProcessIin stance asChildOf aParentProcess named conName viewClass aView ClassHint parentViewHolder aDomain Process modality aModality Declaring MicFwDomainProcess modality Declaring MicFwDomainProcess processContextEvaluator Declaring MicFwModelObject writeDuringReadlignored Initializing MicFwModelObject initializeAuthorizationTable Initializing MicFwModelObject initialize ValidationTable Starting MicFwDomainProcess start Services MicFwModelObject authorizeRead aspect using rule Services MicFwModelObject authorizeRead aspect using rule ifPro hibitedReturn value Services MicFwModelObject authorizeReadUsing rule Services MicFwModelObject authorizeWrite aspect using rule Services MicFwModelObject authorizeWriteUsing rule Services MicFwDomainProcess authorizePerform anAspect using aRule Services MicFwDomainProcess authorizePerformUsing aRule Services MicFwDomainProcess validatePerform anAspect using aRule Services MicFwModelObject validateWrite aspect using rule Property MicFwDomainProcess isAuthorizationActive M Y mm N D Application Framework User s G
66. Minimum f0 Class MicExampleClubMember z Maximum VN Variable club z F Primitive F Monitor target ia A Minimum 10 a Maximum 1 Fa m MicExampleClub VA Smalltalk Application Framework User s Guide 2 Tutorial PMS MICADO 62 2 3 Beyond Basics The Singleton pattern for managing the one and only instance of following class methods current answer the sole Cu Curre rrene nt current set the Current isNi LET aVal sole ins aValue ue instance of the receiver rue Current tance of the receiver is implemented in the self new initialize We also need some code to initialize a list of members for our testing It makes sense to write the following class method in the application class of our example initiali MicFwFi p club icExamp zeMembers tnessClub Example initializeMembers leClub cu lub Mic Mic rrent nil Examp C Examp eClub current ubMember new OO G r club club name firstN dateOfBi initia Mic Sample ame rth lWeight Joe Date fromDays 23589 180 4 ExampleCcl club club name f dateOf initia irstName Anyone Birth lWeight ubMember new Frank Date fromDays 23889 192 7 This code must be executed only once to initialize a club wit
67. Object may simply reuse the framework s generic Domain Process Generally more than one Domain Object is connected to a view and many Domain Processes may be uti lized in a complex editable view For example e to display a customer his main address and a list of all his contracts or to choose some predefined criteria for classification of a newly created contract by selecting elements from Lists whose contents are retrieved from a database RPOXOmMAZAZOA 1 3 11 Viewports As shown in the previous section a view will normally consist of more than one Domain Object being dis played ona screen More often a whole net of Domain Objects will to be processed in one transaction with one object playing the role of the primary object in the transaction e g editing a Customer or calculating a Policy Moreover a lot of current object state information will be transported continuously to the view since each Control s state enabling state visibility and other properties depends on the model s states in a complex way In order to separate view related state handling from Domain Objects and Domain Processes another kind of class has been introduced Classes of this type are called Delegation Models because functionality for transportation and the filtering of data and states concerning an object net from a certain object s or view s direction is delegated from the Domain Models to them leading to a more lightweight kind of Application
68. Persistence Framework The Domain Object also has open interfaces for connecting authorization and validation The application developer merely needs to define access to these subsystems this does not have to be taken into consid eration when the application developer programs the business solutions Application Framework handles all the steps necessary for processing the defined authorizations and validities 1 4 3 2 Domain Process The Domain Process is a further aspect of the model part of the MVC and implements business logic that combines the Domain Objects behavior with a well defined context Additionally it is used for declaring the user transaction behavior in the application it can be stored in hierarchies and can also be stored persis tently in its current status Business transactions can thus be represented This representation process incorporates the business flow logic with or without a connected user dialog and in a manner which can be replicated and resumed Treatment of authorization and validation is the same as the treatment applicable for Domain Objects 1 4 3 3 Viewport The Viewport handles the Control function of the MVC The developer controls the interaction behavior of all connected models whether they are Domain Objects or Domain Processes Inversion of control is a major mechanism in this respect As the dynamic behavior of the model in terms of user guidance is pre defined in Application Framework the developer
69. The Transaction Browser is a part of the Object Behavior Framework and is desribed in the the Object Behavior Framework User s Guide The Transaction Browser supports analysis and modification of transactions The Transaction Browser is a part of the Object Behavior Framework and is desribed in the the Object Behavior Framework User s Guide Application Framework User s Guide aA 5 Tools MYND 5 1 Overview 197 5 2 Domain Processes Browser 5 2 1 Overview Domain Processes play a central role in determining the structure and control flow of an application The Domain Processes Browser supports creation and maintenance of e Relationships between Domain Processes and Domain Models e Parent child relationships between Domain Processes During design time such relationships are implemented with Connections These Connections are imple mented by special accessor methods for processes and models that are created by the Domain Processes Browser During runtime these special accessor methods create connections between the models and processes Such connections provide a static aspect of the interaction between processes and models 5 2 2 Main dialog To open the DPB main dialog From the System Transcript main menu Select micFrameworks Open Domain Processes Browser The following dialog appears 3 Domain Processes Browser on lt EMPTY gt of x Browser Process class Connection Options ES Connector YA S
70. Trigger associated event and logger MicFwTransactionContext gt gt abortToTop Abort all child contexts of receiver and then abort all transaction levels in receiver MicFwTransactionContext gt gt abortTransaction Abort highest transaction level in receiver If TrLevel1 aborted then abort all child contexts and receiver MicFwTransactedObject gt gt abortVersion aMicFwObjectVersion inContext aTransactionContext Abort the receiver to the version contained in aMicFwObjectVersion Since versioned changes aren t writ ten through to the instance variables there is no need for action here except triggering an event Note If aMicFwObjectVersion is lt nil gt this method was called from a abortToTop of the transaction con text the transactionContext s transactionLevel is 0 Otherwise the transaction context s transactionLevel is already decremented e g if this is the final commit aTransactionContext transactionLevel is already 0 MicFwTransactedObject gt gt abortVersion aMicFwObjectVersion inContext aTransactionContext inRelationship aMicF wRelationship Abort the receiver s relationship to the version contained in aMicFwObjectVersion Default is to do nothing MicFwDomainProcess gt gt aboutToAbortTransaction Called when a user wants to close the corresponding view when the transaction of the receiver process is Application Framework User s Guide MA 272 Appendix A API MYND going to be aborted MicFwDomainProcess gt
71. Violation gt gt executeForFetchWith anArrayOfParameters Execute the statement without answering result Leave the cursor open so results can be fetched rowwise Use the parameters in lt anArrayOfParameters gt for the embedded parameter markers in the statement MicFwRadbAbstractDirectStatement gt gt executeOnce Execute the statementstring in the receiver once and answer the number of rows affected Release all resources afterwards MicFwRabDirectStatement gt gt executeOnce Execute the statementstring in the receiver once and answer the number of rows affected Release all resources afterwards Answer the number of rows affected MicFwRabiIntegrity Violation gt gt executeOnce Execute the statementstring in the receiver once and answer the number of rows affected Release all resources afterwards MicFwAbstractPersistenceManagerRdb gt gt executeSQL anSQLString Perform lt anSQLString gt directly against the Database and answer the number of rows affected MicFwPersistenceManagerRdb gt gt executeSQL anSQLString Perform lt anSQLString gt directly against the Database and answer the number of rows affected MicFwAbstractPersistenceManagerRdb gt gt executeSQL anSQLString with parameterArray Perform anSQLString directly against the Database without answering any results Use the parameters in parameterArray MicFwPersistenceManagerRdb gt gt executeSQL anSQLString with parameterArray Perform anSQLString directly against the Data
72. a Collection This MetapartCollection offers a Collection interface You can create and use a MetapartCollection either similar to a Collection with etc or use the new Viewport APIs and leave the administration of the MetapartCollection to the Application Framework which is recommended Internal List Connections cannot be identified through their Connection Name any more If you used such Connections in your application you must do one of the following migration steps e Ask the Connection instead of to distinguish them in methods like aA Application Framework User s Guide MY D Release Notes 19 etc If you access the Connection via you can preset the internal List Connection with the new Domain Process APIs e MicFwDomainProcess gt gt addPresetChoiceConnectionNamed aSymbol withContext aContext withSuperContext aSuperContext e MicFwDomainProcess gt gt addPresetHierarchyListConnectionNamed aSymbol withContext aContext withSuperContext aSuperContext e MicFwDomainProcess gt gt addPresetListConnectionNamed aSymbol withContext aContext withSuperContext aSuperContextntext e Generally no write access should take place during a traced read via the Framework since this usually leads to further and uncontrolled updates The new Framework version therefore generates an Exception when such an operation occur If no better solution for the problem can be found then the Exception can be suppressed by executing MicFwDomainObjec
73. a class 5 2 2 7 13 amp Find child process connections with selected model Same as Connection Find as child connection 5 2 2 7 14 P Choose a new environment connector Same as Browser Choose Environment Ctrl E 5 2 2 7 15 C Reload all classes from current environment Same as Browser Refresh Environment Source Connector VA ST Connector Dest Connector VAST Connector 5 2 2 7 16 21 Connection manager settings Click to display the current settings in the Connection Manager 5 2 2 7 17 Z Open preferences window Same as Options Preferences 5 2 2 7 18 _ About PMS Micado Same as About 5 2 2 8 Process Classes Hierarchy column 5 2 2 8 1 Domain processes in the Process Hierarchy column Application Framework User s Guide 5 Tools MA 202 5 2 Domain Processes Browser MYN Process Classes Hierarchy MicFwToolDomainProcess A toolCenter connectorEditProcess bi MicFwConnectorEditProcess 4 MicFwPBPreferencesProcess La MicFwPBPropertyListProcess The domain process class that was opened in the DPB and all other domain process classes that belong to that class s tree are displayed in the Process Classes Hierarchy column 5 2 2 8 2 Connections and variables in the Process Hierarchy column The column also displays connections and variables However this is for information only Selecting a con nection will result in empty Process Hierarchy Name and Valu
74. a commit of a per sistence context This context is still running You can decide to commit it again or to abort it Implemented for backward compatibility resignal the notification to be handled by the application MicFwPersistenceManagerRdb gt gt handleUpdateConflict updateConflict The update conflict updateConflict occured This can happen when the objects optimistic columns have changed or when the object has been deleted Handle the conflict accordingly This is the default imple mentation Implemented for backward compatibility signal the notification to be handled by the application MicFwDomainProcess gt gt hasConnectionNamed aConnectionName Answer true if the receiver has a Connection named lt aConnectionName gt MicFwTransactionManager gt gt hasCurrentContext Return True if there is a active context MicFwRdbForeignKeyDescription gt gt hasDeleteCascade Answer whether deleteRule is CASCADE MicFwRdbForeignKeyDescription gt gt hasDeleteRestrict Answer whether deleteRule is RESTRICT or NOACTION MicFwRdbForeignKeyDescription gt gt hasDeleteSetNull Answer whether deleteRule is SET NULL MicFwDomainProcess gt gt hasDynamicChildProcessNamed aConnectionName Answer true if lt aConnectionNames gt is the name of a dynamically added child process MicFwAbstractPersistenceManagerRdb gt gt hasPKUpdateFor persistentObject Answer true if at least one of the primary key selectors has a version in the current TA
75. an ExtendedDescription involves checking the Object Net for errors Validation Like the authorization service validation ties in at the model layer and is used for checking value based access to and from attributes based on certain rules VariableDescription MicFw Object which contains complete information about an instance variable Viewport In order to separate view related state handling from Domain Objects and Domain Processes Appli cation Framework implements a Viewport as a Delegation Model concept Functionality for transportation and the filtering of data and states concerning an object net from a certain object s or view s direction is delegated from the Domain Models to them leading to a more lightweight and view independent kind of Domain Object Viewports learn the dependencies between their Aspects and the corresponding Model Aspects while run ning the application This read trace frees the programmer from dealing with changed events and allows Application Framework to update both sides automatically and in a generic way A Dispatcher is called Viewport if Domain Objects are concerned aA Application Framework User s Guide MYND Appendix D Glossary 331 Application Framework User s Guide MA 332 Appendix D Glossary MYN Bibliography The following documents were referenced throught this document BOOC Grady Booch et al 1991 Object Oriented Design With Applications Benjamin Cummings ENVY
76. and value gt 70 and value lt 500 First the block checks to determine that the value is not nil nil wouldn t understand the gt and lt compar ison operators so that an exception would be raised and then checks to determine whether the value is inside the range Now it s time to test what we have done so far Execute theMember MicExampleClubMember initializeValidationTable theMember MicExampleClubMember new theMember name Sample firstName Joe dateOfBirth Date today Application Framework User s Guide PMS MICADO 2 Tutorial Pod 2 3 Beyond Basics 59 initialWeight 189 5 MicExampleMemberProcess new clubMember theMember openView MicExampleClubMemberView Please note that validation is initialized in line 2 Now try to enter a value outside of the range 70 to 500 or even one of those values themselves As soon as you try to tab out of the field the value changes back to what it was before 2 3 4 Adding a Help System Define transaction Manage child processes Enable authorization Ovar iding asta behavior Define modality 2 3 4 1 Possible Help systems At this point we may want to introduce help features for the Window we created so far On a field level the Framework supports two different types of help regular help the one you get when you press F1 and Hover Help the tiny Windows that pop
77. are important in both directions A Graphical User Interface GUI triggers events upon actions of the user In the opposite direction events are triggered by the models causing GUI widgets to be updated when some has changed in the model object net ApplicationFramework is designed to be platform independent Therefore it maps events triggered by the platform GUI to its own Abstract Events which have platform specific extensions to transform the Platform Event protocol into the protocol of the framework These Abstract Events are instances of classes named used for modifications in s the class and its subclasses used for command requests like pressing a Push Button The Abstract Events responsible for passing changes from the model world to the window system are instances of classes named As already mentioned the classes are responsible for the mapping method Example VA composition editor Class hierarchy The following hierarchy shows the Platform Adapters which connect the VA ABT parts with the Abstract Controls of ApplicationFramework MicFwWindowImplementation MicFwControliImplementation MicFwAspectControliImplementation MicFwLazyControliImplementation MicFwMultipleAspectControliImplementation MicFwBookControliImplementation icFwAbtNoteBookViewImplementation MicFwAbtPortableNotebookImplementation MicFwCollectionControlImplementation icFwAbtExtendedListImplementation icFwAbtContainerDetailsViewImplementation
78. as fol lows MicMlsLCCompoundMessages Integer key lt gt Format string MicMlsLCCompoundStrings String key lt gt Format string The format string consists of n elements of which each element can be as follows Elements String part or e Parameter part A parameter part can be defined as follows e n or e n o or e n choice t c 1 c n where n parameter number n Ic tr In nam ky a o Ic Parts of o c locale category Numeric Date Time tr territory e g germany or n language e g german or nm Name of a locale entity which lies in the context hierarchie the compound locale is in The name can also be which is the first Locale Entity of the Locale Cate gory found ky A key which defines the format string used in the Locale Entity defined by lc tr in nm A key named means the default key The Locale Entity defined by o is used to format the parameter n choice is a fixed key word t Class of the paramter which should be compared Currently available Integer c operator value result Parts of c operator The operator to compare with gt lt lt gt lt gt value A value which must be of type t result e 1 e n e An element as defined above recursive Examples Some examples for parameter parts and their possible results Parameter no 2 Parameter part Result 1 Number
79. be prepared to handle all possible events which occur of course in an unpredictable sequence The Application Framework play an important role in the layer model of a complex application between the technically oriented database Frameworks persistence and the middleware which depends on the field of Application Framework User s Guide aA 1 Concepts MYND 1 1 Introduction 25 application e g Insurance Frameworks They enable application development to avoid various depen dencies and also to reuse generally valid patterns and procedures Thus one of the most important ideas behind all the Mynd Frameworks is the isolation of the actual busi ness logic from technical details The frameworks enforce strict separation of e Database e Database Logic mapping of objects to tables e Model Domain Objects and Domain Processes the Business logic e GUI Logic and Interaction logic in general e GUI and other external Interfaces On the other hand the business objects should carefully be designed to be independent from all techni cal aspects of any application in order to be reusable in different applications A business object s respon sibility is purely domain oriented a GUI for example is only one way see it and to work with it The main purpose of the Mynd Application Framework is to offer an architecture which separates business objects from technical ones In particular the whole GUI subsystem is strictly separated from t
80. be removed from the system 4 8 3 2 Dynamic Group Controls The simplest Group Controls are Forms Group boxes and Windows These canvases usually group other widgets on the view If a canvas is connected to the framework one can set as the content of the canvas other Forms These Forms are attached to the surrounding Form and are arranged so on each other So it is not possible to arrage the inserted Forms in such a way that all are visible at the same time The content accessor for a canvas so return a metapart collection containing a number of Each Metapart represents one Form to be inserted MicFwMetaPart gt gt accessorString aString partClassName aSymbol MicFwMetaPart gt gt label aLabel Example A Form on the view is connected under the Aspect details We want to exchange the content of this Form dynamically So we must implement in our Viewport a method similar to this Details return a form representing the details of our selected model mpc mpc self newMetaControlListForAspect details mpc add self model currentChoice isNaturalPerson ifTrue MicFwMetaPart new accessorSting VOID myDetail partClassName MyNaturalPersonForm yourself ifFalse MicFwMetaPart new accessorString VOID myDetail i Application Framework User s Guide 4 Advanced Programming Reference ew s 182 4 8 Group Controls MYND partClassName MyPersonForm yourself mpc A 4 8 3 3 Dynamic Me
81. becomeTotalLoaded Activate persistence for the receiver within the current persistence context and set the loaded flag so that the receiver will not be inserted on the next transaction commit Do the same for all objects referenced through persistent relationships NOTE this call is only valid inside an active persistence transaction context MicFwPersistentObject gt gt become TotalNewPersistent Activate persistence for the receiver within the current persistence context Do the same for all objects directly AND INDIRECTLY referenced through persistent relationships This call is only valid inside an active persistent transaction context MicFwPersistentObject gt gt becomeTotalNewPersistent aBlock Activate persistence for the receiver within the current persistence context Do the same for all objects directly AND INDIRECTLY referenced through persistent relationships for which aBlock evaluates to true aBlock will be evaluated with the receiver object as the argument This call is only valid inside an active persistent transaction context MicFwPersistentObject gt gt becomeTotalPersistent Activate persistence for the receiver within the current persistence context Do the same for all objects directly AND INDIRECTLY referenced through persistent relationships This call is only valid inside an active persistent transaction context MicFwPersistentObject gt gt Application Framework User s Guide MA 276 Appendix A API MYND
82. code in is edit self model edit openView MicExampleClubMemberView 2 3 5 5 Start Club Application Now it s time to test what we have done so far Execute MicExampleMasterProcess new club MicExampleClub current openView MicExampleClubMasterView to see the following Window cs o x Members Sample Joe New Anyone Frank F Edit Selecting a member in the List and pressing View Edit will take you to the edit window we already imple mented Changes made in the edit window will be saved and propagated back to the List window only if you press OK pressing Cancel will abort the corresponding transaction and discard all changes There are still two methods we haven t implemented so far deleting and inserting members 2 3 5 6 Delete a member from the club The application need no interaction with the user after the user decides to delete a member In the we implement deleteMember delete the currently selected member self club members remove self currentMember 2 3 5 7 Add anew member to the club Now we want to create a new member and add it the the list If we are lazy and don t care about the valida tions of anew member we have to implement one method only The method has to be implemented into newMember insert a new member into the list and set the selection theMember theMember MicExampleClubMember new theMember club self clu
83. context MicFwTransactionManager gt gt hasRunningTransaction Return True if the active context has a TrLevel1 MicFwDomainProcess gt gt hasViewlnteraction Return true if the receiver is involved in view interaction MicFwDomainProcess gt gt hierarchicalPersistentTransactionPolicyClass See lt defaultHierarchicalPersistentTransactionPolicyClass gt MicFwDomainProcess gt gt hierarchicalTransactionPolicyClass See lt defaultHierarchicalTransactionPolicyClass gt MicFwMetaPart gt gt icon alcon Set the icon MicFwDomainProcess gt gt inheritedTransactionPolicyClass See lt defaultInheritedTransactionPolicyClass gt MicFwViewPort gt gt initialize e Application Framework User s Guide et s 290 Appendix A API MYND Initialize the receiver WARNING This is the initialization of a new instance for the framework May cause trouble when called during lifetime of the instance in order to perform a reset for example MicFwModelObject class gt gt initializeAuthorizationTable Create a new authorization table for the receiver MicFwDomainProcess gt gt initializeChildProcessConnections Called after a Connector and the involved Process Connections are created It may be reimplemented to prepare the Process Model Connections with their process models MicFwDomainProcess gt gt initializelnvolvedBaseConnections Called after a Connector and the involved Base Connections are created but before the child Process Co
84. could pop up a message box and ask the user if he she wants to abort or commit By changing the close mode to ABORT the process and all its childs try to perform an abort and close process FAQ 2 4 How do override the default close behavior for a process Normally when the X button in window is clicked close window or Alt F4 is pressed the process closes in the default manner However the process can override the default behavior by overriding the commitTransactionByDefault method MyDomainProcess gt gt commitTransactionByDefault API Override optional When the view is closed is an open transaction to be committed by default true or aborted false true FAQ 3 Errors FAQ 3 1 How can i register an InputError or WidgetError in the FrameWork False input in an entry field false date types will not be registered by the Framework The converterManager if defined in the Settings verifies the input of the View For example if a Date converterManager was defined for an EntryField SettingsPane gt converter gt Data Type Date The converterManager will check the validity of the input to this field For example if a String is entered the convertere Manager will verify that the input represents a valid Date otherwise the input will be rejected If the input is rejected an AbtConverterError userlnputError is generated and the ErrorString error is displayed in the entry field Normally t
85. data e isCoach The user is a coach and can change the initial weight attribute of a member To implement this we need an object that e Identifies a user e Checks the password e Determines the user s access rights Knows the user name e Knows the user password e Knows the user security level to avoid frequent checking of the user s security status 2 3 6 2 Create MicFwDomainObject gt gt MicExampleUser Create MicFwDomainObject gt gt MicExampleUser with the following attributes e canModify boolean canRead boolean e isCoach boolean name String password String 2 3 6 3 Create MicFwDomainObject gt gt MicExampleSession For Authorization implementation the DO must know at all times who the currentUser is This is accom plished with a MicFwDomainObject gt gt MicExampleSession e Create MicFwDomainObject gt gt MicExampleSession e Create MicExampleSession gt gt currentUser Type as e transacted primitive gt 1 relationship to a MicExampleUser e cardinality 0 1 2 3 6 4 Create MicExampleClubMember gt gt currentUser e Create MicExampleClubMember gt gt currentUser Type as e transacted primitive gt 1 relationship to a MicExampleUser e cardinality 0 1 2 3 6 5 Create MicFwDomainObject gt gt MicExampleAuthorizedDomainObject Instance variable lt session gt must be added to DO s Therefore the parent class for MicExampleClub and MicExampleMember DO s will be reset to MicExampleAuthorizedDomainObjec
86. default Locale is set to united kingdom english SES EEES 7 2 9 The MLS API This API should be used when accessing MLS Contexts or the MLS system directly micAPI mls MicFwViewPort gt gt contextAtConnectionNamed aSymbol MicFwViewPort gt gt localize aLocale MicFwViewPort gt gt localizeAllConnectionsTo aLocale MicFwViewPort gt gt localizeConnectionNamed aSymbol To aLocale MicFwViewPort gt gt mlsContext MicFwViewPort gt gt returnContextNamed aContextName MicFwViewPort gt gt getLocaleNamed name ofType MicMlsLocaleSymbol from ContextAtConnectionNamed aSymbol MicFwViewPort gt gt converter MicMlsKey gt gt localizeTo aLocale Application Framework User s Guide aA 7 Multi Language Support MLS MYND 7 2 MLS and Application Framework 247 7 3 The MLS Data Editor 7 3 1 Overview The MLS Data Editor is accessible via the Menu item Open MLS data editor in the Frameworks Menu 7 3 1 1 Explanation of Lists and Their Functionality 7 3 1 1 1 MLS Contexts This list contains MLS contexts which store and organize Locale Entities It includes all MLS context classes to be found under These classes are broken down into Master Con texts and normal contexts The context entitled lt all MLS data available gt is not a genuine context it stands for a view of the MLS Data pool irrespective of contexts The Menu items 7 3 1
87. displaying model information on the view the format strings are used for transforming input from the view e g strings into valid model objects e g time date Input errors relating to defined format are identified and only input which complies with the format is trans formed into valid objects and placed into the model We provide a simple API for enabling specific parts of an application to be switched over to the required Locale The MLS system is fully integrated in Application Framework and a generic Adapter provides a compre hensive default reaction thus minimizing the amount of work involved in connecting the MLS system to the user s own applications It is possible to access the MLS system independently of a view in order to obtain MLS Data relating to the model and to visualize these data in a form which depends on the status of the model This permits a high level of flexibility for using the system As a result of MLS being integrated in Application Framework not only VA Views but also HTML pages and Java Applets are capable of supporting several languages without any model change The MLS is connected to the transaction handling facility of Object Behavior Frameworks This also means that run time changes to the MLS Data are also transaction capable We provide a sophisticated editor for maintaining externalized data in a simple manner 7 1 2 Overview The micado Multi Language System MLS is an extension of the existing Nation
88. does not have to make any event oriented Connections Visual components are connected to the model only by completing skeletally defined code parts The automatic update mechanism in Viewport also results in a major simplification for the developer All programmed accesses to the model are recorded and evaluated In this way it is not necessary to sepa rately administer the forwarding of changes in the model to the view 1 4 4 Tools The Domain Processes Browser is the main tool of Application Framework It can be used for declaring Domain Processes their hierarchical relationships and the corresponding user transaction behavior This is also where the accessed Domain Objects and their Viewports are assigned A default for visualizing the Domain Process can also be declared here The View Connectors Browser offers a visual representation of all active Domain Processes and the con nected views together with their contents and permits efficient trouble shooting Platform specific integrations in the development environment can also be used for the declaration The visual programming Adapter for instance supports visual programming in the composition editor of Visu alAge The Connection between a visual component and the according representation of it in the frame work can be defined here All tools in other Mynd Frameworks are integrated where applicable Some have a direct interaction with the operation of Application Frameworks The Transactio
89. file or in a new csv file to be created If the system does not find an appropriate csv file the system asks whether it should create a new file and then creates a new file when a new file name has been entered 7 3 1 1 8 6 Show all csv files for entity The user is able to view which Locale Entities are stored in which csv files If the system does not find any csv file it displays the message no file visible 7 3 1 1 9 MLS Keys This list displays all keys which exist in the selected Locale Entity These keys are integer values for Locale and strings for all other Locales A key of a Locale which contains formats e g identifies a format which is used for displaying an object e g an integer or data in formatted form The Menu items 7 3 1 1 9 1 Add key Adds a new key to the selected Locale Entity in the memory If a key name for a Label ends with ACC this key describes the accelerator for this Label or for the desig nated button 7 3 1 1 9 2 Delete key Deletes the selected key from the Locale Entity in memory 7 3 1 1 9 3 Rename key This can be used for renaming a selected key All data of the various Locales are retained and are subse quently available under the changed name 7 3 1 1 9 4 Copy key The key with all related data is copied to another Locale Entity The system copies all local data which can be copied in any way If the target Locale Entity has fewer Locales available the data for these Locales can
90. from the Aspects of the selected Connection The same rules apply to the selection Connection settings For List Controls i e Lists Multiple Select Lists Drop down Lists etc the settings page contains one more field 5 6 2 Connect to models using Non Visual Parts To further facilitate the process of connecting views and models as well as to provide a method of visualiz ing structural elements of an application the Frameworks also extend the VisualAge Composition Editor Let s first look at an example of what this means in practice The example is based on the Fitness Club application that is included as a coded example After that the extended capabilities of the Composition Editor will be explained in detail Ie MicExampleMasterVisualView Composition Editor File Edit View Options Tools Help a lemMenu Member Menu Choice1 Menu Choice2 2 Z P defaut Ey W N Delete QY e reba p Fa we A Master el club Logon VisFW r wv 2 logon I Sticky r if F Nothing selected BEEK shows how the extended Composition Editor helps to visualize important Aspects of an application These are the icon labeled represents a Domain Process in this case the icons labeled T and represent Viewports Process hierarchy the wires between the Viewports of Domain Processes and the
91. functionality The acceptance of an application does not only rely on the implemented functionality but also on the Ease Of Use and Human Interface A considerable portion of a development project will be spent designing and implementing a system to work in conjunction with a particular user interface Therefore the Mynd Application Framework is designed to run independently of any GUI dependent logic by abstracting the underlying windowing system s functionality to an object oriented approach where the abstraction will be embedded into the business logic and be an equal part of the solution for the customer s problem domain The powerful Smalltalk environments offered by this framework will enable you to develop your software projects faster and more efficiently than ever before with an increased productivity and quality In addition the long term experience of Mynd professionals in the areas of banking insurance and indus try has an invaluable influence on the Application Framework providing you with a valuable and depend able tool 1 1 2 Objectives of Application Framework 1 1 2 1 Saving through Use All complex software requires Frameworks and in particular Application Frameworks in order to meet the high demands imposed on object oriented development On the one hand new technologies are con stantly increasing the performance of applications on the other hand the volume of research and develop ment work is also increasing
92. have no effect on existing applications The change in accessor is possible because the DomainProcess s for a Column are not dynamically changed 8 InformOfChanges executed after localize complete AppFw causes an lt informOfChanges gt message to be sent for each new LocaleEntity The lt infor mOfChanges gt messages are now executed only after localize is complete In the previous version an lt informOfChanges gt message was sent and executed during the construction localize of the MLS Context This led to updates in the AppFw which could cause a renewed access of MLS During MLS access localize of the of the Context is not complete and thus the Context was inconsis tent Version 4 0 1 New Domain Processes Browser This release contains a new version of the DPB The new capabilities of the browser are described in Domain Processes Browser page 198 2 TimeArea and DateArea displayed correctly in status bar The StatusBar adjusts the TimeArea and the DateArea to the size of the string to be displayed This is independent of the type of font 3 Obsolete methods The following methods are never called e MicFwDomainProcess gt gt defaultValidationBlock e MicFwDomainObject gt gt validatesWriteAccessTo aspect value value 4 New lineups for OS 2 Loading the configmap micApplication Interaction Platform GUI Enhancements Runtime under OS 2 does not cause an OS Point Load error MicAbtLabelViewHelp is now commented out f
93. in a field Data that doesn t conform to that type must be rejected Sometimes the data entered must also be in a specific range The Framework provide a mechanism to define validation on the Domain Object level The advantage of defining it there is that it is independent of the views and consistent across all views and other parts of the system that deal with the attributes in question Let s extend our example with some validation logic The initialWeight attribute of a club member repre sents a measurement of his weight when he joined the club Because this is numerical data we ll assign it the type Float Doing this is straightforward open the Object Model Explorer on the class Now select the instance variable initialWeight Choose Set Type from the context Menu and select Float in the following dialog Since we want the type to be validated whenever we assign something to initialWeight also check the box labeled Validate Type in the lower part of the Object Model Explorer Application Framework User s Guide 2 Tutorial PMS MICADO 58 2 3 Beyond Basics The browser should look like this now Model a Variable Options EER JPET EEE PEGE Le c pleClubiv e Variable dateOfBirth firstName initialWeight J ting Type Float Ae Java relevant Smalltalk relevant Dimension 2 4 Size 5 Scale kee a MicExampleClubMember VA Smalltalk Now save you
94. interfaces to its corresponding Abstract Window 6 2 2 2 Window and Control Adapters The Platform Adapters which connect the Platform View with the Abstract View are instances of which has a set of methods implemented for each platform supported The Platform Windows widgets views parts are connected with their corresponding Abstract Controls by instances of platform specific subclasses of 6 2 2 3 View Adapter Each Abstract View instance of has a corresponding object interfacing the real View Access to the view retrieval of its top level window method and component windows method and commands like open activate close abortClose are imple mented as platform dependent instance methods in There is a unique Platform Adapter class for each Platform Window class The Platform Adapter class name conforms to the convention MicFw lt platform widget class name gt Implementation 6 2 2 4 Tasks of the Window Adapter The Platform Adapter maps the Platform Events ApplicationFramework is interested in to corresponding Abstract Events The class method implementedEvents which is implemented for each Window Adapter returns a dictionary with the Platform Event symbols as keys and the corresponding Abstract Event classes as values The instance method per forms the creation and platform dependent registration of the view observing Abstract Events for their cor responding real events and returns the collection of Abstract Events
95. is a string whereby the attribute in the class expects a Float fur thermore the validation for the attribute was activated In order to have the string displayed it is necessary to change the type of the attribute of the class in the Object Net Browser to a Type Now selecting a name in the List ourList results being displayed in the upper entry field ourName In reverse an entry in the entry field should be entered into the List after exiting the field under the condi tion that the entry is not yet included in the List Actually if the attempt is made the application will reply with a walkback and the message According to the information in the Connectors Browser the declaration should now be correct The cause of this error must be searched for in the implemented methods After viewing the Debugger stack more closely the origin for this walkback is the method VisualAge Debugger Oo x LJ JaDemoViewPort on a DemoBase ExceptionalE vent gt gt signalwith DemoBase Object gt gt error DemoBase Object gt gt doesNotUnderstand h Sno aM icFwObject gt gt doesNotUnderstand sine pi preeeeey ject gt gt HdoesNotUnderstand name aStiing _ sal made pane Sting sel ATE includes aString ifF alse self model istEntries self model listEntries add aStiing yourself 03 03 97 11 47 53 from MyApplication1 source In it the method is sent to the receiver The me
96. master process indicate a child process relationship e g logon is a child process of the master process the links between Viewports and GUI controls indicate a link between an Aspect of the respective Viewport and the GUI element For example the link from the Logon button to the means that the button is linked to the Aspect of that functionally equiv alent to naming it 5 6 2 1 Domain Processes Domain Processes can be used as non visual parts in the Composition Editor To do so select the section micado Frameworks section in the parts catalog on the far left of the Composition Editor Then select the Application Framework User s Guide aA 5 Tools MYND 5 6 VA Composition Editor 215 a symbol Domain Manager and place it on the canvas Double clicking on it will open the settings dialog which simply consists of a Listbox allowing you to select a Domain Process from those currently defined in your image Domain Manager Master Settings _ oy x Seedececdeddddddcddddddccdcdeds ededecdcdcded N Domain process MicExampleMasterProcess ha Eita General 4 Apply Cancel 5 6 2 2 Viewports The s associated with a Domain Process i e the child processes and the involved Base Connec tions defined in the DomainProcessesBrowser are accessible as tear off attributes of the domain man ager Ge MicExampleMasterVisual iew Composition Editor BEE File Edit View Opti
97. name where lt WidgetClassName gt is the name of the platform widget class Next it must be determined whether the inherited class method returns the desired Abstract Window class for the new widget If this is not the case then this method must be overridden Moreover a class method must be created which returns an IdentityDictionary with the Platform Event selectors as keys and the corresponding Abstract Event classes as values It is not necessary to map all Platform Events to Abstract Events only those which need to be communicated to ApplicationFramework Next you must determine whether the instance methods inherited by the Platform Adapter are imple mented as needed for the widget They should have the effects described above or do nothing if they do not apply to the widget Finally the specific services of the widget must be adapted especially the methods for getting and setting the content of the widget for getting and setting the selection in a List widget Further information concerning List Widget Adapters is included in the next chapter 6 4 1 1 Platform Specific Methods in Viewports can have platform specific extensions because in the case of Viewports are created and handed over to the Platform Adapter which can pass them to the platform wid get if it handles objects As the platform widget addresses them in a platform specific way Platform Adapter extensions may be necessary to intercept the calls from the platform
98. of the persis tence context This will answer true if the receiver has been explizitly or implizitly sent the delete mes sage This will answer false again after the receiver has actually been deleted MicFwPersistentObject gt gt isDeletediInPom pom Answer whether the receiver is to be deleted from the persistence medium on the commit of the persis tence context This will answer true if the receiver has been explizitly or implizitly sent the delete mes sage This will answer false again after the receiver has actually been deleted Application Framework User s Guide et s 292 Appendix A API MYND MicFwDomainProcess class gt gt isExecAuthorizationActive Answer true if authorization for actions e g buttons is switched on for the receiver MicFwDomainProcess class gt gt isExecValidationActive Answer true if validation for actions e g buttons is switched on for the receiver MicFwViewPort gt gt isInterestedInChangesOf anAspect Answer true if the receiver should propagate each change of lt anAspect gt to the model A change can be a single keystroke within a text Control but not actions like focus changes MicFwViewPort gt gt isInterestedInUpdatesOf anAspect Answer true if the receiver should propagate each update of lt anAspect gt to the model An update can be initiated by a user interaction causing a focus change for the current Control MicFwTransactionContext gt gt islsolated Answers True if
99. or child Transaction Level A subunit of a transaction context A transaction level has a single object version for each variable of each object that was assigned a new target object while the the transaction level was the highest level in its context and its context was active Transaction Manager The transaction manager is a single instance singleton of MicFwTransactionManager and manages all running contexts Transaction A defined state of an object that runs under transactional control will be stored If the interaction on this object fails by some reason this object can be restored to this state if the interaction succeeds the per sistent state of this object will be modified to this new state and the old state will be dropped TrLevel1 2 Transaction level 1 2 Type Converter A type converter is assigned to a typed variable including variables in a relationship When an object is assigned to the variable that is not of the type specified for the variable the type converter will be used to attempt to create the correct type of object containing the information in the original object and assign this correct type of object to the variable Type Editor A visual tool for setting a variable type as a simple type Integer Date etc The type converter and size scale for the variable type can also be selected The Type Editor is opened from the Object Net Browser TypeDescription MicFw Object which contains comple
100. referenced by the variable if no context is active OR if the active context read mode is isolate AND the source object s variable is not locked by the active context AND the active context is not a child context of the context with the variable lock See transacted Target Concurrent contexts 2 contexts are concurrent if there is no parent child relationship between them Such con texts can also be referred to as sibling contexts A sibling context may not change a variable locked by another sibling context Concurrent transactions See Concurrent Contexts Connector A Connector is used to connect objects Domain Objects and Domain Processes to an external view The Connector decouples view and model objects and provides access to connected Domain Objects and Domain Processes on a low level In this respect it forms a bridge between the objects decoupling also Domain Objects from Domain Processes and thus making them more combinable and exchangeable Context See Transaction Context DDL A language enabling the structure and instances of a database to be defined in a human and machine readable form Default Base Connection The Default Base Connection will be used to hold the Domain Object if no explicit Base Connection is defined for this process Delegation Model An concept used to decouple subsystems from each other Application programmers imple ment subclasses of Viewport to isolate the model from the interaction subsyst
101. take you to a screen asking you to save the packaging instructions you gener ated so far another Next will bring up the final Output screen Saving the packaged image again will take longer than the progress bar suggests You re through To start your runtime image simply execute e abt iepappl or nodialog iepapp ata DOS prompt You may of course also create a desktop icon associated with that image Application Framework User s Guide aA 8 Creating Runtime Executables for Distribution MYND 8 3 The VA Packager 267 Application Framework User s Guide 8 Creating Runtime Executables for Distribution 268 8 3 The VA Packager as M YN D Appendix A API Application Framework User s Guide Appendix A API 269 Application Framework User s Guide MA 270 Appendix A API MYN The following is a list of API methods for the Application Framework MicFwViewPort gt gt lt aContentAspectOfAGroupControl gt ChildPaneConnectionMode MicFwViewPort gt gt lt aContentAspectOfAGroupControl gt ChildPaneConnectionMode defaultChildPaneConnection ModeValueOf anAspect MicFwViewPort gt gt lt aSourceAspect gt lt anOperation gt aListOfViewPorts onto aViewPortOrNil MicFwViewPort gt gt lt aSourceAspect gt lt anOperation gt lt aTargetAspect gt aListOfViewPorts onto aViewPortOrNil MicFwViewPort gt gt lt aspectName gt Accelerator Set the accelerator object of the Control speci
102. the Model Connection of which the MlsContext should be used as string e formatKey Contains the key which sets the format string when using or localeType and localeName can be left empty but you can t fill just one of them connectionName can be left empty formatKey can be left empty In this case a key named default is assumed If localeType is left empty it is filled according to the value you choose If the value is a string the locale Type is set to If the value is an integer the localeType is set to If localeName is left empty it is constructed using the value and the context in which this key should be converted If the value is a string and it is a model or Dispatcher return value the localeName is set to con text name Labels If the value is an integer and it is a model or Dispatcher return value the localeName is set to context name If the value is a string and it is a return value from a Hover Help method the localeName is set to context name HoverHelpText If the value is an integer and it is a return value from a Hover Help method the localeName is set to con text name If the value is a string and it is a return value from a help method the localeName is set to context name HelpText If the value is an integer and it is a return value from a help method the localeName is set to context name Examples aMicMlsKey value 1 Result The MLS system looks fo
103. the data source MicFwPersistenceManagerOdbc gt gt connectDataSource Connect to the data source MicFwDomainProcess gt gt connectorActivated Called after a Connector is activated It must return true if the view should be updated false else recom mended if activation is initiated by the user It may be reimplemented to initialize base models or to per form other actions during activation MicFwDomainProcess gt gt connectorDeactivated Obsolete Use one of the process closing hooks instead MicFwPersistenceManagerOdbc gt gt connectTo dataSourceName user userName password aPassword Connect to the ODBC driver with lt dataSourceName gt lt userName gt and lt aPassword gt Answer true if the connection was established false otherwise MicFwPersistenceManagerESQL gt gt connectTo dbName user userid password password Connect to the data source MicFwPersistenceManagerOracle gt gt connectTo dbName user userid password password Connect to the data source MicFwPersistenceManagerRdb gt gt connectTo dbName user userid password password A Application Framework User s Guide MYND Appendix A API 279 Connect to the data source named dbName as user id userid with password password MicFwPersistenceManagerESQL gt gt connectTo dbName user userid password password mvsSsid ssid mvsPlan planName Connect to the data source MicFwPersistenceManagerOdbc gt gt connectWithDriverComplete If the
104. the developer has included additional MLS Data In all other cases the framework will show its default behavior The Adapter can thus be seen as an additional way to access the MLS base system which will make some things easier but it doesn t take away any of the flexibility which the framework offers by default 7 2 2 Basics All MLS Data is controlled by the underlying MLS base system A view which needs this data must access the MLS base system in some way When using the Application Framework views are linked with a Con nector This Connector permits access to the functionality of its Domain Obects and Prcesses via their Viewports When using MLS a developer wants to display some kind of text in different languages to format the out put of some kind of object in a specific way or to set a specific mnemonic In the Application Framework the source of this MLS Data can be a Viewport or a Domain Object 7 2 2 1 Roadmap In order to understand the nature and structure of data which can be supported by an MLS system you can use the following categories e Static strings with no editing Data independent of a model e textual decorations e g window title e The key is static and can be translated e This data is just for orientation purposes non textual interaction references e g mnemonics The key is static and can be translated e This data is just for usability e Data related to a model e textual interaction references e g
105. the framework uses several mechanisms to let developers plug in new or different subsystems to be as flexible as necessary Beyond this manual as an experienced Smalltalk programmer you ll find these hooks by browsing the code looking for micAPI categorized methods and exploring the examples You are provided with the entire source code so you ll always find a way to create performance critical pieces or components that are difficult to implement in a generic manner without being dependent on the support of the Application Framework vA Application Framework User s Guide 6 Customizing N D 6 1 Overview 219 6 2 Internal Design 6 2 1 Abstract Model View Controller The Application Framework implements an enhanced and refined Model View Controller MVC approach which provides for strict separation of the various aspects of application development 6 2 1 1 Architecture On the one hand there is a separation between the problem domain and the technical requirements of the window system like object representation and user interaction The problem domain is reflected by the model objects implemented as subclasses of for objects managing Domain Pro cesses and subclasses of for actors and entities in the process Viewports instances of a subclass of serve as interfaces for the technical requirements of object presentation in the view and transmission of user requests to the corresponding models With respect to the window sys
106. the list MLS keys we select add key in order to enter a key for our help text As the help text is to be applicable for the first name and as the Aspect name of this entry field is first Name we create a new key firstName When text has been entered under this key for both languages this part is concluded and the text is dis played in the first name field when F1 is pressed while the application is running 7 5 2 2 New Data Format If the user would like a different format for the date of birth of the person he could change the date format in the standard Master Context if the standard itself is to be changed In this case however we only wish to change the date format for our view and thus require a Locale Entity which is able to handle date formats Using Add locale entity we create a Locale Entity for English and German under the category and the name This new Locale Entity is now selected and a new key is added This can be entitled default in this case this will be the new default for our view which is used if no key has been entered for a specific Aspect In this case we wish to specify a separate format for the Aspect dayOfBirth The name of the new key is accordingly dayOfBirth When the new key has been created select the required language in the list values of the chosen MLS key and go to a mask in which the format can be edited via the context Menu gt editFormat We choose B e Y for the English format
107. the model is connected are updated 1 3 10 The Model View Connector In order to connect objects to an external view a Model View Connector is established by the Application Framework Each view is attached to exactly one Connector which in turn is connected to the Domain Application Framework User s Guide aA 1 Concepts MYND 1 3 Mynd Frameworks Concepts 35 Objects and Domain Processes on its other side 7 7 Domain Objects UiS Create Domain Requesi Process RPOHAMZAZAOG Despite the fundamental role the Connector plays within the Application Framework itself it is almost transparent to the application programmer since most of the needed application programming interface API methods are provided by the abstract Domain Process class itself or are generated during declara tion The Connector decouples view and model objects and provides access to connected Domain Objects and Domain Processes on a low level In this respect it forms a bridge between the objects decoupling Domain Objects from Domain Processes and thus making them more combinative and exchangeable Process Request Using the framework Domain Objects and processes are connected to a Connector one Domain Object and one Domain Process in the simplest case Some trivial situations do not need an explicit Domain Pro cess at all e g for displaying one Domain Object in such cases no Domain Process needs to be specified and the Domain
108. this Control is aCollection The selection of this Control is anObject If connectionName is omitted or declared as VOID_ The Default Base Connection will be used 3 5 16 1 2 Supported variations 3 5 16 1 2 1 All parts of partName specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction displayMethodItem_ 3 5 16 1 2 2 displayMethod not specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction VOID_ 3 5 16 1 2 3 connectionNameSelection displayMethod not specified connectionNameContents_ accessorMethodContents_ VOID_ accessorMethodSelection_ VOID_ 3 5 16 1 2 4 connectionNameContents connectionNameSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ accessorMethodSelection_ VOID 3 5 16 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean ae Application Framework User s Guide 3 Programming Reference 3 5 View Parts 121 3 5 17 Combo Box 3 5 17 1 partName 3 5 17 1 1 Syntax connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ displayMethodItem_ connectionNameEntryField_ accessorMethodEntryField_ The default presentation method is The content of this Control is aCollection The selectio
109. to change our method at the MasterProcess newMember insert a new member into the list and set the selection self addNewMember club self club yourself The view related code should be palced at the related Viewport MicExampleMasterProcessAtDe faultViewPort newMember self model newMember openView MicExampleAddNewMemberView 2 3 5 9 4 Create a view for add new member process Now we build the MicExampleAddNewMemberView The buttons which commit or abort the view are con trolled by the AddNewMemberProcess but the rest should be controlled by its child the member process Therefore we use a GroupBox which can be something like a view for a process To let a Groupbox react like a View for the member process you have to set the 4 name part of the Groupbox to the child process connection name Application Framework User s Guide c gt PMS MICADO 2 Tutorial Poe 2 3 Beyond Basics 69 So the view looks like ol x File Edit View Layout Connections Options Help UltraTools Toos Q olea HE s me oma tes glss al loj x T E Edit Member m name e firstName dateOfBirth initialWeight n ox Cancel IGNORE_IGNORE_IGNORE_member_ selected The names of the parts are e Cancel Button e Ok Button EditMember GroupBox The entry fiel
110. up when you leave the cursor on a Control for a couple of seconds without doing anything Under Windows Operating System this feature is called ToolTips 2 3 4 2 The ViewPort The place for the help system The Help information have something to do with displaying an attribute of a domain model at the view If we implement this information at the view we can not reuse it at other views where we display the same model If we implement the help system at the domain model completely then we would dicide how to show the help at the view The best way is to implement the texts at the model and the way of displaying at a class which is esspe cially made for such code the Viewport At the viewport you can decide how to display help information of a model 2 3 4 3 Name Convention for Viewports You can have several Viewports and Viewport classes for the same domain object and the domain object class The reason is that you want to display a domain object at different views in a different way So it is recommended to name a Viewport class in a way that you can identify where the ViewPort is used At our member process we have one base connection which is typed to club member So it is enough that the name of the Viewport contains the related domain object class here our club member and the domain process which work on the domain object here So a name which contain any needed information would be 2 3 4 4 Create Viewport The de
111. user gets confused by an other user who works on the same object In this example we don t use persistence So we need no persistence transaction context If you choose Hierarchical Mode or not isn t important for this example So choose what ever you want Now close the browser and test what we ve done so far Executing theMember theMember MicExampleClubMember new theMember name Sample firstName Joe dateOfBirth Date today initialWeight 189 5 theMember inspect MicExampleMemberProcess new clubMember theMember openView MicExampleClubMemberView Will open an inspector as well as the Window we have defined on a member Go to the inspector and check the instance variable name It will show Sample just like it does in the editing Window Now go to the editing Window and change the name to Smith and tab out of the field Go back to the inspector and click on name again Nothing has changed so far Click on Cancel in the editing Window and recheck the name in the inspector again nothing has changed Now close the inspector and execute the same code again This time after changing the name to Smith press OK Check the name in the inspector and notice that it has changed to Smith The transaction handling works 2 3 3 Validating Input An important aspect of common applications is validation Often the user has to enter data of a certain type like for instance date
112. v String a initialWeight v String Variable Name name T Relationship Smalltalk relevant Type converter MicFwTypeConverter gt M Transact T Validate type MicExampleClubMember After you have done this you ll see that accessor methods for the instance variables have been created You can examine them in the Script Editor Use the VisualAge Organizer to open it Here you find the new member class in your fitness club applica tion Double click on it A alx File Edit View Class Categories Methods Info Breakpoints Help ep micews 5 micFwBasicAccessors instance public dateOfBirth El WARNING This method is generated by micado Frameworks and should not be modified or deleted Answer the value of the transacted instance variable dateOfBirth self transactedReadAccessTo dateOfBirth currentValue dateOfBirth oil 14 04 99 17 29 55 from MicExampleFitnessClubApplication in micFwAccessors source I EE 2 2 4 Defining a Domain Process Define a Domain Model Define a View Process As you read before the DomainProcess is the view controller and is the place where you can implement domain driven functionality which is only needed in the context of the UseCase in which your view is needed So it it recommended to implement an own one MicFwModelObject MicFwDomainProcess MicFwDomainObject works on MicFwExampleClubMe
113. validatesPerformAccessTo anAspect Answer the validation performing lt anAspect gt MicFwDomainObject gt gt validateWrite var using aBlock Causes any attempted assignment of an object to the variable var to be allowed only if the object to be assigned meets the criteria specified in the block aBlock MicFwModelObject class gt gt validateWrite aspect using rule Use lt rule gt Block or Message to validate each write access to lt aspect gt lt rule gt must return a boolean MicFwPsObjectidentifier gt gt valueFor keySymbol Answer the value for the specified key MicFwAbstractPersistenceManagerRdb gt gt valuelteratorClass Answer the class to be used for persistence iterations on undefined values i e no assumptions are made about the type of objects iterated upon MicFwAbstractWindowingPolicy gt gt viewClass Get the view class MicFwAbstractWindowingPolicy gt gt viewClass aClassHint Resolve and set the view class from lt aClassHint gt aA Application Framework User s Guide MYND Appendix A API 309 MicFwDomainProcess gt gt viewClosed Called after the process has closed its view Can be overridden to perform cleanups or exit the system MicFwViewPort gt gt wantsCachedReadoOf aDispatcherAspect This method controls the cache mechanism Its default behavior is to cache all Aspects MicFwViewPort gt gt wantsImmediateViewUpdateOf anAspect Return true for Viewport Aspects which require view updat
114. view for a Domain Object without using a special Domain Process will result in running under a generic Domain Process In order to open the view use this method MicFwDomainProcess gt gt openView aViewClass Open a view of the class lt aViewClass gt for the Domain Process Application Framework User s Guide MA 298 Appendix A API MYND MicFwDomainProcess gt gt openView aViewClass withParentProcess aDomainProcess Open a view of class lt aViewClass gt for the receiver as a child view of the parent view from lt aDomain Process gt If the receiver is open activate our Connector MicFwDomainProcess gt gt openViewWithParentProcess aDomainProcess Open the receiver s view Use the answer of method lt viewName gt as the receiver s view class as a child view of the parent view from lt aDomainProcess gt If the receiver is open activate our Connector MicFwAbstractPersistenceManagerRdb gt gt optionCompare Answer whether any loaded object will be compared to the cached representation when instances are read explicitly or on relationship traversal MicFwAbstractPersistenceManagerRdb gt gt optionCompare aBoolean Set the value of option compare See getter method for details MicFwAbstractPersistenceManagerRdb gt gt optionReadLimit Answer the read limit for retreival operations This limit is used on object retreival operations The value 0 signifies no limit This is currently not supported This option has no effect Mic
115. viewPortRequestBroker cache This is accom plished by running the application in development and save the cache from MicFwCachingViewPortRe questBroker viewPortCache in a file The viewPortCache instance is set again in the class instance in the runtime image and thus an initialized viewPort cache is packed vA Application Framework User s Guide 7 Multi Language Support MLS 7 7 Packing the Frameworks using MLS 259 Application Framework User s Guide 7 Multi Language Support MLS 260 7 7 Packing the Frameworks using MLS ons M YN D S Creating Runtime Executables for Distribution ote D 262 Application Framework User s Guide 8 Creating Runtime Executables for Distribution as M YN D 8 1 Introduction The ultimate goal of any development effort is the creation of a runtime executable for installation on the user s machines Unfortunately due to the nature of the Smalltalk environment which treats development and runtime code as one and the same distributing Smalltalk applications especially applications based on the framework appears to be one of the most complicated tasks of developing applications Enclose we will offer you a brief description of the process of packaging under Visual Age for Smalltalk version gt 4 00 regarding the special considerations to the Framework As a first step we will des
116. we drag over a item in a List for example in a icon area first the cursored item is asked for the permis sion lf the item i e his viewport don t answer true or false the whole List is asked 4 12 2 3 Performing Drop Actions If a operation is permitted by the receivers model you must implement one of the following protocols to per form the correct actions done by the drop operation the default behavior by the framework is to do noth ing Each method should return true or false to indicate the correct finish of the drop action The first parameter is a List of the dragged viewports the second is the cursored Viewport or nil lt anSourceAspect gt lt anOperation gt lt aTargetAspect gt aListOfViewPorts onto aViewPor tOrNil AL true false lt aSourceAspect gt lt anOperation gt aListOfViewPorts onto aViewPortOrNil AL true false default lt anOperation gt aListOfViewPorts onto aViewPortOrNil valueOf anAspect nil Example personsCopyPersonList aList onto aViewPortOrNil self personList addAll aList collect e e model true 4 12 2 4 Highlighting the Cursored Item If you wish to highlight the item under cursor the target Viewport of the Drag amp Drop process must imple ment the following protocol lt aSourceAspect gt ShowTouched true false Example personsShowTouched true In the personlist should be every person highlighted if some object s are dragged from perso
117. 1 132 WS E EE E EE T 181 328 default behavior eesesseenesesesesserreseerssrseee 219 Default Process Connection 80 84 106 111 133 134 136 137 138 139 140 141 142 143 I EE E utnuaaasie Vales iath ola aes apensseotisatis 205 Default ViQW ccecseesscececeeesessessnteeeeeeeens 204 DEFAULT BASE iiciaeceweeicecatiegess 203 defaultBase cececccccceeeeessessctececeeeenenseees 205 defaultBaseName ce eeceeeesseteeeeeeeees 215 CefaultProcess cceeeseessttececeeeeeeeeeens 205 Define filter menu item ee eeeeeeeeee 201 Delegation Model ce 36 221 328 dependent model eceesessececeeeeeeeseees 212 deselect CVENL ce ccccececeeesssssnseeceeeeseeseens 19 dialog oriented ce eeeeesecsececeeeeeseeseeeeees 29 direct editing eecescccececeesesssesstteeeeeeeens 186 Directed Evaluator 0 0 0 0 ceecsesssseeeeeeees 225 Discard all changes menu item 199 Discard all changes toolbar icon 202 Dispatcher 000 89 215 243 246 247 CisplaySelectOr ceceessessesececeeeeeeeseens 214 DS tO csser 26 Domain Manager 0s scceeeerees 89 91 216 Domain Model 000 30 31 49 54 328 Domain Model ASp6Ct ceesesseeeeeeeees 31 Domain Object 30 42 47 96 212 221 241 328 Domain Object classes entry field 208 Domain Process 30 33 42 89 9
118. 1 Status bar The status bar displays information depending on what has been selected in the DPB dialog Process Classes Hierarchy Processes Hierarchy MicFwToolDomainProcess without default base connection and without default view name 5 2 3 Connector manager dialog The Connector Manager dialog is opened from the main menu by selecting Browser Choose environ Application Framework User s Guide A 5 Tools MYND 5 2 Domain Processes Browser 205 ment 3 Connector Manager x Source connector Destination connector Hame Hame VA ST Connector VA ST Connector Type Type Connector for VA ST Connector for VA ST Language Language Smalltalk Smalltalk Environment File Environment File Working Directory Working Directory Cancel 5 2 3 1 Source Destination connectors From the drop down list Choose the source and destination connectors 5 2 3 2 Connector properties 5 2 3 2 1 Name Name of the connector 5 2 3 2 2 Type Type of connector for example Connector for Smalltalk 5 2 3 2 3 Language Programming language of the connector for example Smalltalk 5 2 3 2 4 Environment File Name of the environment file 5 2 3 2 5 Working directory Name of working directory normally vast 5 2 3 3 Modifying connector properties To modify the connector properties In the Connector Manager dialog Click on Edit The Connector Editor dialog appears 3 Connector Editor C
119. 13 Using Framework Objects The most important aspect when using Framework objects are the accessor methods which are gener ated automatically by the Framework Via these methods the Framework controls the Object Behavior typing and type conversion the automatic update reading and writing into Transaction Contexts validation and authorization Because of this its extremly important to make sure that all instance variables used in Framework objects have these generated accessors If you navigate through an Framework object net and you want to makr sure that all changes in these objects cause the corresponding updates you have to touch Framework accessor methods while navigat ing 1 3 13 1 Use of non Framework Objects Add and Delete in Collections If you use collections instead of Framework relationships in order to return the content of a list you should know that changes in these objects are not known to the Framework unless you tell it Because of this each add anObject or remove anObject method must inform the Framework that the content changed For an Aspect called lt listContent gt which returns the collection each changing method should imple ment self aspectChanged listContent 1 3 14 Transactions The most often used configurations of transaction handling can be defined within the property list in sec tions Transaction Main and Transaction Child Where you want to configure your transactional beh
120. 3 1 Introduction Today s Smalltalk applications are often designed according to the Model View Controller principle The Application Framework supports the MVC principle by promoting the separation of responsibilities in the area of presentation views dialog control and models Domain Objects and process logic In this chapter the basic techniques classes and their protocols to be used regularly by application devel opers are described This comprises some aspects of the approach when designing the application as well as the fundamental details of the framework s API Ideally the reader will be skilled enough after reading this chapter to easily build standard applications without using special features like dynamic Controls late model access and Cached Views API information in this section Base API methods are described in this section in detail A subset of all base methods are listed in a table with the listed methods described in more detail following the table The table format is typically similar to the following Type Implementor Method Base method type MicFwClass baseApiMethod Details about the methods listed in the table include the information from the API appendix in the following format MicFwClass gt gt method vA Application Framework User s Guide 3 Programming Reference N D 3 1 Introduction 95 3 2 Domain Object 3 2 1 Overview Instance methods Implementor Messa
121. 47 70 76 219 222 230 Ty PEPA E eee 328 331 authorizePerformUsing aRule 0 75 authorizeRead anAspect using aRule 74 authorizeRead anAspect using aRule ifProhibi tedReturn VAIUC ecccccceceeeeessesenteeeeeeeees 74 authorizeReadUsing aRule 74 authorizeWrite anAspect using aRule 74 authorizeWriteUsing aRule 74 automated Update ccceseesssteteeeeeees 230 Autostart MODS contasceaactactecenngsonedaancnceapactes 204 B BASE vcssoscssieuacessaluandoueecssandsvediescleneiaswuenatevst 203 Base ClASS 0 cceceseesecsccececeeeeessensneeeeeeeens 204 Base Connection 84 205 328 base connections 2 sccasecseericunncenatarsomatancds 207 Basie MONS cassaire 317 basic patternS eeeeeeeeeeseeseseeeesssseserereesssse 47 Behavior tab cccsccccecceesessessnteeeeeeeens 207 breakpoint saconasssiuedsadiniestanvdncincsdgreeadanvaennds 210 Broker 5 26 34 42 219 230 232 328 Broker Mapper ssssHasteasatetecnespacesvezencentebaneee 230 Browse class menu item s s s 200 Browse class menu item eee 200 Browse new net menu item 0 199 Browse new object net toolbar icon 202 Browse View Connectors ccecseeceeeees 83 business flow logic 2 0 0 0 ce eeceessseeceeeeeeeeeees 42 business logic ceeeeseccceceeeeessesenteeeeeeeens 42 business transaction
122. 5 Figure 66 Figure 67 Figure 68 Figure 69 Figure 70 Figure 71 Figure 72 Figure 73 Figure 74 Figure 75 Figure 76 Figure 77 Figure 78 Figure 79 Figure 80 Figure 81 Figure 82 Figure 83 Figure 84 Figure 85 Figure 86 Figure 87 Figure 88 Figure 89 Figure 90 Figure 91 Figure 92 Figure 93 Figure 94 Figure 95 Figure 96 Figure 97 Figure 98 The add new member to club process instance variable cccecceceeeeeeeeeeeeeeeneeeeeeeeeeeeeteeeeees 69 The add new member to club process definition 0 0 eeceeceeeeeeeceeeeeeneeeeeeeaaeeeeeeeaaeeeeeeeaaaeeeeeeeaaeeeees 69 The add NEW member VISW sciecsecctetedeceeleanadencedanduy che sneueckuuuanuedyedesnndeUensennuweeUsurmnudvdvassndvivelbanadeetinbaied 70 MicExampleAuthorizedProcess base connection lt Session gt definition 20 0 eeeceeeeeeeeeeeeeenteeeeeeees 72 Logon window in the Composition Editor eeececeeeeseneceeeeeeeneeeeeeeaaeeeeeeeaaaeeeeeeeaaeeeeeeeaaaeeeeeeeaeeeees 73 MicExampleLogonProcess as child process of MicExampleMaster Process in DPB 73 MicExampleClubMasterView with Logon button 00 0 0 eee eeeeeeee eee eeeeeeeeeeeeeeeeeeeeeaeeeeeeteaeeeeeeteeeaeees 74 Sandemo process DURON ssegar aus sapaceneadesued ennss duhcesbean TE 79 Demo VICO costine iiin aain E EEE EE E E E E RETN 79 Transaction settings Of DemoProcess ooo eee cece ee eeeeeeeeeeeeee cette ee aeeeeeeeeaaeeeeeeeeaeeeeeeseeaeeeeeeseneeeee
123. 7 215 221 Oils icc ce aco at 328 Domain Process classes entry field 208 Domain Processes Browser 19 38 42 64 78 Bory spesmathverstenns 86 92 198 233 243 245 329 Drop down LiSt c ccccecceesessesseteeeeeeeens 121 Dynamic Comtrol c ccceccesessessececeeeeeeeseens 19 Dynamic MenuG scccccssssecceetsoeeeeees 183 dynamic PrOCESS cccccceeesessesseteeeeeeeens 147 dynamic SubMenu cecscccceceeseeeeees 183 E editability sesciasasccatesavacceusyateonsgiountbasuonnee 222 225 Application Framework User s Guide 342 Index editable seeneeeneeenssenesesesesssesssesssrssesserssse 230 embedded part s sssssssssseseseessssssesrsereesssse 186 enabled State ececccceccceceeeeeeeceeeeeeeees 225 enabling ciinii iai 36 Environment File of connector 206 ENVY Based Initialization 0 0 00 239 SEO CAN ING scsieutensitiadeatusdedunntuladcmeteunnseniae 322 Evaluator senini ssieissenisiiisii tonsini 225 Evaluator Chain cccccccsssseseeeeeeeeees 225 Evaluator Chain Head ccccccccceeeees 225 OVEN A T EE EEE 224 228 event NANAIEL eee cecececececececeeeceeeeeeeeeeeees 224 event registration ccecscccceceeeeessessreeees 226 event driven seseseserererererererererererererererrreree 25 event oriented Connection cccccceeees 42 evolutionary ADPrOACN ceeceesceeeeeee
124. 8 1 2 Frameworks Advantages and Risks ots M YN D 1 3 Mynd Frameworks Concepts 1 3 1 Structure Frameworks components patterns are an object oriented reuse technique Ralph E Johnson In addition to using isolated components or libraries Frameworks also enable recurring structures and dynamic correlations to be reused in several applications Frameworks are available on different levels Frameworks for segregating Domain Objects from their storage on databases as well as from user interac tion have proved to be useful for quite some time The use of partially complete timeless architectures which provide patterns for business transactions and objects with their related tasks from analysis right through to implementation is becoming increasingly important Application specific Frameworks which for instance simulate fundamental concepts of the insur ance or finance industry are either already being used or are being developed Initial solutions are also available in the field of replication at the level of user transactions Controller Controller can send Accepts and manages all 4 update messages to view interactions with input gt devices such as keyboard mouse and network View Every view shows a model an makes the interactions coming from the controller visible n Model can send update messages to view y Controller can 1 iew can access accesss Model and Model m
125. API 283 delete Delete the relationship maintained by the receiver Also delete the inverse references MicFwNRelationship gt gt delete Delete the relationship maintained by the receiver Also delete the inverse references MicFwPersistentObject gt gt delete Register the receiver for a delete from the underlying persistence medium As aresult the receiver will get the isDeleted property The actual delete will happen on the next transaction context commit Isolate the receiver from its object net remove the receiver from all relationships and remove all targets for relation ships of the receiver MicFwPsExtentldentifier gt gt delete let the persistence manager delete the extent identified by the receiver from the underlying persistence medium MicFwPsObjectidentifier gt gt delete delete the persistent object described by the receiver MicFwRelationship gt gt delete Delete the relationship maintained by the receiver i e remove all references to objects Also delete the inverse references MicFwTrNRelationship gt gt delete Delete the relationship maintained by the receiver Also delete the inverse references MicFwPersistenceManager gt gt deleteAllinstancesOf aPersistentClass Bulk delete all persistent data for lt aPersistentClass gt from the underlying persistence medium This should only be used if the sender handles the cleanup of instances in the image Otherwise use MicFwPer sistentObject gt gt delete MicF
126. Application Framework User s Guide aA 7 Multi Language Support MLS MYND 7 3 The MLS Data Editor 249 The system initially asks for the Locale Category to which the new Locale Entity is to belong it then prompts a name The name can either be selected from the list or a new name is entered via lt other gt When the name has been entered the system asks for the Locales for which this Locale Entity is to be cre ated The list displays the standard Locales which can be processed via Extra gt Edit standard locales And finally the system asks whether the user wishes to create a new csv file if the system does not find a suitable file in which the data would fit in the csv search path 7 3 1 1 8 2 Delete locale entity permanently This can be used for permanently deleting a Locale Entity of a specific language territory combination from the current memory system All data are lost and these data can only be retrieved in the form of an old version of the class in a library based system 7 3 1 1 8 3 Remove locale entity from context The selected Locale Entity is no longer added to the selected context when this is instanced 7 3 1 1 8 4 Make locale entity visible in context A Locale Entity is added to the selected context when the latter is instanced The data of the Locale are then available in this context 7 3 1 1 8 5 Store entity in csv A Locale Entity of a specific language territory combination can be stored in an existing csv
127. ArrayOfParameters gt for the embedded parameter markers in the statement Answer the number of rows affected MicFwPsObjectidentifier gt gt existsInDB Answer true when the receiver exists in the underlying persistence medium MicFwPersistenceManager gt gt extentidentifierFor aClass Answer an extent identifier for lt aClass gt MicFwAbstractPersistenceManagerRdb gt gt extentidentifierSQLFor aClass Answer an extent identifier sql for lt aClass gt MicFwRdbStmtExecESQL class gt gt for aPersistenceManager withAccessSet anAccessSetClass Create an instance of the receiver that communicates with aPersistenceManager and references an instance of anAccessSetClass for ESQL access MicFwRdbSQL Clause class gt gt from aTableArray where aWhereClause Answer an instance of the receiver that represents aWhereClause The table names with optional aliases referenced in aWhereClause are given in aTableArray MicFwPsExtentldentifierSQL gt gt from aTableList where sqlString Set the sql clause for the receiver MicFwPsExtentldentifier gt gt aA Application Framework User s Guide MYND Appendix A API 287 get Let the persistence manager load the extent identified by the receiver from the underlying persistence medium MicFwPsExtentldentifierSQL gt gt get Let the persistence manager load the extent identified by the receiver from the underlying persistence medium resolved from the cache MicFwPsObjectidentifi
128. Aspect Remove the MetaControl list registered for lt anAspect gt If there is none do nothing MicFwNRelationship gt gt removeOrder The order clause for the handled object was removed Remove the sorted order from the target collection MicFwTransactionContext gt gt removeVersionsFor anAspect in anObject Remove all version information for lt code gt anAspect lt code gt in lt code gt anObject lt code gt in all transaction levels Information will also be removed in child contexts param anObject the object containing the desired aspect param anAspect the aspect for which to remove version information MicFwTransactionContext gt gt removeVersionsFor anObject Remove all version information accumulated for lt code gt anObject lt code gt Information will als be removed in child contexts param anObject the object for which to remove version information return true when a version has been removed in one of the contexts MicFwRabIntegrity Violation gt gt repeat Set the receiver to be retry when the active handler has terminated on the next lower level MicFwPersistenceManager gt gt resetCache Reset the internal cache object MicFwPersistentObject gt gt resetRelationships Send resetLoaded to all persistent relationships of the receiver This causes the relationships to be resolved from the persistence medium the next time they try to get their target s MicFwDomainProcess gt gt resetTransactionClose Remove
129. CESSOM icessactecsneiiinessedcaerodaauensones 38 Model ASP6 Ct c cscccececeesssessnseeeeeeeens 230 Model Connection 37 221 242 243 Model View Connector 32 33 34 35 190 222 P PERRO EE REE TEE PE BEER DE OREO PEER ie PerrODD 329 Model View Controller ceeseesececeeeees 42 MOdeIATCONNECHION ceccccceeeeeee enone 19 20 modelChosen ccccceceeeseesesseceeeeeeseeeeens 20 MOdelVIEWCONNECHOLS cceecseceeeesteeeeeees 19 Multi Language System 237 multi tier applications eseeteeceeeees 21 Multi line EGIV sesvseanss sasecssieaxedese ssdecseunedbcneses 113 Multiple Select List eee eseceeeeeeees 120 MULTIPLE_ CHILD _ PROCESG 203 MVC yessiainrs 29 41 42 95 219 220 328 329 N NaMe esni aaa 203 Name of connector ssesssssessssesseresesssee 206 Name Value COIUMMNS ccccsscecessseeees 203 naming convention ceee 84 102 214 National Language System ccc08 237 navigating through a connected object 34 navigation sacs eiscacns tataeadsashecstnasasrarisiaersuisoers 31 nested transaction cccceeeessesetteeeeeeeees 39 NEW E E 19 newMetaControlListForAspect 00 19 NES oeae eee ee 237 243 non Framework Objects ccceeeceeeeeeee 38 nonvisual pats ccccscssrannedeneensesanioatearies 89 215 Notebook srar estinieee Heed he 223 Notebook Page 00 144 215
130. Class X X X X X Application Framework User s Guide aA 5 Tools MYND 5 2 Domain Processes Browser 203 PROPERTY MAIN_ CHILD_ MULTIPLE_ DEFAULT_ BASE PROCESS PROCESS CHILD_ BASE PROCESS Viewport Xx X X X X Base class X MLS context X MLS supercontext X Default view xX Max instances X 5 2 2 10 2 Transaction properties displayed in column Name Transaction properties can be defined for the following types of transactions Transaction Main e Transaction Connection e Transaction Child The transaction properties are only displayed if they are defined Transaction properties can only be defined as shown in the table below PROPERTY MAIN_ CHILD_ DEFAULT_ BASE PROCESS PROCESS BASE Transaction Main properties If defined Transaction connection properties If defined Transaction child properties If defined If defined Transaction properties are defined by setting the property Transaction handling to defined Transaction i Hone C Inherited Available transaction properties are the same for Main Connection and Child The available properties are show in the following table TRANSACTION PROPERTY if Transaction handling Defined Autostart mode Use own context Use parent context Isolate mode Persistence context Transaction context Hierarchical mode 5 2 2 10 3
131. Command Control ccceccceecceeeeeeseseseeees 33 command EXECUTION cceeeeeeeeeeeeeeeeees 220 Command Request Event ccccceees 221 COMMI tesdvocerseeivstetesesnaisaiviiebadeieedavadeateeseses 57 commit a transaction ee 98 278 COMMIT onnmerniarn ienn ara a n 57 COMM ItANdCIOSE n esseseseseseserererererererererrrerrreree 86 commitAndCloSeProcess ccecce 19 commitAndCloseView eee eeeeeeeeeees 19 57 COMMON problems cccceceeeseeserteeeeeeeees 87 Composition Editor 42 53 90 102 214 CompoundMessage ceceeeeserteeeeeeees 258 CompoundString ceeeeesesseeeceeeeeeeeeees 258 configuration MAP skis ssicsisccversascseessaciiverdancevs 264 CONNECIANCOPEN cccccececeeessesstteeeeeeeees 223 connecting views and models 89 215 CONNECTION cc ceeeececcccccceseeeeseeseeseeees 198 205 Connection MENU cesseceeessseceeessteeeees 200 Connection NaMe 20 38 205 CONNECHIONNAME ceeeeeeecececeeeeeeee 19 214 CONNECHIONNAMEA ccccccceeeeseeseeeeeseeeees 20 Connector 32 33 34 35 37 83 190 205 209 22 Me nenna 241 243 245 246 328 Connector Editor cc cceeseesceeeeeeeeeeeees 206 connectorName 10 cece ceeeeeeseecccececeeeeeeseeees 215 Connectors BroWSef 00c00e 55 83 86 Container Details cc eeeeeeceeeeeeee 128 214 Container Details Column
132. Connectors Browser Displayed in the column of the Base Connection in question is Cause The Connection is empty The Domain Process is responsible for attaching a valid Domain Object to the Connection via the model write accessor Problem 4 When entering data in the view no instance variable can be seen in the TransactionsBrowser even though its contents should have changed and the Domain Process has started a Transaction Context View Display in the Connectors Browser In the column in the List below no entry corresponding to the name of the instance variable can be seen for the Connection in question Cause The name of the widget was not entered in the GUI Builder e g the of VisualAge according to the conventions with underlining following and was therefore not registered when starting the Domain Process Problem 5 When leaving the entry field the Debugger appears with the message Inthe Transactions Browser the instance variable cannot be seen even though its contents should have changed and the Domain Process has started a Transaction Context Application Framework User s Guide lt gt 2 4 Quick Tour of Tools 87 View Display in the Connectors Browser For the Connection in question a Domain Process is assigned and all accessors are registered Cause The name of the widget does not correspond to a method or instance variable of the Domain Object Either an incorrect Domain Object was placed in the Connectio
133. DomainProcess gt gt performAbortAndClose Enforce close of transaction and corresponding view of the receiver and all children Transactions are aborted A permission to close is neither from the receiver nor it s children asked MicFwDomainProcess gt gt performClose Enforce close of transaction and corresponding view of the receiver and all children Transactions are closed as returned by commitTransactionByDefault No permission is asked via the canClose protocol MicFwDomainProcess gt gt performCommitAndClose Enforce close of transaction and corresponding view of the receiver and all children Transactions are committed No futher permission is asked via the canClose protocol MicFwDomainProcess gt gt permitsPerformAccessTo aspect Answer the authorization to perform lt aspect gt MicFwModelObject gt gt permitWriteDuringReadWhile aBlock Set the permission flag for write during traced read while lt aBlock gt is executed Please use lt writeDurin gReadlgnored gt MicFwAbstractPersistenceManagerRdb gt gt persistenceCompare aPersistentObject Compare the values of aPersistentObject with the persistent representation Signal a MicFwPsCom pareConflict or a MicFwPsDeletedConflict for any changes Else signal nothing and answer self CAUTION You must not perform any persistent relevant actions db accesses in the exception handler blocks MicFwAbstractPersistenceManagerRdb gt gt persistenceCompare oneObject to a
134. Drop Runtime Image Drag amp Drop Adapter Interaction Platform GUI Enhance Visual programming mnemonics X ments Development custom parts development exten sions Interaction Platform GUI Enhance Visual programming mnemonics X ments Runtime custom parts runtime parts Interaction Platform GUI Runtime VA Platform Adapter X Application Framework User s Guide 8 Creating Runtime Executables for Distribution MA 264 8 2 Organization of Application Framework MYND Map Name Contents Runtime Interaction Web Web Connection Adapter X Obsolete Downward compatibilty layer X Service Authorization Authorization X Service Multi Language Develop Mis data editor and development ment extensions Service Multi Language Runtime Multi Language Support runtime X parts Service Multi Language Persis Mis Interface persistence develop tence Interface Development ment extensions and POM classes Service Multi Language Persis Mis Interface persistence runtime X tence Interface parts Service Validation Validation Adapter X Tools Process Browser Develop Domain processes browser devel ment opment extensions Tools Process Browser Runtime Domain processes browser runt X ime parts Tools Runtime Fw tools runtime base map X Prerequiste Applications Component Applica
135. E sans 78 2 4 2 DOVOM E nsa E E Dieta laceereectdeeieta ede encaebene 78 2 43 TEStING ANG DODUGQING seoses Fe vaicudysaes E ei aics dad fae anes Ait dainege EE 82 2 5 Connect to models using Non Visual Parts ccceesssseeceeeeeeeeseceeeeeeeeessseeeaeeeeeeees 89 2 5 14 DOMAIN PLOCESSOS iiuna ai a Ea aa ni aana a aia aa TASA an Eaa a 89 2 02 VIGWPOMS iico iir inini n aE EA E TEE S TNE ATERRO nie ee 89 25 3 Aspect Connections rrnerseinaa esse aa ves ase date Tans nt peel ane a aaa EE EAA ncaa ne vadwabdnputsewatbdngsteeee 90 2 5 42 EXAMS iina ade tiyeivig ii Wa daa bonged AA thas asds AE AE A dpatade adie esc 90 Programming Reference a cecvetivezescesvetandakentiexecoqsudeaassugssxexsesaeeedonnsececnj ins davnedenans 93 3 17 MOCO oirrese cea E EEEN E EEEE E EEE eee ani eee Soe 95 3 2 Domai ODjeCi ereiaro e e edanean a Eae E eeen Ga ei aeai 96 3 2 1 Overview Instance methodS cece cece cee eeeeee eee ee eee cette eee ea aaa aeaaeee cesses ea aaaaaeaaeaeceeeeeeeeeeeeeeeeeeeeeenaaaees 96 3 222 METHOD GESCrIPUOMNS AA A A N A E E A slagueas naausbedte 96 3 3 Domaih Process son aeee G EE E E E E EEEN 97 3 8 1 Overview Glass Methods snicecanctscatantetdacisxsdeadendantndecwieanlaveuts sundae a a aaa ai a AA Aaa EE 97 3 3 2 Overview Instance methodS ccceeceeeeeeeeeceee eee ee cece eee se eee eaaeaaeeeeeeeeeeeegeeeeaaaaeaeeaeeeeeeeeeeteceeeeeseeseaaees 97 3 353 Method GESCrIPUONS x scsscsvesencuesansat
136. ForAspect anAspect An event like notification that the receiver is ready for model view interaction under Aspect lt anAspect gt View systems will usually respond by setting the input focus on the corresponding Control MicFwDomainProcess gt gt startinteractionForAspect anAspect inConnectionNamed connectionName This method should be called if the process is ready to activate model view interaction under Aspect lt anAspect gt Using this method lt anAspect gt can be in the model of the Connection specified by lt connec tionName gt Because of this you can reach each Aspect of each model available in the Connector with this method View systems will usually respond by setting the input focus on the corresponding Control MicFwDomainProcess gt gt startinteractionForAspect anAspect This method should be called if the process is ready to activate model view interaction under Aspect lt anAspect gt View systems will usually respond by setting the input focus on the corresponding Control MicFwDomainProcess gt gt startTransaction Domain processes which won t open a ModelViewConnector and a view respectively are able to start transaction handling by sending this message MicFwDomainProcess gt gt stayOpenWithParent This method has the effect that when the receiver is requested to be closed by a parent business which is going to be closed and the receiver can be closed but not the parent then the receiver also stays open if this m
137. Framework Logger To start the logger select the Menu item Browse Log from the Menu micFrameworks The Logger offers insight into the processes in the framework The reason for the walkback described above is recorded with the Severity Error in the Logger The text states that the attempt was made to assign a different Domain Object to the Connection that was declared in the DomainProcessesBrowser Framework Logger ol x Logger M Logger active I Log to file 4 Fa The linking of new Domain Objects to Connections took place in the reimplemented API method of the class Reviewing the method s code it shows that the Domain Objects were switched The attempt was made to link the object to the Connection and the object to the Connection After switching the two Domain Objects transactionStarted Application Framework User s Guide 2 Tutorial PMS MicADD 82 2 4 Quick Tour of Tools self conn DemoBase new self init DemoInitBase new it is possible to open the DemoView 2 4 3 3 Browsing Aspect Mappings Now the Debugger tells you that a method named nameLabel was missed after clicking on the button StartDemoProcess After resuming click the resume button in the debugger tool a lot more missing accesssors are notified Then the view appears Se Window BE No data appears in the List even through the method in the class was re imple mented Furthermore the Label widge
138. FwAbstractPersistenceManagerRdb gt gt optionReadLimit aninteger Set the read limit for retreival operations This limit is used on object retreival operations The value 0 sig nifies no limit This is currently not supported This option has no effect MicFwNRelationship gt gt orderAscending Define the receiver to be sorted on the attributes named in arrayOfSelectors in ascending order The attributes are assumed to be base attributes not relationships MicFwPsExtentldentifier gt gt orderAscending arrayOfSelectors Define the receiver to be sorted on the attributes named in arrayOfSelectors in ascending order The attributes are assumed to be base attribute symbols for the extent target class not relationships MicFwNRelationship gt gt orderBy selectorsOrClause Define the sort order for the receiver selectorsOrClause can be either an array of selectors optionally postfixed with asc or desc designators or a previously created MicFwOrderClause Answer the order Clause MicFwPsExtentldentifier gt gt orderBy selectorsOrClause Define the receiver to be sorted on the attributes named in arrayOfSelectors For each attribute the sort order can be defined separately by adding asc or desc e g name asc number desc MicFwPsProjectionDescriptor gt gt orderBylIndexes indexesOrClause Define the receiver to be sorted on the indexes named in indexesOrClause For each index the sort order can be defined separately by addin
139. FwPersistentObject gt gt allPersistentRelationships alswer a collection with the relationship objects for all persistent relationships in the receiver MicFwPersistentObject gt gt allPersistentRelationshipsDo oneArgumentBlock evaluate the oneArgumentBlock with the relationship objects for all persistent relationships in the receiver MicFwApplicationObject gt gt allRelationships Answer a collection with the relationship objects for all relationships in the receiver MicFwRadbAbstractDirectStatement gt gt allRowsDo aOneArgumentBlock Fetch all rows of the receiver and evaluate aOneArgumentBlock with each row as argument Close the cursor afterwards MicFwPsExtentldentifier gt gt answerSetSize Answer the rowcount of the answerset described by the receiver from the persistence medium MicFwPsExtentldentifierSQL gt gt Application Framework User s Guide ew s 274 Appendix A API MYND answerSetSize Answer the rowcount of the answerset described by the receiver from the persistence medium MicFwPsProjectionDescriptor gt gt answerSetSize Answer the rowcount of the answerset described by the receiver from the persistence medium MicFwRabIntegrity Violation gt gt answerSetSize Answer the rowcount of the answerset described by the receiver from the persistence medium MicFwNRelationship gt gt any Answer a target object or lt nil gt If there are more than one target objects in the collection it is not ensured that multip
140. ID_ The Default Base Connection will be used 3 5 12 1 2 Supported variations 3 5 12 1 2 1 All parts of partName specified connectionName_ accessorMethod_ 3 5 12 1 2 2 connectionName not specified VOID_ accessorMethod_ 3 5 12 2 Supported Subaspects e Visible Boolean Application Framework User s Guide aA 3 Programming Reference 3 5 View Parts 117 3 5 13 Mic Standard Status Bar Part 3 5 13 1 partName 3 5 13 1 1 Syntax connectionName_ accessorMethod_ If connectionName is omitted or declared as VOID_ The Default Base Connection will be used 3 5 13 1 2 Supported variations 3 5 13 1 2 1 All parts of partName specified connectionName_ accessorMethod_ 3 5 13 1 2 2 connectionName not specified VOID_ accessorMethod_ 3 5 13 2 Supported Subaspects e Visible Boolean Application Framework User s Guide 3 Programming Reference ots 118 3 5 View Parts MYN D 3 5 14 List 3 5 14 1 partName 3 5 14 1 1 Syntax connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethodsS ction_ displayMethodItem_ The default presentation method is The content of this Control is aCollection The selection of this Control is anObject If connectionName is omitted or declared as VOID_ The Default Base Connection will be used 3 5 14 1 2 Supported variations 3 5 14 1 2 1 All parts of partName specified connectionNameContents_ accessorMethodContents
141. Informed When a Notebook Page is About to be Left or About to be Entered You should use enterInteractionForAspect comingFromAspect of and or leaveInteractionForAspect goingToAspect of These methods can also be used to prevent the change See Dynamic Notebooks FAQ 7 Transactions FAQ 7 1 How do commit an application with commitAndBegin and open a new transaction level for all processes that had an open transaction level at the time of the commitAndBegin The main process executes commitAndBeginTouched For each child process the following method is implemented processClosed required close code other required code self setProcessFlaggedUntouched this is internal If the flag is not set to untouched when a process closes then a new transaction will be opened with lt com mitAndBeginTouched gt for all processes that had an open transaction even if the process is currently closed FAQ 8 ViewPorts FAQ 8 1 How can use an incompatible ViewPortRequestBroker Tools such as the Domain Processes Browser are written using the Application Framework Therefore a compatible VPBroker is must be available The tools require MicFwCachingViewPortRequestBroker in the development image If an incompatible VPBroker was created then during development an additional mapping must be implemented and a differ ent dispatcher used The Domain Processes of the tools are marked as lt isTechnicalDomainProcess gt All request
142. MOM E E causa ceases decade faigae OE dad a erecta anaes tay taeda ieee 115 35 12 MiG Status Bar PAM ik cisccl cide cctcadeaciclhecenteimecacssesenslesmat caaaddaeedetseusedeadeesPausesegavesceeveccuddacnes lt adsadeeveucee 117 9 5 13 Mic Standard Status Bar Part eisiccocciestecocuessuneeccuxerseudcesesancdaveasbemcctiiesespbeitatesseecenelsapucdiads IESENE 118 Be WA MASE gece EE D EEA E T A EE E E E sei cecne ee AE A E E E EEE E EN E AET 119 3 5 15 Multiple Select Lietus Gated vue eiss KERETE A EEE EEE ONEA EE SE ASEA 120 o0 6 DrOp GOWM LIS beian E E rains ee EAEE 121 95 17 SGOMDG BOX te vwiecseeseuneaieands sedacuetaawedienesvamedaus aaa aaa EEN aA aa AAEE 122 35 18 G0ntainer ICON Aroa sienna anaE O OE E ROEN 124 9 5 19 Container ICOM List sureni nanora e a a E E A AA A A AE EEEREN 125 3 5 20 Container Flowed ICOn LiSt 0 cccccesccscceseeceeceenceesecesedeesuecneccensneceeseenwecnesseusenseedeecavseseaeeeesceseeceecse 126 9 5 21 Container ICOM TOC kssin tinaaa aE E svemncaeies AE wabeibedtebadhSeabien witeieeeb bead 127 9 5 22 GOMtAING Details iicechccdcccesseccodizactcccauses as sauengssadasunadansecuataseucabetewcuadsnuss iseadssaanaadaditasseootmadesunsagswardkected 128 3 5 23 Container Details Tree marse nen iii ieni a cbeeedelncuiducuelicdsewseatedeeewaccuu ces sakuelactebceltdecereeced 129 3 5 24 Packeting Container Details ceeccccceeesecceeeeeeeecceeeeeceeeeensecaeeeesaaeaeeeesseaaeeeesneeaeeeeesnseaeeeeenna
143. MemberPr MicExampleMasterProcess DEFAULT_BASE session MicExampleSession lt generic gt M L f MirFvamnieMemherProreee Process class 2 ase Main Process Default base J Motivated t Undefined EE e e Child process Base X Non Activated L Not editable MicExampleAuthorizedProcess with default base connection lt session gt and without default view name The following methods are required to initialize the DP s and DO s with the session MicExampleAuthorizedProcess gt gt initChild aProcess aProcess session self session MicExampleAddNewMemberProcess gt gt transactionStarted Create new member and open member process on it theMemberProcess self initChild theMemberProcess self member self newMember MicExampleClubMember new theMemberProcess clubMember self newMember MicExampleMasterProcess gt gt newMember theAddToClub self initChild theAddToClub self addNewMember theAddToClub club self club yourself MicExampleMasterProcess gt gt edit edit the club member that is currently selected in the parent theMemberProcess self initChild theMemberProcess self member theMemberProcess clubMember self currentMember yourself MicExampleMasterProcess gt gt transactionStarted super transactionStarted self club session self session
144. Menu item label amp accelerator text button label radio button label Toggle Button label e The key is static and can be translated e These labels display functionality which lies in a Domain Process e textual structuring references e g static label for an entry field group label The key is static and can be translated These labels show a part of the structure which lies in the Domain Objects instance vari ables or relationships to other objects e Hover Help texts or help texts for static texts text entry fields or buttons The key is static and can be translated e This data explains the structure of a model e logical information e g sorting order in a List e The order is static and can be translated e Model information is formatted in some way e Data which is from the model e indirect textual model contents via external key e g error message The key is static and can be translated An error message xxx must be displayed e direct textual model contents a static text which displays a model content e Is not static and can t be translated and the model must offer Locale information e g code page of original data to display the data in a correct way appearance of model content Boolean or rule result e Is static and can be translated Application Framework User s Guide aA 7 Multi Language Support MLS MYND 7 2 MLS and Application Framework 241 A static string which represents a m
145. MicFwAbtContainerIconAreaViewImplementation MicFwAbtContainerIconListViewImplementation icFwAbtListViewImplementation icFwAbtMultipleSelectListViewImplementation icFwTextCollectionControlImplementation MicFwGroupControliImplementation icFwAbtCompositeViewImplementation icFwAbtGroupBoxViewImplementation icFwMainWindowControlImplementation MicFwAbtShellViewImplementation MicFwPageControliImplementation icFwAbtNoteBookPageViewImplementation icFwAbtPortableNotebookPageViewImplementation MicFwSingleAspectControliImplementation MicFwAbtContainerDetailsColumniImplementation MicFwChoiceControlImplementation icFwAbtComboBoxViewImplementation icFwAbtDropDownListComboBoxImplementation icFwAbtRadioButtonSetImplementation icFwAbtSpinButtonViewImplementation MicFwRangeControlImplementation icFwAbtScaleViewImplementation icFwAbtSliderViewImplementation MicFwStaticControlImplementation icFwAbtLabelViewImplementation icFwAbtSeparatorViewImplementation MicFwTextControlImplementation icFwAbtTextViewImplementation MicFwToggleControlImplementation Application Framework User s Guide 6 Customizing ew 228 6 2 Internal Design MYND MicFwAbtToggleButtonViewImplementation MicFwCommandCollectionControlImplementation MicFwAbtCwMenuViewImplementation M
146. NewUser self user aNewUser MicExampleUser new self session currentUser aNewUser 2 3 6 7 4 Modify Club view Add a button on the Club view for the logon ioj x File Edit View Layout Connections Options Help UltraTools I ze amp Post if e Aoje eja ah dee 2 E E zox 3 Members New al Edit Ep Delete Tel B n bet Ok T Cancel defaut_openLogon_ selected 1 The Logon button is named default_openLogon_ In the DPB Define the connection to 2 3 6 8 Authorization rules Now that we have gone through so many preliminary steps what about the real authorization mecha nisms They are actually very straightforward and far less trouble than our primitive user management scheme 2 3 6 8 1 Attribute authorization API Domain objects actually their classes as authorization is class based understand the following basic messages to define access rights e authorizeReadUsing aRule Authorize read access to all the object s Aspects based on the result of evaluating lt aRule gt lt aRule gt is either a block or a message which can have a value of true to allow access or false to deny access e authorizeRead anAspect using aRule Authorize read access to lt anAspect gt of a Domain Object based on the result of evaluating lt aRule gt e authorizeRead anAspec
147. OGGIS esensi raissa i ai EEE ERA EEEE EAEE TAEA 31 1 3 6 Domain PrOCESS cuoricini nnna a aaa e EE Eae aaa EAEN aa ETO 33 1 3 7 Attaching Domain PrOCOSSCS 5 nunsio ane a LE AAAA ATE ENTIE EARE 33 My Be VIG WOM cae chest den a E E E EE EEE EE E E 34 139 CONMECHING ObDjecis to VISWS siccsvisisdecehat vacdegesawnndegesaasbedeeelasmndcgesauad ccaysdsaaccuysewsscegeedvnds cunlvesieuecurseuedadeses 35 13 10 The Model View Connettori saene T E E S 35 eE E E A E E E A E E A T ANAA A O E 36 1 3512 M del Connections aiei siennes ea aaa a aa a aaae E eaaa a EEEE SE EAEAN aa ad Eaa aa 37 123 13 Using Framework ODJECIS ceniuiieiit rannis nnie E E AR EEE SEAE ENERE REAA 38 1 38 14 Transaction S areanssei sassen Eaa EAS Aa rE aa EE O 38 1 4 Mynd Frameworks Architecture cesctsceticetsentaeteapetea tars ceestnatiat tein cali islieaeaaneematentay 41 WAM OVEN VIC W EA chan ses Mesildigs saaiaawat nna A nedeh abet shay E T E E E A EAT 41 1 4 2 Abstractions and AdaplerS oroceciiircirniirin n E EEEE EEEE ETENEE 41 1 4 3 Refined Model View Controller as essrrrirsnrsnaserinnni neninn naran ENEAN ESNEA NAA AARE 42 VA As TOONS E A E A E E E E E E T 42 We Ay MMO NE ACS S inanar iari aaa a aa Eaa a a Eao dg ate a E aa eaae Ea ese nea 42 aA Application Framework User s Guide MYND Table of Contents 5 VAG SONICS A A OE AEA A bona A AA EA 43 124 Le merac ion AD APLC hecna E E ERE OAA EA 43 TUONA E T 45 21s 15018 816118 e mnrth ne ee remris tr eter nears
148. OID BUTTONS beddedPart defaultItem toggle UTTON ViewPortB gt gt columnlEm MicFwEmbeddedMetaPart new accessorStri type NULL ing initiallySel yourself beddedPart lected true Button Application Framework User s Guide 4 Advanced Programming Reference 188 4 8 Group Controls as M YN D 4 9 Collections A special but frequent scenario is the use of instance collections which can be displayed in all List like Controls Normally a collection of Domain Objects will be connected by means of some kind of Collection Holder which maintains the collection this must be implemented like any other Domain Model to be con nected to a view via Application Framework This class or the corresponding viewport class must understand the and possibly These are called under the following circumstances Any time the user selects a List item the message will be called the param eter passed to this method is the selected object if the control s abstract type is or a collection with the selected objects for e Each time the List is to be updated this is the case immediately after view creation or when the control gets the focus or when the user selects an item displayed in the List the message is sent e The message can also be used by the application programmer to implement a default selection when the List appears the first time As mentioned earlier it is not
149. Object Domain Process was not found The class method which contains the class name of the corresponding Domain Object Domain Process as a String Application Framework User s Guide MA 316 Appendix B Trouble Shooting Guide MYND was not implemented was implemented as an instance method or the name of the Domain Object Domain Process was accidentally misspelled e the name of the Domain Object Domain Process was not enclosed by apostrophes A second possibility to connect a Viewport to a model is to declare it in the DomainProcessesBrowser at the Connection of the Domain Object Domain Process to its parent Domain Process You have to check this as well You confirm a command control for example a button with the result that a Debugger with the message appears even though you have implemented the method in a Viewport TS 11 Visual Age Organizer TS 11 1 A menu item is not shown VA Organizer has an option to display Full or Basic menus To display Full Menus From the VA Organizer Select Options Full Menus aA Application Framework User s Guide MYND Appendix B Trouble Shooting Guide 317 Application Framework User s Guide MA 318 Appendix B Trouble Shooting Guide MYN ote D Appendix C Frequently asked questions Application Framework User s Guide MA 320 Appendix C Frequently asked questions MYN This section provides the answers to the most frequently asked questions abou
150. POM is not connected to the database Opens the NT database connect dialog MicFwPersistenceManagerOdbc gt gt connectWithDriverPrompt Connect to the ODBC driver Let the driver prompt for all applicable connection information using lt data SourceDescription gt values as defaults Answer true if the connection was established false otherwise MicFwPersistenceManagerOdbc gt gt connectWithoutPrompt Connect to the ODBC driver It is assumed that sufficient information for the connect is either available lt dataSourceDescription gt instance variable or through environment settings No prompting will be done by the ODBC driver Answer true if the connection was established false otherwise MicFwPersistenceManagerOdbc gt gt connectWithUser userName password aPassword Connect to the ODBC driver with lt userName gt and lt aPassword gt any additional information necessary for the connect must be available either from the lt dataSourceDescription gt or throughthe environment No prompting will be done by the ODBC driver Answer true if the connection was established false other wise MicFwViewPort gt gt contextAtConnectionNamed aSymbol Return the mlsContext of the Connection named lt aSymbol gt MicFwViewPort gt gt converter See chapter MLS for details MicFwApplicationObject gt gt convertValues Make the receiver conform to the type declarations that were made on the class level by sending as lt type gt to all decl
151. PersistenceManagerRdb gt gt registeredExtentAt aName ifAbsent aBlock Answer the registered object query extent stored as aName The result is of type MicFwPsExtentldenti fier MicFwAbstractPersistenceManagerRdb gt gt registeredExtentSQLAt aName Answer the registered SQL query extent stored as aName The result is of tyoe MicFwPsExtentldentifi erSQL MicFwAbstractPersistenceManagerRdb gt gt registeredExtentSQLAt aName ifAbsent aBlock Answer the registered SQL query extent stored as aName The result is of tyoe MicFwPsExtentldentifi erSQL MicFwAbstractPersistenceManagerRdb gt gt registeredOrderAt aName Answer the registered order clause stored as aName The result is of tyoe MicFwRdbOrderClause MicFwAbstractPersistenceManagerRdb gt gt registeredOrderAt aName ifAbsent aBlock Answer the registered order clause stored as aName The result is of type MicFwRdbOrderClause MicFwAbstractPersistenceManagerRdb gt gt registeredProjectionAt aName Answer the registered object query projection stored as aName The result is of type MicFwPsProjec tionDescriptor MicFwAbstractPersistenceManagerRdb gt gt registeredProjectionAt aName ifAbsent aBlock Answer the registered object query projection stored as aName The result is of type MicFwPsProjec tionDescriptor MicFwAbstractPersistenceManagerRdb gt gt registeredStatementAt aName Answer the registered direct statement stored as aName The result is of typ
152. Request Event bound to a Notebook Page Control and is triggered when the page is exposed and gets the input focus It holds a is the abstract superclass for all events which are concerned with the syn chronization of model and view is the major event for propagating changes in the model world to the view Its method filters the incoming model events to the symbol anAspect retrieves the updated Aspect data and state information to control visi bility sensitivity editability etc of the corresponding view widget and invokes the correct update ser vices of the corresponding Abstract Window is an event which is triggered by the models if the validation mechanism is active to convert the result of validation into visual signals in the view e and hook Platform Events of the view and retrieve help information from the Viewport which mainly communicates with the widget for which the help is requested is the major event for propagating any editing of Object Aspects performed by the user in the view to the corresponding model It is hooked to a Platform Event of the correspond ing widget Its trigger method retrieves the actual data from the widget via the Abstract Window and Platform Adapter and calls the Viewport to set the corresponding Aspect to the retrieved value is similar to the Object Update Event but it does not necessarily perform an Application Framework User s Guide 6 Customizing MA 224 6 2 Internal Design
153. Selection To make the Connection protocol for storing the selected member compliant with the protocol used by List Controls we need to implement two methods in a new Viewport for the master process 2 3 5 4 5 1 Create Viewport We need a new Viewport because the methods contains view driven code The creation method we have to execute is MicFwViewPort subclass MicExampleMasterProcessAtDefaultViewPort instanceVariableNames classVariableNames poolDictionaries 2 3 5 4 5 2 Bind the Viewport to the Process The Viewport should be defined at the connection named of the club process It is the same proce dure as we made before for the club member So Domain Processes Browser should look like the follow Application Framework User s Guide PMS MICADO 2 Tutorial 2 3 Beyond Basics 65 ing Ea ojx Browser Process class Connection Options Rite Ble aj ele E PMS MICADO Process Classes Hierarchy Processes Hierarchy Hame Value E Te MAIN_PROCESS Hame default Class MicExampleMasterProcess MLS context lt none gt MLS supercontext lt none gt Default view lt none gt MicExampleMasterProcess 2 MicExampleMemberProcess Transaction Main Transaction handling Defined lt Autostart mode 4 Use own context _ v Use parent context _ x Isolate mode 4 Persistence context K Transaction context 4 E Hierarchical mode 4
154. T Connector i 6l F c Dest Connector WA ST Connector gt p4 Fn fn Pm 5 2 2 1 Title bar The title bar displays Name of the process that the DPB was opened on Name of the session file if any 13 Domain Processes Browser on MicFwToolDomainProcess Current session file D session xml 5 2 2 2 Submenu Browser Open Session Save Session Save Session as Choose Environment Ctrl E Refresh Environment Browse new Net Ctri A Close Cte 5 2 2 2 1 Open session Opens the Load from file dialog Double click on a xml file in this dialog to open a session that was pre viously saved to the xml file 5 2 2 2 2 Save session Saves the session to the xml file This allows a DPB session to be saved without actually implementing the changes in VA Thus incomplete changes can be saved without throwing exceptions in the VA environ ment Note If no session file has been selected Same functionality as Save session as 5 2 2 2 3 Save session as Application Framework User s Guide 5 Tools ew 198 5 2 Domain Processes Browser MYND Opens the Save to file dialog Enter the name of the xml file and click on Save to save the current ses sion to the xml file NOTE Enter the extension xml when entering the filename The extension is NOT added to the filename automatically 5 2 2 2 4 Choose environment Ctrl E Opens the Connector manager dialog see Connector manager dialo
155. The instance method can be overridden by Window Adapter classes to perform specific event registrations e g if platform and Abstract Events cannot be mapped in a clear one to one relationship The method has to do the corresponding deregistrations when the view is closed Furthermore the Platform Adapter must translate the Abstract Control protocol of getting and setting contents and properties to the platform widget protocol Later sections describe how an Adapter for a GUI is created and where the hooks are for plugging in a new Widget Adapter 6 2 2 5 Abstract Window Adapter Superclasses Common to All Platforms Each Abstract Control can interface its real Control by a Window Implementation wrapping access to val ues events children etc The hierarchy of the abstract implementation classes follows MicFwWindowImplementation root class for all Widget Adapters MicFwControlImplementation root class for visual widgets MicFwAspectControlImplementation Object Aspects visual parts MicFwLazyControlImplementation for controls which have no relevant Application Framework User s Guide z 6 Customizing Aa aan 226 6 2 Internal Design MYND behavior MicFwMultipleAspectControlImplementation for all controls which contain MicFwBookControliImplementation Notebooks showing more than one Domain Process MicFwCollectionControlImplementation object collections showing a list of objects
156. ViewClassHint parentViewHolder aDomainProcess modality aModality Advanced API Methods MicFwDomainProcess processContextEvaluator Overview Instance methods Type Implementor Message Declaring MicFwDomainProcess modality Declaring MicFwDomainProcess permitsPerformAccessTo aspect Declaring MicFwDomainProcess stayOpenWithParent Declaring MicFwDomainProcess validatesPerformAccessTo anAspect Creating MicFwDomainProcess addChildProcess aDomainProcessClass Creating MicFwDomainProcess addChildProcess aDomainProcessClass named aSymbol Application Framework User s Guide 4 Advanced Programming Reference 150 4 3 Domain Process ons MYN D Type Implementor Message Creating MicFwDomainProcess addChildProcess aDomainProcessClass named aSymbol withContext aContext withSuperContext aSuperContext Creating MicFwDomainProcess addNewChildProcess DomainProcess Class Creating MicFwDomainProcess addNewChildProcess aDomainProcess Class named aSymbol Creating MicFwDomainProcess addNewChildProcess aDomainProcess Class named aSymbol withContext aContext withSuperContext aSuperCon text Creating MicFwDomainProcess created Creating MicFwDomainProcess windowingPolicyClass Initialising MicFwDomainProcess initializelnvolvedBaseConnections Initialising MicFwDomainProcess ini
157. _ connectionNameSelection_ accessorMethods ction displayMethodItem_ 3 5 14 1 2 2 displayMethod not specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ VOID_ 3 5 14 1 2 3 connectionNameContents displayMethod not specified VOID accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ VOID_ 3 5 14 1 2 4 connectionNameContents connectionNameSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ accessorMethodSelection_ VOID_ 3 5 14 1 2 5 connectionNameContents connectionNameSelection accessorMethodSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ VOID_ VOID 3 5 14 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide aA 3 Programming Reference MYND 3 5 View Parts 119 3 5 15 1 1 Syntax 3 5 15 Multiple Select List 3 5 15 1 partName connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ displayMethodItem_ The default presentation method is The content of this Control is aCollection The selection of this Control is aCollection If connectionName is omitted or declared as VOID_ The Default Base Connection
158. a KET EEA EN EAEE NEEE AAN AE E EAA AESA SEINERE ATU 232 6 4 Adding Your Own Widget ss cdeciiccoccieacataceanavndstseiencseaandatemoteauaadtacasattinessuarauttenssndsuosagouens 234 6 4 1 How to Create a Platform Adapter for a New WIdGe1 ccececceeeeeeeeeeeeeeeeeeeeeeeeeneeeeeeeeeeaeeeeeeeeeeeees 234 Multi Language Support MLS sccescccecccctssenessrsarnervennwbederdanerauauennieuseswieyrnsorewees 235 7 1 Language Support Base System 00 eececccceeeeeeeeeeeeeeeeeeeeseseeaeeeeeeeeeesseeaaeeeeeeeeeeaaeees 237 TAA QVOIVIOW coseees cocctuies eccccvied ccncenved ace daiey ecco vdoccoiie CE ER AEE bene iii iv ECE AARE A avira 237 TM OV OIVIOW Sica este ae cca wae aig eee pi pare E edn vase eg eee 237 11 3 Methods and Formats saziis csedeies ccecctven ccccedvnns ccccteiee x csedtee E E RAS 239 7 2 MLS and Application Framework cccccccceceeeeeeeeeeeeneeeeeeeeeceeeeeeeeeseceeaeeaaeeeeeeesenaaees 241 Tae le OV OIMIGW ei vse bade deat E O ETEO E E T O E 241 Fi2i2 BASICS E E A A A O E E E E O N E E I E T 241 7 2 3 Integration of the Adapter into the Structure of the Framework s ssssssssssssriisssssrrssrssrnssrrrrresrssrnssss 243 A254 AnS np M ONU MOMS aeii E A EE RESE E EO 245 7 2 5 Extension of the Domain Processes BrowSet cccccccecceeeeeeeeeeeeeeeeeeeeeeeseeeeeeeeeeeaeeeeeeseeeaeeeeeneeneeees 245 7 2 6 Extension of the Connectors BrowSel cccccceccceeeeeeeeeeeeeeeeeeeeeeeaaeeeeeeeaeeeeeeeeeeaeeee
159. a a AEA AE aa 21 COT OOS ennea e nendgeee ereeetees ex se ened ceee eterno 23 TAs IMToOdU CHOM ecoesccrsreete neta eenananativesencsncnussisabneceacuetatnaeenortumumendiuanaies gnadoneuchosaensapnoncsatens 25 1 1 1 Object oriented software and Frameworks cccceceseeceeeeeeneeeeceeaaeeeeeeeaaeeeeeeeaaaeeeseeeaeeeeeseaeeeesenaaeeees 25 1 1 2 Objectives of Application Framework cccccccceceeeeeceeeeeeeeeeeeeeeeeaaeeeeeeeeaeeeeseeaaaeeeseeeeaeeeeeeeaaeeeeneeaaees 25 1123 ROSIN APPlICAtlO NS casi E AE E EEE EOE AES 25 ttd Feds OF Obri a T O T as eusestuaenees 26 1 2 Frameworks Advantages and Risks sipecepssctedevecicestoectecicetiuaetaeicecaue stance ekausei ce emnatauees 27 1 2 1 Programming or Declaring 0 0 0 2 eeeeeceeeeeeceeee ee eeeee cette eee ae ee sE EEEE AE EAEE EARTE ia 27 1 2 2 Use Technical Interfaces or Uniform Abstract Protocols ceecseceeeeeeeeeeeeeennaeeeseeeaeeeeeeenaaeeeeeeeaees 27 1 2 3 Develop or Use and Expand Existing Architecture eeeecccceeeeecneeeeeeeneeeeeeeaaeeeeeeeaeeeeeeeaaeeeeneeaaees 27 1 3 Mynd Frameworks Concepts iiiciiocscccncnendhs ctccneccundantbenadacdncudincncsianaiecboutnndbnertiadseneeiirsmade 29 1 31 SUCTUTE esse tschend vaeacceniacacmatnn anadeunlahvalunte a aaa aaa a aaa a a a aE a 29 L2 Progam STU CCUG eean T O 29 1 3 3 Elements of the D maiisnimss eri naida aada ne aia ea eaa aiaa aaa aANT EEEE 30 8 4 DOMAIN ODGO ana a T T E E OTEA 30 123 5 Attaching Doman M
160. a command to another process e Undo Redo rollback rollforward of commands in arbitrary depth 6 2 1 6 Abstract Value Each Abstract control owns an Abstract Value object instance of or a subclass which it sends to the corresponding Viewport upon view update to retrieve the Aspect value to be shown by the control together with all necessary Subaspect information like visibility editability enabled state etc of the control 6 2 1 7 Aspect Feature The Aspect Feature is like a Viewport counterpart to the Abstract Value Aspect features are owned by each Viewport class for each Aspect the Viewport may be asked by a view component The Aspect Fea ture keeps the information how to retrieve its Aspect and Subaspect values and how to set the Aspect value Aspect features are generated automatically using reflectivity but as a mean of optimization View port subclasses can create specific hard coded Aspect Feature objects The transmission of commands is handled in a similar way by the Viewport using Action Feature objects 6 2 1 8 Evaluators e Evaluators are encapsulated message sends or blocks which have a common protocol for evaluation given by the methods Each of these methods can be called Missing arguments are substituted by default values superfluous arguments are ignored Basically there are two types of Evaluators Directed Evaluators which act like directed messages and Anonymous Evaluators where the receiver has to b
161. a mes sage which is valued at true to allow access or false to deny access authorizeRead aspect using aRule authorize read access to lt aspect gt of a Domain Object based on the result of evaluating lt aRule gt authorizeRead aspect using aRule authorize read access to lt aspect gt of a Domain Object based on ifProhibitedReturn value the result of evaluating lt aRule gt If the access is denied return lt value gt authorizeWriteUsing aRule same as above for write access authorizeWrite aspect using aRule same as above for write access Note if lt aRule gt is a block it can have either zero or one argument If it has one argument the Domain Object the attribute of which is about to be read or written will be passed as the argument This feature allows for authorization based on the Domain Object s state which might be interesting in contexts like user can set an insurance policy s status to accepted only if the insured sum is less than 250 000 Example Suppose we have a class with the following definition MicFwDomainObject subclass MicPerson instanceVariableNames name firstName classVariableNames poolDictionaries We want to allow changing a s name only on Sundays The corresponding code would be MicPerson authorizeWrite name using Date today dayIndex 1 If a statement like aMicPerson name Smith was executed on a weekday the na
162. a software architecture for certain tasks which components can be easily reused by application developers It provides the system with a basic structure in being a collection of cooperating and conceptual concise classes and methods which are designed to support a task oriented work progress in application development Inactive Context A non active context See Active Context InstanceVariableDescription MicFwinstanceVariableDescription The object that completely describes the typing of a single instance variable in a class The class method createExtendedDescription creates the MicF wlnstanceVariableDescription object which is referenced within the MicFwExtendedDescription object Isolated Context A variable getter sent to a source object that is locked by another context while an isolated context is active will return not the committed target of the transaction object in the other context but rather the uncommitted target See uncommitedread context M lt gt N relationship In M lt gt N relationships a source instance variable references M where M is any number with the range max min specified by the cardinality LEFT of the relationship target objects There is an instance variable in all of the referenced target objects that reference the N where N is any number with the range max min specified by the cardinality RIGHT of the relationship objects of the source object class including the current source object An example
163. aControlListForAspect anAspect ifAbsent absence Block MicFwViewPort gt gt listHierarchyParentViewPort MicFwViewPort gt gt newMetaControlListForAspect anAspect MicFwViewPort gt gt removeMetaControlListForAspect anAspect 4 4 3 6 Services MicFwViewPort gt gt lt anContentAspectOfAGroupControl gt ChildPaneConnectionMode defaultChildPaneConnectionModeValueOf anAspect MicFwViewPort gt gt canStartiInteractionForAspect anAspect MicFwViewPort gt gt childViewPortBaseClass MicFwViewPort gt gt contextAtConnectionNamed aSymbol MicFwViewPort gt gt converter MicFwViewPort gt gt deferUpdateInAllViewsWhile aBlock MicFwViewPort gt gt deferViewUpdateWhile aBlock MicFwViewPort gt gt enterInteractionForAspect anAspect comingFromAspect lastAspect of lastViewPort MicFwViewPort gt gt getLocaleNamed name ofType type fromContextAtConnec tionNamed aSymbol MicFwViewPort gt gt itemViewPortBaseClassForAspect anAspect MicFwViewPort gt gt leaveInteractionForAspect anAspect goingToAspect nex tAspect of nextViewPort MicFwViewPort gt gt localizeAllConnectionsTo aLocale MicFwViewPort gt gt localizeConnectionNamed aString to aLocale MicFwViewPort gt gt resolveKey aMicMlsKey forLocale aLocale MicFwViewPort gt gt returnContextNamed aContextClassSymbol MicFwViewPort gt gt readAccessRejectedForAspect anAspect vetoValue aPro hibitedModel MicFwViewPort gt gt shouldEmulateEditable MicFwViewPort gt gt startInteractio
164. abortcontext Abstract Control An Abstract Control simplifies external access to the Framework as such access can only take place via real Control There are only a small number of genuinely different Abstract Controls see com mand example in the MVC chapter The actual access attempts are handled with real Control via an appro priate Adapter Focus change issuing commands and transfer of data including a range of state information like validation or authorization will be done in this abstract layer The real Controls are completely decoupled from all Domain Process actions and Domain Model data all technical details of external interfaces GUI DDE are completely hidden in the Abstract Control implementation Abstract Event Abstract Window Events are the objects that really perform the communication between the view system and the model world whereas Abstract Windows are merely containers for Abstract Events which additionally may provide some services for them Abstract events can be divided into two functional types Abstract events which propagate changes in the model world to the view and Abstract Events which propagate changes or requests from the user interface to the model world Abstract Value An Abstract Value is a container object that is used by Viewports to keep and propagate infor mation about a Viewport Aspect to and from the view It does not only contain a value for the content of a con trol but also different
165. act Bill etc their Aspects are normally stored in databases Processing oriented functionality is also modeled with classes representing process logic to be carried out in order to perform certain tasks In describing the Application Framework the following terms will be used throughout the manual for the elements described above A Domain Model is a class of the domain that defines a certain behavior including the knowledge about state validation authorization and data Domain Objects are instances of a Domain Model A Domain Process is a class of the domain for processing and workflow oriented tasks and control flow e The Domain Processes are instances of the Domain Process Due to their control oriented nature Domain Processes have responsibility for managing transaction if appropriate A Domain Process knows about its involved Domain Objects This relationship is declared by the program mer and all necessary transaction clustering and navigating tasks are done by the framework Main and subordinate Domain Processes can be distinguished conceptually they are organized in hierar chical parent child relationships one Domain Process is a child process of another one This allows pro cess tasks to be split into smaller pieces represented by child Domain Processes for example for editing a detail view The property of being a child of another Domain Process is purely dynamic a child Domain Process can act as an inde
166. actionPolicyFor aParentProcess named asChildof MicFwModelObject class gt gt defaultValidationRule MicFwDomainProcess class gt gt defaultWindowingPolicyClass MicFwDomainProcess class gt gt defaultWindowingPolicyFor aParentProcess named aDomainProcess modality asChildof parentViewHolder aChildProcess conNameSymbol aProcessInstance conName viewClass aViewClassHint aModality MicFwDomainProcess class gt gt processContextEvaluator Application Framework User s Guide 4 Advanced Programming Reference 156 4 3 Domain Process ons YN D MicFwModelObject class gt gt writeDuringReadIgnored MicFwDomainProcess gt gt permitsPerformAccessTo aspect MicFwDomainProcess gt gt stayOpenWithParent MicFwDomainProcess gt gt validatesPerformAccessTo anAspect 4 3 3 2 Creating MicFwDomainProcess gt gt addChildProcess aDomainProcessClass MicFwDomainProcess gt gt addChildProcess aDomainProcessClass named aSymbol MicFwDomainProcess gt gt addChildProcess aDomainProcessClass named aSymbol withContext aContext withSuperContext aSuperContext MicFwDomainProcess gt gt addNewChildProcess DomainProcessClass MicFwDomainProcess gt gt addNewChildProcess aDomainProcessClass named aSymbol MicFwDomainProcess gt gt addNewChildProcess aDomainProcessClass named aSymbol withContext aContext withSuperContext aSuperContext MicFwDomainProcess gt gt created MicFwDomainProcess gt gt windowingPolicyClass 4
167. ae eas eeepc EE ETRE E AE EEEE AENEA EEE EEEE EETA 180 4 8 1 Dymanic Versus Hidden Static View Components ssssssssessrsssrnsrrssrinsrnrnsrinssrnnsrnnnninnnsrnnnrnnssnn nenn 180 4 8 2 Overview Instance MEthOd S s siririna E E N aE 181 483 Method descripto NS eccora ner EE EEIE EEA AEE AE EO AET 182 BG E Bo Eoo AE A A E E EE E E E E 189 4 10 List Connections cette sacs ccna lin watts ra arcane eeaceataee 190 BT Hi Gached VIEWS oesie a a E E N a A N NEE 191 cs Pe tag Drag e DIOD en a E E ee ee a ee ee eee eee 192 aA Application Framework User s Guide MYND Table of Contents 7 4 12 1 Concept of Drag amp Dip viisisiec nctedetevsvicichtee ins a Dtiade i N ann caer ETEEN 192 4 12 2 Howto Use Drag amp Drops scsecgecs cca cates asta etcsteedscssadees Ses adeeeleeng cehes agsfe dane aniseed vated neg 192 TOOS e ete deiteioenn cones Busaaa eens aaetoeesineuu diaadiannteadarenns haaedonuesaincenrustietannete 195 Se 5 2 62 a ec eo E Nome ner eer eee Sera reer 197 5 2 Domain Processes Browser ecceccccceeeeeeeeeeeeeeeeeeeeeaeeeeeeeeesaaaaeeeeeeeseeeaaaeeeeeeeeeaaaaes 198 D2 e OV SIVIGW seated sigtac exstadaadesed E sa scale aewekaaenh ndeageese xanga E 198 B22 MAIN E E e PE E A A E A TEA IE E E EA EAA belies 198 5 2 3 Connector manager didog scia n N E E E EA 205 D24 PrelerenCes dialog seriosi r a RS EEE EEA IEAA ANEA RNE E ENE AEE 206 5 3 View Connectors BROWSED csesius cic woctecectis isesdceesannenmnecaanes eal ccbann
168. ain Processes Browser on the select micFrameworks gt Open Domain Processes Browser in the System Transcript Menu In the appearing dialog you can filter the Domain Processes classes shown in the following dialog box Here double clicking on will open the Domain Processes Browser The selected class appears in the left and middle pane its inheritance tree up to and including the superclass which is a subclass of is also displayed The Default Process Connection is already set with the Connection Name of the Domain Process in the second row in the right pane of the browser in our case with the Connection The name of the Default Process Connection corresponds by default with the name of the assigned Domain Process class The transaction behavior of the selected Domain Process is displayed in the lower area of the right pane You can decide whether the Domain Process can participate in transaction handling By clicking the Transaction handling row and selecting the Defined radio button further options are made available To set transaction behavior see Defining Transaction Behavior in the Domain Processes Browser chap ter The Domain Process and the declared Default Base Connection appear in the Status Line on the bottom of the browser Further information on the status line is the hint which means that for this Domain Process no view has yet been defined This can be changed by clicking on the Default View Definition r
169. al Age Preferences dialog appears In tab General under Preferred Settings View Select Properties Table recommended e Click OK e Double click on a Domain Manager part in a view The Properties dialog appears 11 Disabling a widget with the focus transfers the focus to the next widget Visual Age will sometimes not transfer the focus to the next widget when a widget is disabled Frameworks now ensures that the focus is always transferred when a widget with the focus is disabled 12 MicFwDomainProcess gt gt childProcesses always returns the defined child process not nil MicFwDomainProcess gt gt childProcesses always returns the defined Child Process of the Domain Pro cess In the previous Frameworks version MicFwDomainProcess gt gt childProcesses could return nil if the Mod elViewConnector was not initialized the MVC used lazy initialization A nil value caused problems for example with the hook MicFwDomainProcess gt gt transactionStarted self childProcesses 13 New methods for setting the color of a widget The following methods for setting the color of a widget have been added MicFwViewPort gt gt defaultBackgroundColorValueOf dispatcherAspect MicFwViewPort gt gt defaultForegroundColorValueOf dispatcherAspect UserViewPort gt gt lt aspect gt ForegroundColor UserViewPort gt gt lt aspect gt ForegroundColor 14 New methods for limiting the maximum number of searches for a tree selection The followi
170. al Language System NLS such as the one provided by IBM The micado MLS is intended to achieve the following targets e POSIX Locale model e Several languages in one system Independence from character set being used Independence from storage forms used for localized data This introduction describes the basics and the technical basis of the micado MLS 7 1 2 1 Terms e Locale Category A template for Locale related data A Locale Category for a concrete Locale is a Locale Entity e Locale Entity A concrete object for a Locale Category A Locale Entity has a Locale and information concerning the localization of its data e g a Locale Entity for a date with the Locale of Germany ger man supports representation of a date with this Locale e Locale A combination of territory and language which specifies the localization of externalized data e g time formatting in Germany e Localization Process in which externalized data is adapted to a Locale e Externalization Process of identification and separation of Locale related data from a system 7 1 2 2 Micado Locale Model Based on the POSIX Locale model the Locale Categories shown in the table below have been defined All Locale Categories inherit a uniform protocol from the class and a facility for storing to external sources Category Task Context Manages Locale Category objects Date Application Framework User s Guide aA 7 Multi Language Support
171. alue MicFwViewPort gt gt defaultUpdateOfMetaControlList aMetaControlList forAspect anAspect MicFwViewPort gt gt defaultVisibleValueOf aDispatcherAspect 4 4 3 8 Late Model Access One problem within the application development is how to deal with huge and complex views The applica Application Framework User s Guide aA 4 Advanced Programming Reference MYND 4 4 Viewport 173 tion framework provides the possibility to defer the creation and connection of framework structures until they are necessary This behavior is controlled by implementing the following protocols in the connected viewports Return an atom to control the connection mode Group Controls like Forms Notebook Pages etc The Group Control presenting Aspect lt anAspect gt can be connected with the following modes return values e EARLYCONNECT Connect the models at startup Default value e LATECONNECT Connect the model when it is selected the first time only Notebook Pages BACKGROUNDCONNECT Connect the models in a background process after startup only Notebook Pages LATEGROUPCONNECT Late connection to models in Notebook Pages and Group Controls with con tent hidden 4 4 3 9 Undefined Models Within the framework exists a special object which represents similar to Smalltalk UndefinedObject an ini tial state for the Framework This object is the It is set by the in every struc ture which requires a model object and is not being i
172. an seT mos Vann aen treet miers erent et 47 222 GETING Started doirse d aaeeei aaiae aanita Eiee a 48 Qe aly OVEIVIOW seinen iaae a a a a a aa Ea aa aE Ra E A a EA a eaS 48 2 2 2 Preparatlons TOM ENVY aiiai na E ALE S enn ee vee eta 48 2 2 9 Defining a Doma MOS selec cecnvzcd aces seatancet cnnsuzcen O E E EER 49 2 2 4 Defining a DOMAIN PrOCOSS wives iisceeutesevedelbawnadetebat aii AASR S AEA NE 51 220 DOTMING ch VON aaa E E E TT i agave wasted mteeehs Ganseuaaeetieee 53 2 3 BEyONd Basics itosona a ovalauebancunends 57 2B Mis OVENVIEW siete ns pilot sind aeaa A suns e aa Reds aE A a A aE aar e ai aa eaa aaa aaa EE Aa 57 2 3 2 Transactional BehaviO ranerne a aaa A A AA a TA E A AA O AANA ENN T 57 233 Validating MHU orrea aaea EAEE E AES RONE EEA E REEE EAEE 58 2 3 4 Adding a Help System esnccnasneoniiinninnn e N EERE EEEE ASTE E eee 60 2 3 5 Managing Child Domain Processes ccccceeeeeeeeeeeee eee eeeeeee eee eeneaeeeeeeeaaaeeeseeeeaeeeeseeaaaeeeeneeaeeeeeeeneeaas 62 2 3 6 AUTHONIZATIOM eion aa edi adeaden lt a vged vad leduedi cana catdd aE AAA E T a AEE TNE ATETA 70 2 3 7 Overriding Default Behavior ssiciseiisrirarin aana eeeaaeeeeeeneaeeeeeeeeaaeeeseeeaaeeeeeseaeeeeeeeeaas 76 23 8 MOGAIINY oneee E R OA sane deag needa ee eoniidedeeeinde eas OA 77 2 4 Quick TOU OF TOGIS arcsec ieratacsicas clei sea ste sigia halebewetetdacstasasiieareeindaedinitadnaeniace aia 78 2 4 TEEKIN Gis sade een aS ee cea dacne dat E T T T
173. and localized object parts 3 Migration Notes In release R 3 3 V2 0 the internal structure of the Application Frameworks was revised and optimized Despite the objective not to change the API Application Framework based applications are to be migrated at some places so that they are executable with the new version With API conformal applications this expenditure is supported by a Tool quite easily This Tool is launched through the micFrameworks Menu in the Transcript selecting micFrameworks gt Domain Processes Tools gt Migrate Accessor Methods The migrations points in detail Basically the Framework operates internally only with symbol atoms no strings any longer Therefore Connections are referenced now by symbols in instead of strings etc The closing procedure of a Domain Process has changed and extended Please refer to the manual The former API concerning closing a View that is controlled by a Transaction Context has to be replaced by commitAndClosePro cess abortAndCloseProcess closeProcess respectively The private method gt gt was removed If this access is necessary the view can be asked by means of the method call MicFwDomainProcess gt gt modelViewConnector abstract View viewlmplementation view However do not consider this a Framework conformal solution Try to avoid a navigation from a Process to its view All controls that may be used dynamically Menu Notebooks etc now need an instance of instead of
174. and views As the project proceeds Domain Processes Viewports and other components may follow Collections of hard coded primitives Symbols Strings are substituted with support tables read from databases the user interface gets more and more elaborated and a growing number of reusable pieces are detected and isolated The Framework s architecture is prepared to support huge applications This leads to a highly decentral ized location of responsibilities To enable Framework beginners as well as project developers to fill in con crete implementations at the time they are needed generic Objects are used as much as possible This also enabled us to keep the Framework s code free of errorprone flow control statements and makes it easier to maintain and extend However generic Objects have to be very common and sometimes the assumptions that were made in deciding on their behavior may not meet your project s requirements For that reason most of them are exchangeable Exchangeable generic classes are is the place where each user action is handled that is not imple mented by a framework or application specific Abstract Command It implements the defaults for pass ing the request to the ModelViewConnector the associated Viewport execution details and logging Additionally there are some generic classes that are intentionally not exchangeable They offer mecha nisms and behavior that are embedded so deeply within the Kernel of the framewor
175. ansaction should be able to be aborted with the abort button e The transaction should be finalized by clicking the OK button The example consists of two view classes e DemoStartView DemoView two Domain Process classes e DemoStartProcess DemoProcess e two Domain Object classes DemoBase e DemolnitBase and one Viewport class DemoViewPort Occurrences of development errors are marked with an exclamation point 2 4 2 Development The environment for this example is VisualAge for Smalltalk and the Composition Editor 2 4 2 1 Preliminary Activities Before we can use the development browsers it is necessary that the classes developed in the design phase are placed with the Class Browser in a subclass of and that the view is created with the GUI Builder For this project an entry template is created with a button which starts a second view with an entry field a List two Labels and two Push Buttons The class of the first view is named The class of the second view is named Both view classes are platform specific and are customarily installed in the respective platform The following was declared regarding the names for the widgets Application Framework User s Guide i 2 Tutorial PMS MICADDO 78 2 4 Quick Tour of Tools 2 4 2 1 1 DemoStartView Parttype lt Label gt Partname Button lt StartDemoProcess gt childProcConn_openView_ a TTE 2 4 2 1 2 Dem
176. ansactionStarted 4 3 3 8 Property MicFwDomainProcess class gt gt isAuthorizationActive MicFwDomainProcess class gt gt isExecAuthorizationActive MicFwDomainProcess class gt gt isExecValidationActive MicFwDomainProcess class gt gt isTechnicalDomainProcess MicFwDomainProcess class gt gt isValidationActive MicFwDomainProcess gt gt accessesConnectionNamed aConnectionName MicFwDomainProcess gt gt childProcesses MicFwDomainProcess gt gt hasConnectionNamed aConnectionName MicFwDomainProcess gt gt hasDynamicChildProcessNamed aConnectionName MicFwDomainProcess gt gt hasViewInteraction MicFwDomainProcess gt gt isOpen MicFwDomainProcess gt gt isViewOpen MicFwDomainProcess gt gt nameInParent 4 3 3 9 Closing Other interesting methods are lt stayOpenWithParent gt About lt aCloselnfo gt lt aCloselnfo gt is a where the lt closeMode gt is one of e COMMIT gt commit the current transaction and close the view ABORT gt abort the current transaction and close the view e DEFAULT gt generic close request like system close button pressed and the lt info gt is set to the receiver i e the Domain Process which has received the close command API methods MicFwDomainProcess gt gt canClose Application Framework User s Guide aA 4 Advanced Programming Reference MYND 4 3 Domain Process 161 MicFwDomainProcess gt gt canClose aCloseInfo MicFwDomainProcess gt gt childProcessFinished aChildProcess named aConn
177. ard instance variables If any conversion fails i e message not understood the nor mal Error exception will result If any conversion results in a value of wrong size signal a MicFwSizeError MicFwAbstractDomainProcessContext gt gt copyEnvFromParent aDomainProcessContext Copy the DP environment dict from a parent DP context This method will NOT replace envvars which have already been set MicFwTransactionContext gt gt couldLock anAspect in anObject Answer true if a lock could be obtained for anAspect in anObject i e no other context holds a ver sion false otherwise MicFwAbstractDomainProcessContext gt gt createChildProcessContextFor aDomainProcess Create a Domain Process context for a child process or return nil to have the child process create its own context MicFwDomainProcess gt gt created The receiver has been created as a child process You may reimplemented it to perform further actions Called by the parent process immediately after the child process has been created If the receiver is a static child process this happens at Connector initialization after creation of all Base Connections and after the method initializelnvolvedBaseConnections has been called for the parent process Base Connec tions will only have valid models if these have been set in that method Sibling Process Connections may or may not have been created at this moment MicFwTransactionContext class gt gt current Application Fra
178. art immediately trying to write the runtime executable depending on VA S default methods of starting a view Application Manager Similar to the procedure of packaging from the Organizer from the Application Manager you have to highlight the application that contains the startup class and then you have to select the Menu item Application gt Package In contrast to the first way you are offered the opinion of starting the packager tool in two ways Browse Problems then Package to see any problems before packaging or Package then Browse the Problems to start packaging immediately e You can enter the definition of the StartView but the prerequisites have to be defined before e System Transcript The transcript Menu tools offers the item Browse Packed Images to start the tool directly It is your resposibility to enter all necessary options and parameters By choosing one of the first two opportunities you can only create Reduced Runtime Images The advan tage of these proceedings is the automatic generation of startup methods and setting of parameters In general according to the complexity of applications using the framework these procedures will not com pletely fit the application s needs Therefore you shoud prefer using the way of starting the packager throug the system transcript HINT The process of packaging should obtain the same results not depending on from where it was started In reality the only
179. artingChildProcess aChildProcess MicFwDomainProcess gt gt removeChildProcess aChildProcess MicFwDomainProcess gt gt removeChildProcessNamed aConnectionName Application Framework User s Guide 4 Advanced Programming Reference MA 162 4 3 Domain Process MYND 4 3 3 11 Process Context Each Domain Process is accociated with one process context These are instances of one of the sub classes of MicFwAbstractDomainProcessContext The context set the operational envrionment for the process instance So he defines for example the trans actional behavior and provides the nessesary view if the process need one in the specific situation The process context also hold provide additional information for the Domain Process lifetime MicFwDomainProcess gt gt processContext MicFwDomainProcess class gt gt processContextEvaluator MicFwDomainProcess class gt gt defaultProcessContextFor anInstance asChildOf aParentProcess named conName MicFwAbstractDomainProcessContext gt gt copyEnvFromParent aDomainProcess Context MicFwAbstractDomainProcessContext gt gt createChildProcessContextFor aDo mainProcess MicFwAbstractDomainProcessContext gt gt getEnv var MicFwAbstractDomainProcessContext gt gt processFinished MicFwAbstractDomainProcessContext gt gt setDomainProcess aDomainProcess MicFwAbstractDomainProcessContext gt gt setEnv var to value MicFwAbstractDomainProcessContext gt gt transactionPolicy MicFwAbstractDomai
180. ass variable named Current The definition for the club class thus becomes MicExampleObjectDomain subclass MicExampleClub instanceVariableNames classVariableNames Current poolDictionaries 2 3 5 2 Relationship between Club and Member Use the Object Model Explorer to define the relationship between the club and the member First you have to add both classes to the model Class gt Add class net There will be a 1 to n relationship to MicExampleClubMember one club has multiple members so there needs to be one instance variable to hold the list of members the instance variable members Variable gt AddinstanceVariable and then not needed for this example but for transactions you set this instance variable to be transacted We want to define a both side relationship because we don t want to loose the information that we have a 1 to n relationship So we need an additional attribut at the club member So we add an instance variable named club at the club member Variable gt AddInstanceVariable Now we have to define the relationship Therefore you set the Relationship toggle button to true and change to the typing page Here we define the relationship to The Object Model Explorer then should look like Model Class Variable Options ele t al els Elala le af TSE m Typing Source class Target class
181. at is manipulated through the receiver keeps the default implementation of MicFwPersistentOb ject gt gt persistenceCopyFrom and a MicFwPsCompareConflict is signaled and not handled MicFwPersistentObject gt gt persistenceDelete The persistent representation of the receiver is about to be deleted from the persistence medium Overrid ing this methods allows subclasses to perform any relevant actions MicFwPersistentObject gt gt persistenceldentifier Answer the receiver s persistence identifier within the current persistence manager MicFwAbstractPersistenceManagerRdb gt gt persistenceldentifierFor aClass Answer a persistence identifier for lt aClass gt The ID will have the format appropriate to retrieve data from the underlying persistence medium MicFwPersistenceManager gt gt persistenceldentifierFor aClass Answer a persistence identifier for lt aClass gt The ID will have the format appropriate to retrieve data from the underlying persistence medium MicFwPersistenceManager gt gt persistenceldentifierFrom aPersistentObject Answer a persistence identifier derived from aPersistentObject The identifier can be used to reload aPersistentObject from the underlying persistence medium MicFwPersistentObject gt gt persistencelnitialize Protected Perform any initializations that should be done after the receiver has newly become persistent This method will be overriden by subclasses that need to perform persistence re
182. ation The validation of a perform aspect e g button effects the enabled state of controls vA Application Framework User s Guide 4 Advanced Programming Reference N D 4 7 Validation 179 4 8 Group Controls The Application Framework distinguish two ways using Group Controls like Forms Notebooks Menus etc The first is called static Here you only control the properties like visibility labeling etc of the specific view component The second called dynamic additionally manipulates the content of such a Control A note book for example may change it s number of pages during some states of your application In this section we discuss the different ways of using Group Controls 4 8 1 Dymanic Versus Hidden Static View Components Using dynamic view components has two sides The first is that you gain a lot of flexibilty within your appli cation On the other hand you will loose a lot of performance if you use the dynamic extensive This results on the fact that each time you exchange view components widgets must be closed and openend the framework must reconnect to the new structures and so on These facts should be considered while designing the application apperance In many cases a dynamic view behavior can be emulated by using a show hide concept of view compo nents These behavior could be easily implemented via the framework by implementing the visible protocol in the framework The great advantage of this concep
183. ation will be shown for each Connection e Type Base Process List or Choice e ViewPort class name of Viewport Name class name of the model which is associated with the Viewport Model Domain Model or Domain Process class name Properties of the Controls appearing on the view are shown in the lower part of the browser Each Control realized on the view appears and is displayed by its Abstract Control type Moreover the following information will be displayed for each Control e Pane real Control class name e OS Control the operating system control which is used by the real Control class name Accessor the name of the real Control if it s used as a selector within the framework e Text textual representation of the real Control To get more details you can double click at any row to get an ordinary inspector of it M Application Framework User s Guide vaa 5 Tools YND 5 3 View Connectors Browser 209 5 4 Framework Logger The Framework Logger is more of a general purpose tool collecting and displaying diagnostic messages generated by one of the frameworks or even by the application itself Because of the event driven nature of the Application Framework it is sometimes difficult to debug code by setting breakpoints and so it is more convenient to log state information to the logger for later inspection 5 4 1 Operational Area The Framework Logger is a general purpose tool used to display diagnostic m
184. authorization rules which hinders the user to execute an action You can use validation rules as well Here we need validation rules for the method for our master process because this method needs the selected member to work on If no member is selected a call of the method causes a walkback So we implement rules which check if a member is selected MicExampleMasterProcess gt gt initializeValidationTable allow editing members if a member is selected super initializeValidationTable self validatePerform edit using aModel aModel currentMember notNil self validatePerform delete using aModel aModel currentMember notNil To activate the rule we have to execute MicExampleMasterProcess initializeValidationTable Before we can start our application we have to enhance the initializeMember method at our application class to have the right to edit a member s data Now we can start the application again MicExampleMasterProcess new club MicExampleClub current session MicExampleSession new openView MicExampleClubMasterView 2 3 7 Overriding Default Behavior Define transaction oor Overriding default Manage child processes Enable authorization Define modality One of the goals of the Application Framework development was to provide as much default behavior as possible However not every user might like
185. avior depends on the context in which the transaction behavior is needed There are two well defined scenarios where a process needs distinct transactional behavior aprocess running as Main Process and running as a child process Besides a Domain Process running as a child may need a different transactional behavior depending on his parent process This results in three transaction descriptions e Main Transaction Behavior e Child Transaction Behavior e Connection Transaction Behavior Application Framework User s Guide a 1 Concepts eX 38 1 3 Mynd Frameworks Concepts The following diagram shows which transaction behavior is authorized for special role Does the process act a a main process a different transactional behavior depending on his parent process Define main transactio handling Define child transactior handling Define connection transaction handling 1 3 14 1 Commonly used patterns 1 3 14 1 1 Main Process Transactional Behavior For a Main Process there are two often used patterns No transactional behavior for Domain Processes which don t change data or e Own Persistence Transaction Context when changing data 1 3 14 1 2 Child Process Transactional Behavior The most commonly used child process transaction behavior patterns e No transaction behavior for processes which should write their changes directly into the Transaction Context of their parent e Use pa
186. ay how Platform Views are created A reason may be the use of Cached Views for speeding up startup of huge views A simple view caching windowing policy is provided as an example The transaction policy defines and maintain the receivers transactional behavior MicFwDomainProcess class gt gt defaultWindowingPolicyFor aProcessInstance asChildOf aParentProcess named conName viewClass aViewClassHint parentViewHolder aDomainProcess modality aModality Return the default windowing policy object for instances the receiver MicFwDomainProcess class gt gt defaultWindowingPolicyForChildOf aParentProcess named conName viewClass aView ClassHint parentViewHolder aDomainProcess modality aModality Return the default windowing policy for instances the receiver MicFwDomainProcess gt gt deferUpdatelnAllViewsWhile aBlock Perform lt aBlock gt leaving the view update in all views which are connect to top level process until the end of block execution MicFwViewPort gt gt deferUpdatelnAllViewsWhile aBlock Perform lt aBlock gt leaving the view update until the end of block execution MicFwDomainProcess gt gt deferViewUpdateWhile aBlock Perform lt aBlock gt leaving the view update until the end of block execution MicFwViewPort gt gt deferViewUpdateWhile aBlock Perform lt aBlock gt leaving the view update until the end of block execution MicFw1Relationship gt gt A Application Framework User s Guide MYND Appendix A
187. b self currentMember theMember To avoid trouble it is a good idea to initialize to attributes of a member with default objects Therfore a smalltalker user a method called initialize to do this and implement it as an instance method at the class which should be instanciated MicExampleClubMember gt gt initialize super initialize self name firstName initialWeight 0 dateOfBirth Date today 2 3 5 8 Test delete and add member Application Framework User s Guide gt 2 3 Beyond Basics 67 When you test deleting and creating club members sometimes it is necessary to start from the beginning again Then execute Mi eFitnessClubApplication initializeMembers Afterwards you can execute Mi cExamp cExampleMasterProcess new club MicExampleClub current openView MicExampleClubMasterView 2 3 5 9 Create edit and add a member at once The Implementation of adding a member to a club is not a very professional way to do this In practice you want to edit a member in the same procedure as you create it and if you and if you decide to cancel the transaction every action should be rolled back at one time The three actions are Creation of a member Adding the member to the club Fill the attributes of the new member So we need a new transaction and this means a new process The new process will control the transaction and call the edit member process when it is starting This should happen
188. base without answering any results Use the parameters in parameterArray MicFwAbstractPersistenceManagerRdb gt gt executeSQLFetchAll anSQLString Execute the sql statement anSQLString and fetch all result rows Return the answer set as a collection of arrays of data MicFwPersistenceManagerRdb gt gt executeSQLFetchAll anSQLString Execute the sql statement anSQLString and fetch all result rows Return the answer set as a collection of arrays of data MicFwAbstractPersistenceManagerRdb gt gt executeSQLFetchAll anSQLString with parameterArray Execute the sql statement anSQLString and fetch all result rows Return the answer set as a collection of arrays of data Application Framework User s Guide MA 286 Appendix A API MYND MicFwPersistenceManagerRdb gt gt executeSQLFetchAll anSQLString with parameterArray Execute the sql statement anSQLString and fetch all result rows Return the answer set as a collection of arrays of data MicFwAbstractPersistenceManagerRdb gt gt executeSQLForFetch anSQLString Answer an sq statement descriptor object that can be used to directly interface with the database Sub classes will determine which actual class of descriptor is used The statement will be prepared and exe cuted the user can start to fetch via nextRow immediately MicFwPersistenceManagerRdb gt gt executeSQLForFetch anSQLString Answer an sq statement descriptor object that can be used to directly interface with t
189. bstract View class has a method which is called at initialization from the Domain Process via the Model View Connector asks the windowing policy object passed by the Domain Process for a new Platform View and creates an initialized Abstract View The instance delegates platform specific tasks to its corresponding uses the Platform Adapter to initialize and open the Platform View and to retrieve the component windows of the Platform View in their hierarchy Additionally in this method the Abstract Windows are created and initialized for the component windows which leads to creation of the corresponding Window Adapter between each Abstract Window and Platform Window The open method also initializes the interaction with the model world opening and activating the View ports sends a request to the Platform View to get the focus closes and destroys the real View using the Platform Adapter transmits an abort close request to the Platform View when required 6 2 1 4 Abstract Event incl Internal Interface Abstract Window Events instances of subclasses of are the objects that actually perform the communication between the view system and the model world whereas Abstract Win dows are merely containers for Abstract Events which may provide some additional services for them Abstract events can be divided into two functional types Abstract events which propagate changes in the model world to the view and Abstract Even
190. bstractPersistenceManagerRdb gt gt newProjectionDescriptor Answer a projection descriptor MicFwPersistenceManager gt gt newTransactionContext Create a new lt code gt TransactionContext lt code gt with the receiver as its owner and the global Transac tionManager as its manager This context isn t activated automatically but can be activated by sending beginTransaction or activate to the context MicFwTransactionContext gt gt newTransactionContext Create new context as child of receiver MicFwTransactionManager gt gt newTransactionContext Create a new lt code gt TransactionContext lt code gt with this manager as its owner and manager This con text isn t activated automatically but can be activated by sending beginTransaction to the context MicFwRdbForeignKeyDescription gt gt newWithAccessSet anAccessSetClass Create an instance of the receiver that communicates with aPersistenceManagerand references an instance of anAccessSetClass for ESQL access MicFwRadbAbstractDirectStatement gt gt nextRow Fetch the next row from the receiver Answer an array with column values MicFwRabiIntegrity Violation gt gt nextRow Fetch the next row from the receiver Answer an array with column values MicFwDomainProcess gt gt openView Open the view specified by the lt viewName gt method which can be set by defining a default view in the Domain Processes Browser MicFwDomainObject gt gt openView aViewClass Opening a
191. c Model View Controller cecceceeeeeeeeeeeeeeeneeee nnui a aaaea E Eana 29 Figure 3 Object Model Service Organisation eee eeeeeeeeeeeeeee eee eeeeae eee eeceeaeeeeeeeeaeeeeeeeeaaeeeeeeeeeaaaeeeeeeenaees 30 Figure 4 Connecting Domain Objects with without specific Viewport 00 cece eeeeeeeeeeeeeeeeeeeeeaaeeeeetaeeeeeeeaees 31 Figure 5 Object Model of the Insurance Example cccccecceeeeeeeneeee scenes eee eeeeeaeeeeeeeaaeeeeeeeaaaeeeeeseaaeeeeeeenaaaees 31 Figure 6 Connecting a Net of Domain Objects 0 ee e cee ceeeeee ee sirinin nnna ALEE NANNE AA 32 Figure 7 Connecting Independent Domain objects ee eeeeeeeeeeeeeeee eee eeee ee eee teases eeeeeaeeeeeesaeeeeeeeseneeeeeeeeeeeaeenes 32 Figure 8 Connecting one Domain Process ecccceeeeeeeeeee eee eeeeeee eee aaeeeeeeeeaeeeeeeeeaeeeeeeeeaeeeeeeseeneeeeeeeeeeeeeeeees 33 Figure 9 Connecting several Domain Processes c eceeeeceeeeeeeeeeeeeeeeeeeeeeaeeeeeeeeeaeeeeeeeeeeeeeesecneeeeeeneeeeeeeeenes 34 Figure 10 Decoupling Views and Models 0 ceeeeeeeeeeeeeeeeeeeeeeeeeee eee eeaeeeeeeeaaaeeeeeeeaeeeeeesaeeeeeeeseneeeeeeeeneeeeeees 35 Figure 11 Connector between Views and Models ccccceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeneeeeeeseeeeeeeeeeneeeeeeeeeeeeeeees 36 Figure 12 Domain Process accessing Domain Objects via Connector ceeeeeeceeeeeeeeeeeeneeeeeeeaeeeeeeeaeeeeeeeaes 36 Figure 13 Placement Of VieWPOrts 0
192. cale Entity and that no MLS Data yet exist in this entity 7 5 1 3 Connection to Application Framework The purpose of the context which has just been created is to store MLS Data for our example and to sub sequently supply Framework with the appropriate translation In order to ensure that Framework knows that it should use this context for our example this is entered in the Domain Process browser Application Framework User s Guide 7 Multi Language Support MLS MA 254 7 5 Examples MYND The model Connection of the default Domain Process is accordingly edited in the Domain Process browser There are two Combo Boxes which contain MLS specific data in the mask in which a Connection is defined The context is selected in the Combo Box entitled Mls context name and the above mentioned StandardMasterContext is set as the MLS super context name and all changes are saved This ensures that the new context subsequently receives the StandardMasterContext as a super context By declaring the StandardMasterContext as a super context we use the inheritance of the standard data format for the newly created context We are thus not forced to define a separate data format 7 5 1 4 Externalization of Data The Labels entered in the view in English are now to be externalized with their corresponding Aspect names The newly created is selected in the list entitled Mls contexts Strings is selected as the MLS Category and is sele
193. cally when a user commits a process successfully 2 3 5 9 3 Integration of the add new member process Now we add the add new member process to the master process Therefore we open the Domain Pro cesses Browser on our master process add a new child processes typed as add new member process and define a child transaction behavior for it at the connection The Browser should look like this l loixi Browser Process cass Connection Options R te Qaj lela Ba PMS micava Process Classes Hierarchy Processes Hierarchy Name Value a MicExampleAddHewMemberProcess default Type CHILD_PROCESS cub Hame addNewMember MicExampleMemberProcess Class MicExampleAddNewMemberProcess viewport lt generic gt MLS context Uses a lt none gt MLS supercontext Uses a lt none gt club L member clubMember member Default view lt none gt Transaction handling Defined Autostart mode 4 Use own context Use parent context Isolate mode Persistence context Transaction context i a k of mode Process class G Oa Main Process Default base Jo Aotivated t Undefined we heritable heritable child process variable Pr a Child process Base Non Astivated Not editable MicExampleMasterProcess with default base connection lt club gt and without default view name Now we have
194. cation Framework User s Guide 2 Tutorial PMS MICADO 54 2 2 Getting Started MicExampleMemberProcess new clubMember theMember openView MicExampleClubMemberView The two Windows will open one on top of the other so you ll have to drag the top one a little to be able to see the other one You will see that changes you make to the model in one Window will propagate to the other one as soon as you tab out of the corresponding entry field 2 2 5 1 A Look Behind the Scenes At first the behavior of the may seem strange to a developer who hasn t used the Application Framework before There are no methods to populate the entry fields or write their contents back to the model nor are there any events that the Controls specifically registered to What s going on How does the data get to the Controls and back Fortunately there is a tool in the Application Framework to visualize the Connections between the view and the model It is called the Connectors Browser To reach it use the SystemTranscript Menu micFrameworks gt Browse View Connectors amp System Transcript Fie Edit EMGAENE em Tools iditMember Browse Log ditMember lication des Open Domain Processes Browser derView clas A ditMamher al lofx Connectors MLS contexts Connector Connection Type Viewport Name Model Bj MicExampleClubMemberView clubMember Base default MicFwViewPort MicExampleClubMember micExampl
195. cause write access may cause significant performance loss due to excessive update events or even confuse the update mechanism Therefore write access during a traced read will raise a resumable Exception named However there are some cases when write access during a traced read may be necessary or desirable form the view of the application especially when a lazy initialization is performed Therefore write during a traced read can be temporarily permitted with the methods 4 2 2 Method descriptions In this sense a method performing lazy initialization may look like MyModel gt gt lazyAspect self basicLazyAspect isNil ifTrue self permitWriteDuringReadWhile self basicLazyAspect self initialValueForLazyAspect self basicLazyAspect Application Framework User s Guide 4 Advanced Programming Reference MA 148 4 2 Domain Object 4 3 Domain Process 4 3 1 Overview Class methods Type Implementor Method Declaring MicFwDomainProcess defaultHierarchicalPersistent TransactionPolicyClass Declaring MicFwDomainProcess defaultHierarchicalTransac tionPolicyClass Declaring MicFwDomainProcess defaultinheritedTransactionPolicyClass Declaring MicFwDomainProcess defaultPersistentTransactionPolicyClass Declaring MicFwDomainProcess defaultProcessContextFor anInstance asChildOf aParentProcess named aCon Name Declaring
196. cccceeseeeseeeeeeteeeees 229 MicFwListModelConnection 00 223 MicFwMainWindowControl eeceeee 223 MicFwMainWindowlmplementation 221 MicFwMessagelnterceptor eeeeee 234 MicFwMetapartCollection ceeeeeeeeeee 19 MicFwMissingACCeSSOl cccessseeeeeeees 229 MicFwModelConnection ceeeeeees 221 MicFwModelObject scccssseneetesseeees 78 MicFwModelViewConnector s 221 MicFwObjectAspectControl 84 223 MicFwObjectAspectEditorControl 222 MicFwObjectAspectEvent ceeeeeeee 224 MicFwObjectBookControl s s s 223 MicFwObjectChangeEvent 224 229 MicFwObjectChoiceControl eee 223 MicFwObjectCollectionControl 4 223 MicFwObjectRangeControl ee eee 223 MicFwObjectSelectEvent eee 225 MicFwObjectUpdateEvent 221 224 229 MicFwPageControl eessecesseeeeeeeeenees 223 MicFwPageSelectEvent cesses 224 MicFwPaneShapeEvent s es 225 MicFwPrimaryApplicationModal at MicFwSystemModal ee eeesesseeeeeesteeeees 77 MicFwUndefinedModelObject 87 316 MicFwViewlImplementation 223 226 MicFwViewPort 84 87 221 230 234 MicFwViewPortRequestBroker 230 MIGPWVIGWP OMS jcccteschs ccpntelgacsverdecseveeteues 231 MicFwWindowlmplementation 221 226 227
197. cess MicFwDomainProcess gt gt openViewWithParentProcess aDomainProcess 4 3 3 6 Services MicFwModelObject class gt gt authorizeRead aspect using rule MicFwModelObject class gt gt authorizeRead aspect using rule ifProhibite dReturn value MicFwModelObject class gt gt authorizeReadUsing rule MicFwModelObject class gt gt authorizeWrite aspect using rule MicFwModelObject class gt gt authorizeWriteUsing rule MicFwDomainProcess class gt gt authorizePerform anAspect using aRule MicFwDomainProcess class gt gt authorizePerformUsing aRule MicFwDomainProcess class gt gt validatePerform anAspect using aRule MicFwModelObject class gt gt validateWrite aspect using rule MicFwDomainProcess gt gt activateConnectorWithRefresh MicFwDomainProcess gt gt addPresetChoiceConnectionNamed aSymbol MicFwDomainProcess gt gt addPresetHierarchyListConnectionNamed aSymbol MicFwDomainProcess gt gt addPresetListConnectionNamed aSymbol MicFwDomainProcess gt gt canStartInteractionForAspect anAspect MicFwDomainProcess gt gt canStartInteractionForAspect anAspect inConnec tionNamed connectionName MicFwDomainProcess gt gt currentChoice Application Framework User s Guide 4 Advanced Programming Reference MA 158 4 3 Domain Process MYN MicFwDomainProcess gt gt deferUpdateInAllViewsWhile aBlock MicFwDomainProcess gt gt deferViewUpdateWhile aBlock MicFwDomainProcess gt gt hierarchicalPersistentTransactionPoli
198. cess innerAbortTransaction Transaction Behavior MicFwDomainProcess innerCommitTransaction Transaction Behavior MicFwDomainProcess innerStartTransaction Transaction Behavior MicFwDomainProcess performAbortAndClose Transaction Behavior MicFwDomainProcess performClose Transaction Behavior MicFwDomainProcess performCommitAndClose Transaction Behavior MicFwDomainProcess persistenceObjectManager Transaction Behavior MicFwDomainProcess prepareAbort Transaction Behavior MicFwDomainProcess prepareCommit Transaction Behavior MicFwDomainProcess resetTransactionClose Transaction Behavior MicFwDomainProcess startTransaction Transaction Behavior MicFwDomainProcess transactionAborted Transaction Behavior MicFwDomainProcess transactionClosed aTransactionClose Mode Transaction Behavior MicFwDomainProcess transactionCommitted Transaction Behavior MicFwDomainProcess transactionPolicy Transaction Behavior MicFwDomainProcess transactionStarted Property MicFwDomainProcess accessesConnectionNamed aConnec tionName Property MicFwDomainProcess childProcesses Property MicFwDomainProcess hasConnectionNamed aConnectionName Property MicFwDomainProcess hasDynamicChildProcessNamed aCon nectionName Property MicFwDomainProcess hasViewlnteraction Property MicFwDomainProcess isOpen
199. cessessesseteceeeeeens 107 Toolbar Menu item 201 TOOP S si eanne aaas 60 top pane 00 ceeeceesesettecececeesseesenseseeeeeeeens 222 touched MOEl cccceeseesseeeeseseeeeeeeees 213 traced read 0 0 cee eeeececccccsceseeseeeseeees 19 20 148 transacted ce 50 transaction 30 32 36 47 58 64 80 87 98 233 BOs ea E esses eee teeeee eas 330 transaction behavior 39 80 98 205 Transaction Child cc eeeeeeeeeeeeeeees 204 Transaction Connection cccccccceee 204 Transaction Context 81 87 205 316 328 Transaction CONTEXt cc eeeeeeeececeeeeeeeees 204 Transaction handling cccesececeee 80 207 transaction handling 0 99 205 307 Transaction Main cccccccccsesessseeeeeeeeees 204 Transactions Browser 42 86 87 316 transactionStarted 0 0 0 ceeeccceccceseeseesseeees 82 LEAO OLS M saves saceedessdaviaddsaaiveisaieteacies 224 triggerlflnterested IN eee ceeseeseeeeeeeees 224 trouble SNOOTING cceccceeessstseeeeeeeeeeeseees 42 TuningRecommended2a ccccsscccceesseeeees 210 t tora eseria is 47 Type can a E ae reeeeas 203 Type Of connector eeeesssssssssseessssssseee 206 type based COUpIING csecsecececeeeeeeeees 230 iA elne E E E 79 330 U UNA O eesin aan a a aS 225 WNICO MS S E 238 unnamed Connection cccccceeeeeeeeeeeees 209 unnamed Connector cc
200. chance of a successful completion of the packaging process will be offered throug startgin from the transcript All the other ways might end in unpredictable or undesired results 8 3 1 Packaging Guide 8 3 1 1 Making your Frameworks Based Application Packager Compliant The Packager bases a decision on whether or not to include a specific class in the runtime image on the existence of a reference to that class Methods will only be included if there are senders of the correspond ing message Due to the nature of the Frameworks not all classes in your application will have explicit references nor will all methods be explicitly invoked For instance there are usually no references to Viewport classes Instead Viewport classes implement a message named portName that associates them with a Domain Object class This mechanism being Framework specific is not transparent to the Packager The same holds true for certain categories of methods In Viewports you can implement methods that do not have explicit senders Instead their selectors are created dynamically at runtime the methods are then invoked by a perform Examples are selectors like commitEnabled commit being the name of a Domain Process Aspect or streetHoverHelpText street being the name of a Domain Object Aspect The above indicates that the Packager needs some assistance in making the right decision on what to include in a runtime image Here s how 8 3 1 1 1
201. closeProcess MicFwDomainProcess gt gt closeView MicFwDomainProcess gt gt viewClosed Application Framework User s Guide aA 3 Programming Reference MYND 3 3 Domain Process 99 3 4 Viewport 3 4 1 Overview Instance methods Type Implementor Message Model Navigation MicFwViewPort model Model Navigation MicFwViewPort modelAtDefaultBaseConnection Model Navigation MicFwViewPort modelAtDefaultProcessConnection Controlling Subaspects MicFwViewPort lt aspectName gt BackgroundColor Controlling Subaspects MicFwViewPort lt aspectName gt Checked Controlling Subaspects MicFwViewPort lt aspectName gt Editable Controlling Subaspects MicFwViewPort lt aspectName gt Enabled Controlling Subaspects MicFwViewPort lt aspectName gt ForegroundColor Controlling Subaspects MicFwViewPort lt aspectName gt HelpText Controlling Subaspects MicFwViewPort lt aspectName gt HoverHelpText Controlling Subaspects MicFwViewPort lt aspectName gt Label Controlling Subaspects MicFwViewPort lt aspectName gt Readable Controlling Subaspects MicFwViewPort lt aspectName gt Visible Services MicFwViewPort isInterestedInChangesOf anAspect Services MicFwViewPort isInterestedInUpdatesOf anAspect Services MicFwViewPort localize aLocale MLS 3 4 2 Method descriptions 3 4 2 1 Model Navigation With the Viewport you can combine several processing steps which are independent of each othe
202. cording to connection type n 204 Table 17 Transaction properties that can be defined according to connection type eeceeeeeeeeeeeeeees 204 Table 18 Transaction properties displayed in column Name ce cceceeeeeeceeeeeeeeeeeeeeteeeeeeeeseeeeeeeeeeeneeeeeeeeeeaaees 204 Table 19 MicFwBrokerMapper mappings c cceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeaeeeeeeseaaeeeeeeseaeeeeeesaeeeeeeeseneeeeeeeeeeaeees 232 Table 20 MicFwBrowserMapper Mappings ccceccceeeeecneeeeeeeaeeeeeeeeaaeeeeeeeaaeeeeeeeaaaeeeeeeeaeeeeeeeaaaeeeeeenaeeeeeee 232 Table 21 MicFwGenusMapper MappindS cceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeaaeeeeeeseaaeeeeeeseaeeeeeeseeeeeeeeeeneeeeeeeeeeaeees 233 Table 22 MicFwinterface Mapper Mappings cceceeceeeeseeeeeeeeeeeeeeeeeeeeaeeeeeeeeaaeeeeeesaeeeeeeseeeeeeeeeseeeeeeeeeeeenees 233 Table 23 Table of Locale Categories 20 eeeececceeeeeeeeeeeeeeeneeeeeeeeaeeeeeeeeaeeeeeeseaaeeeeeetaeeeeeeseeeeeeeeseneeeeeeseenaeees 238 Table 24 Configuration Maps svs ecccct cinnects ei r rian E T AEAEE EAA ES T ETR 265 Table 25 Prerequiste Applications 22 cecceeeeceeceeeeeeneeee eee eaeeeeeeeaaeeeeeeeaaaeeeeeeeaaeeeeeeeaaaeeeeeeeaaeeeeeeeaaaeeeseeeaeeeeeee 265 aA Application Framework User s Guide MYND List Of Tables 335 Application Framework User s Guide aA 336 List Of Tables MYN List Of Figures Figure 1 Frequently Used Symbols assecca en AAE EE ARAARA KEA 12 Figure 2 Classi
203. cribe the structure of the framework s followed by a short description of the IBM Packaging Tools The next step will be a chapter on the special considerations to the Framework and the last step will be short overwiew of tips and tricks and common gotcha s Application Framework User s Guide aA 8 Creating Runtime Executables for Distribution MYND 8 1 Introduction 263 8 2 Organization of Application Framework In this chapter we will offer a brief overview on the logical and technical ENVY organization of the Frame work Following we will show the important runtime applications 8 2 1 Layout of Application Framework Components Application Framework consists of several components As a first rather inexact classification we can identify the following components e Framework Kernel contains the base functionality abstract classes MVC Controls e Kernel Extensions contains components and extensions as Platform Adapter VA Drag amp Drop e Web e Visual Programming Kernel Extensions will be denotated inside the Framework as Interaction components To create a runtime using the Framework the specialized kernel extensions for the target platform must be loaded e Framework Services The term services is used in the means of the frameworks as all those compo nents thoat offer support for usual purposes e g validation Services can be added to the application during the advanced steps of the implementa
204. ct after the DPB has been restarted Filter Startup adjustment Domain Process classes Domain Object classes Viewport classes k View classes E MLS classes 5 2 4 2 1 Startup adjustments The following diagram shows example startup settings Filter Startup adjustment Domain Process classes MicFwPBY Domain Object classes MicFwPBY Viewport classes MicFw View classes MicFw MLS classes 5 2 4 2 1 1 Domain Process classes Specifies the subset of Domain Process classes available for selection 5 2 4 2 1 2 Domain Object classes Specifies the subset of Domain Object classes available for selection 5 2 4 2 1 3 Viewport classes Specifies the subset of Viewport classes available for selection 5 2 4 2 1 4 View classes Specifies the subset of Default View classes available for selection 5 2 4 2 1 5 MLS classes Specifies the subset of MLS classes available for selection 5 2 4 3 Tab View Tab View settings define the startup adjustments for the the toolbar View Startup adjustment M Toolbar Application Framework User s Guide 5 Tools 208 5 2 Domain Processes Browser as MYN D 5 3 View Connectors Browser The View Connectors Browser grabs information from all the elements surrounding the Model View Con nectors Connections Viewports Domain Objects and Domain Processes on the one hand and Views and Controls on the other The View Connector
205. cted as the Locale Entity i e the strings labels Locale which are generated as standard with the context We now intend to externalize the Label data into this Locale Entity The ending of the name of the strings Locale Entity namely Labels specifies for Application Framework that Label data are present For each Label it is necessary to specify a key which is identical to the Aspect name of the corresponding widget as defined in the view Data in various languages can then be entered in relation to every key This can be performed automatically for a Locale language territory combination for the Label data which have already been entered For this purpose select the context Menu via the list of MLS keys and select Insert keys from view Now select the required view class in this instance The system then asks for the language of the data in the view i e to which Locale this data is to be added Because the data in the view are in English we select english united kingdom When this procedure has been completed MLS keys have been created for all possible widgets and the data entered for the view have been entered for the Locale english united kingdom We can now start the process and observe the view in English Enter MicMlsExampleProcessl new openView MicMlsExampleViewl If the data had not been previously externalized Framework would now search for contents of the con nected static texts which represen
206. ction RETURN VALUE OrderedCollection MicFwPsObjectidentifier gt gt keyVariables Answer the receiver s key variables lt OrderedCollection gt of lt Symbol gt MicFwMetaPart gt gt label aLabel Set the initial label can be also done with the proper framework protocol MicFwViewPort gt gt leavelnteractionForAspect anAspect goingToAspect nextAspect of nextViewPort Called if the process is selected via a Notebook Page select event May be reimplemented to perform some actions with the process Return true if the actions are successful possible false otherwise MicFwViewPort gt gt listHierarchyParentViewPort Return the parent Viewport for the receiver as list hierarchy item MicFwPsExtentldentifier gt gt load Let the persistence manager load the extent identified by the receiver from the underlying persistence medium MicFwPsExtentldentifierSQL gt gt load Let the persistence manager load the extent identified by the receiver from the underlying persistence medium MicFwPsObjectidentifier gt gt load Load the object identified by the receiver from the underlying persistence medium MicFwPsProjectionDescriptor gt gt load Let the persistence manager load the extent identified by the receiver from the underlying persistence medium MicFwRabiIntegrity Violation gt gt load Let the persistence manager load the extent identified by the receiver from the underlying persistence medium MicFwAbstractPersist
207. ction displayMethodltem connec Application Framework User s Guide y 3 Programming Reference MA 122 3 5 View Parts MYND tionNameEntryField accessorMethodEntryField not specified VOI D accessorMethodContents_ VOI acc D_ ssorMethodSelection_ VOI VOI VOI 3 5 17 2 D D D_ Supported Subaspects e BackgroundColor CgRGBColor e Editable Boolean e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide 3 Programming Reference 3 5 View Parts 123 3 5 18 1 1 Syntax 3 5 18 Container Icon Area 3 5 18 1 partName connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ displayMethodItem_ The default presentation method is The content of this Control is aCollection The selection of this Control is aCollection If connectionName is omitted or declared as VOID_ The Default Base Connection will be used 3 5 18 1 2 Supported variations 3 5 18 1 2 1 All parts of partName specified connectionNameContents_ accessorMethodContents_ connectionNameSe ection_ accessorMethods ction displayMethodItem_ 3 5 18 1 2 2 displayMethod not specified connectionNameContents_ accessorMethodContents_ connectionNameSe ection_ accessorMethods ction VOID 3 5 18 1 2 3 connectionNam
208. ction policy MicFwDomainProcess gt gt transactionPolicyClass See lt defaultTransactionPolicyClass gt MicFwDomainProcess gt gt transactionStarted Hook for initializations immediately after starting a transaction MicFwPomRdbCoreComplete gt gt typeConverter Answer the type converter for the receiver The object answered is used to convert types in places where no specialized converter is available MicFwPersistentObject gt gt undelete Deregister the receiver for delete from the underlying persistence medium CAUTION Cascaded deletion will not be deregistered for the objects deleted through the cascade foreign keys This method is OBSO LETE and should not be used anymore Abort the transaction instead to undo the delete MicFwPsExtentldentifier gt gt union anExtentldentifier Combine the queryAnalyzer of this descriptor with the queryAnalyzer of anExtentldentifier with the union operation MicFwPsProjectionDescriptor gt gt union aProjectionDescriptor Combine the queryAnalyzer of this descriptor with the queryAnalyzer of aProjectionDescriptor with the union operation OdbcObject class gt gt useOdbcDLL Before executing this method make sure that all your conections are closed MicFwDomainProcess class gt gt validatePerform anAspect using aRule Use lt aRule gt Block or Message to validate each perform access to lt anAspect gt lt aRule gt must return a boolean MicFwDomainProcess gt gt
209. cyClass MicFwDomainProcess gt gt hierarchicalTransactionPolicyClass MicFwDomainProcess gt gt inheritedTransactionPolicyClass MicFwDomainProcess gt gt modelChosen aConnection MicFwDomainProcess gt gt modelItemChosen aConnection MicFwDomainProcess gt gt modelSelected aConnection MicFwDomainProcess gt gt modelViewConnector MicFwDomainProcess gt gt persistentTransactionPolicyClass MicFwDomainProcess gt gt transactionPolicyClass MicFwDomainProcess gt gt parent MicFwModelObject gt gt permitWriteDuringReadWhile aBlock MicFwDomainProcess gt gt processContext MicFwDomainProcess gt gt reactivateConnector MicFwDomainProcess gt gt reactivateView MicFwDomainProcess gt gt reactivateViewInteraction MicFwDomainProcess gt gt readModelAtConnection aConnectionName MicFwDomainProcess gt gt refreshAllViews MicFwDomainProcess gt gt refreshView MicFwDomainProcess gt gt selectAspect anAspect MicFwDomainProcess gt gt selectProcess MicFwDomainProcess gt gt windowingPolicy MicFwDomainProcess gt gt writeModelAtConnection aSymbol value aModel 4 3 3 7 Transaction Behavior For more information of hierarchical and non hierarchical transaction contexts see the Also see the lt canClose aCloselnfo gt lt closeRequested aCloselnfo gt methods which can influence the Application Framework User s Guide aA 4 Advanced Programming Reference MYND 4 3 Domain Process 159 transaction behavior of processes MicFwDomainProc
210. d from the model In the example code for the TEXT embedded part the name of the selected item is displayed in the entry field gt defaultltem name Example A list with objects each of which uses the ViewPortB The column partName is defaultProcess_column1_ ViewPortA of the default process implements ViewPortA gt gt columnl taspectXy ViewPortB gt gt columnlEmbeddedPart MicFwEmbeddedMetaPart new accessorString defaultItem name type TEX initiallySelected true yourself The entry field defaultltem name displays the name of the selected item This name can be editted ViewPortB gt gt columnlEmbeddedPart Application Framework User s Guide aA 4 Advanced Programming Reference MYND 4 8 Group Controls 187 MicFwEmbeddedMetaPart new accessorString type DROPDOWNLIST yourself ViewPortB gt gt columnl defaultItem entireList defaultItem theSelection VOID EmbeddedPart MicFwEmbeddedMetaPart new accessorString name VOID VOID type COMBO yourself ViewPortB gt gt columnl baseList theEntireList baseSelection theSelection first BOX EmbeddedPart MicFwEmbeddedMetaPart new accessorString type RADIO yourself ViewPortB gt gt columnlEm MicFwEmbeddedMetaPart new accessorString type TOGGLEB yourself defaultItem entireList defaultItem theSelection V
211. d its Examples 22 Application Framework User s Guide Installing the Application Framework as M YN D Concepts Application Framework User s Guide 1 Concepts 23 24 Application Framework User s Guide 1 Concepts ots M YN D 1 1 Introduction 1 1 1 Object oriented software and Frameworks For the last few years the increasing computing power on desktop computers has revealed the advan tages of Smalltalk s purely object oriented architecture to a broadening domain of users Object oriented programming appeals at multiple levels For managers it promises faster and cheaper development and maintenance For analysts and designers the modeling process becomes simpler and produces a clear manageable design For programmers the elegance and clarity of the object model and the power of object oriented tools and libraries makes programming a much more pleasant task and pro grammers experience an increase in productivity The Application Framework defines an architectural concept that will be an advantage to almost any devel opment project as a lot of time at the start of projects usually goes into defining an architecture The Framework s concept is based on the idea of isolating the actual business logic from technical details and encourages a development style that is based on declaration instead of programming The declarative style greatly reduces the amount of work required to implement a given
212. d to be message selectors by the Packager 8 3 1 2 The Packaging Process After taking care of what classes and methods to include in your runtime image and how to tell the Pack ager to ignore the Symbols that are not of interest to it packaging your runtime code is a straightforward step by step process Here s how it works e Make sure you really included everything your application needs by means of the and methods e Create a new runtime image choose Tools gt Browse Packaged Images from the Transcript Menu Click on the tab Instructions in Database of the following notebook view Double click on Abt BaseRuntimePackaging in the List on the left of the view and select AbtBaseEp RuntimelmagePackag ingInstructions Click the Next button near the bottom of the window Inthe following notebook view select the application you want to package and press gt gt Then select the tab Startup Code Enter the code to start your application in the field Application Entry Point For the example this is MicFwFitnessClubExample startApplicationRT Then press Next Don t be con fused by the progress indicator that comes up next the reduction process will take far longer than it suggests e after the reduction process has finished you should inspect the List of messages it has produced Press Next to get to a screen that allows you to fix potential problems pressing Next again will
213. dBeginTouched Transaction Behavior MicFwDomainProcess abortAndClose Transaction Behavior MicFwDomainProcess abortAndCloseProcess Transaction Behavior MicFwDomainProcess abortAndCloseView Transaction Behavior MicFwDomainProcess aboutToAbortTransaction Transaction Behavior MicFwDomainProcess aboutToCloseTransaction aTransaction CloseMode Transaction Behavior MicFwDomainProcess aboutToCommitTransaction Transaction Behavior MicFwDomainProcess aboutToStartTransaction Application Framework User s Guide 4 Advanced Programming Reference 152 4 3 Domain Process as D Type Implementor Message Transaction Behavior MicFwDomainProcess activateTransactionContextFor aBlock Transaction Behavior MicFwDomainProcess canAbortAndClose Transaction Behavior MicFwDomainProcess canCommitAndClose Transaction Behavior MicFwDomainProcess commitAndBegin Transaction Behavior MicFwDomainProcess commitAndBeginAlone Transaction Behavior MicFwDomainProcess commitAndBeginTouched Transaction Behavior MicFwDomainProcess commitAndClose Transaction Behavior MicFwDomainProcess commitAndCloseProcess Transaction Behavior MicFwDomainProcess commitAndCloseView Transaction Behavior MicFwDomainProcess commitTransactionByDefault Transaction Behavior MicFwDomainPro
214. dForAspect anAspect vetoValue aProhibitedModel Services MicFwViewPort shouldEmulateEditable Services MicFwViewPort startInteraction aConnection Services MicFwViewPort startInteractionForAspect anAspect Services MicFwViewPort stopInteraction aConnection Services MicFwViewPort writeAccessRejectedForAspect anAspect vetoValue aProhibitedModel Overriding Default Behavior MicFwViewPort defaultEditableValueOf aDispatcherAspect Overriding Default Behavior MicFwViewPort defaultEnabledValueOf aDispatcherAspect Overriding Default Behavior MicFwViewPort defaultLateModelAccessValueOf aDispatch erAspect Overriding Default Behavior MicFwViewPort defaultLink aList onto aViewportOrNil valueOf anAspect Overriding Default Behavior MicFwViewPort defaultManipulatorValueOf aDispatcherAspect Overriding Default Behavior MicFwViewPort defaultMove aList onto aViewportOrNil val ueOf anAspect Overriding Default Behavior MicFwViewPort defaultProhibitedValueOf aDispatcherAspect Overriding Default Behavior MicFwViewPort defaultProvidedOperationsValueOf anAspect e Application Framework User s Guide 4 Advanced Programming Reference 4 4 Viewport 169 Type Implementor Message Overriding Default Behavior MicFwViewPort defaultReadableValueOf aDispatcherAspect Overriding Default Behavior MicFwViewPort de
215. dParameter Defines the parameter object which is to be used for the menu command The following protocols are available for setting the instance variables e accessorString anAccessorString label aLabel accessorString anAccessorString label aLabel mnemonic aMnemonic commandParameter anObject e manipulator aBlock e acceleratorText aString e acceleratorDescription aDescriptionString see Dynamic Menu Item with Accelerator and Direct View Manipulation through Manipulators e MicFwMetaSubMenuReauester An instance of this class will hold the definition for a cascade Menu item The instance variables to be set are the same as in MicFwMetaCommand except that accessor specifies the Connection protocol for the submenu e MicFwMetaSeparator An instance of this class will be represented by a Menu item separator in a Drop down or Popup Menu No instance variables have to be initialized Example menultems Return a MetapartCollection of meta for the dynamic menu items result result self getMetaControlListForAspect menultems ifAbsent self newMetaControlListForAspect menulItems add MicFwMetaCommand new accessorString testCommand label first test item yourself add MicFwMetaSeparator new add MicFwMetaSubMenuRequester new accessorString testSubMenulItems label my submenu yourself THIS IS A CASCADED MENU ITEM yourself result testSubMenulItem
216. diaaaavededeuesine 11 Who Should Read this Manual What You Should Already KNOW cccccceseeeeeeneeeeeeeenneeaeeeeeeenaaeeeeeeeaaees 11 Recommended Chaple S cennin o E O E A EAE T E O dtgnenes 11 Mynd on ine WED tence tectucatvarsdcende iu direeteanctlteevavuduthevaudelhcnsvitianenadntattebbaancdtehtearviithes ANAE E OARRA 11 Terms and Symbols of the Manual ieser eeeeaaeeeeeeeaaeaeeeeeeaaeeeeeeesaeaeeeeesaeaeeeeeneeaeeeneneneaees 11 PREIGASE NOIGS A 13 Version 220 seis ce bate thig ed pte 22h aa aaa waa angen ddan ind ddan cad aa Ea aa dundee nde de deat Aaaa aa E aa Eaa EA 13 Version 4 Biicsssacccacsuvenddsasewntcal oae aaa eaan hen da aa aAa EE E santas sean ied aN E aa E a a iA 13 NCES ION 2c ie dees herds negate a lana EE A wins TA T A I E E en 13 Version 4 Oscivecsscsictoihavsuydcie cs coc tade eyes ve Dace ded eebs A E AAN A hay aud getdate judas edd EOE ATEA 14 TEOT AUE Ea cee saat EEEE TE daa EN tas suntan datiean A E EE A 16 R lease 3 4 Versi n Vid rnst aa E aaa a a ia a a ha ana aaa iaaa 18 Installing the Application Framework ccccccccccceseennnnsnnnnnnnnneceeeneeeensssssensnnnssnsesnsssnsnssens 21 Wh at YOU NGC ss ciinei i aa ae a dat accuasusisanadeduntedade fa sti enagagabeandesdeacaudvaguaaducaasessccexnpee 21 Installing the REIGASC File Sisus a dvaabssscuedbenatsluezeasbecuuebesbed caedvasal cageaesaterseebeayacee 21 Loading CONPGUFATON NAPS 2st ises ssscccdendex healgenschadanpasiedamennaa spevadaned E aa aA aE aaa
217. ds are named like they are named at the Hint When the 4 name part of the Groupbox is set then the process of the groupbox starts when the view come up Now we can start our master process again and take a look to the transactions browser to what happens while you add a new member 2 3 6 Authorization Define transaction soak Overriding default Manage child processes Enable authorization Define modality 2 3 6 1 Overview 2 3 6 1 1 Where to implement authorization Authorization does not belong in an application GUI as implemented in many 4GL tools Authorization should be managed as far inside an application as possible Benefits of this approach include the elimi nation of security loopholes 2 3 6 1 2 Types of authorization Most applications distinguish between the following 2 types of authorization mechanisms Manage access to the application s data for a DO Manage the right to execute certain functions for a DP This tutorial demonstrates both types of authorization 2 3 6 1 3 Required applications Authorization requires that application micApplication Service Authorization Runtime is loaded 2 3 6 1 4 Types of authorization in this tutorial In this tutorial 3 types of access to user information will be implemented e canRead The user can read data Application Framework User s Guide 2 Tutorial PMS MICADO 70 2 3 Beyond Basics e canModify The user can add or modify
218. dvanced Programming Reference 170 4 4 Viewport ony M YN D MicFwViewPort gt gt defaultCanMove aList valueOf aSourceAspect MicFwViewPort gt gt defaultCheckedValueOf dispatcherAspect MicFwViewPort gt gt defaultCopy aList onto aViewportOrNil valueOf anAspect MicFwViewPort gt gt lt anAspect gt Editable MicFwViewPort gt gt defaultEditableValueOf aDispatcherAspect MicFwViewPort gt gt defaultEnabledValueOf aDispatcherAspect MicFwViewPort gt gt defaultLateModelAccessValueOf dispatcherAspect MicFwViewPort gt gt defaultLink aList onto aViewportOrNil valueOf anAspect MicFwViewPort gt gt defaultManipulatorValueOf anAspect MicFwViewPort gt gt defaultMove aList onto aViewportOrNil valueOf anAspect MicFwViewPort gt gt defaultProhibitedValueOf dispatcherAspect MicFwViewPort gt gt defaultProvidedOperationsValueOf anAspect MicFwViewPort gt gt defaultUpdateOfMetaControlList aMetaControlList forAspect anAspect MicFwViewPort gt gt defaultVisibleValueOf aDispatcherAspect MicFwViewPort gt gt graphicsPresentation MicFwViewPort gt gt readOnlyAspect anAspect MicFwViewPort gt gt wantsCachedReadOf aDispatcherAspect MicFwViewPort gt gt wantsImmediateViewUpdateOf anAspect 4 4 3 5 Aspect Value Conversion MicFwViewPort gt gt getMetaControlListForAspect anAspect Application Framework User s Guide aA 4 Advanced Programming Reference MYND 4 4 Viewport 171 MicFwViewPort gt gt getMet
219. e Archiver See Code Archiver Authorization The access to individual objects controlled on the model level Authorization works both for accessing attributes of Domain Objects and for executing Aspects of business processes Broker To allow subsystems or specific requests to them to be exchanged with an own implementation Applica tion Framework uses Broker classes that offer a thin public interface with the internal knowledge how to dele gate the call to the subsystem A common Broker concept enables the developers to modify request algorithms or subsystem behavior quite easy Cardinality The cardinality of a relationship determines the required min and max number of target objects ref erenced by the source variable In 2 way relationships there are 2 cardinalities The second cardinality deter mines the requried min and max number of source objects referenced by the target variable CB Connections Browser Child context A child context can change any variable locked by its parent A variable having been changed by the child context is now locked by the child context The parent context cannot change a variable locked by the child See parent Context Code Generator See Accessor Generator Commit a context Committing a context has the same effect as committing all transaction levels TrLevels in the context Committed target In a VersionObject A getter message to a source object will return the committed target object
220. e MicFwRdbDirectState ment MicFwAbstractPersistenceManagerRdb gt gt registeredStatementAt aName ifAbsent aBlock Answer the registered direct statement stored as aName The result is of type MicFwRdbDirectState ment MicFw1Relationship gt gt releaseTarget Remove the committed target from the receiver without any transacted changes MicFwNRelationship gt gt releaseTarget Remove the committed target from the receiver without any transacted changes MicFwRelationship gt gt releaseTarget Remove the committed target from the receiver without any transacted changes MicFwPersistentObject gt gt reload Application Framework User s Guide MA 304 Appendix A API MYND Answer the a new loaded instance of the receiver s class which has the same persistence identifier as the receiver MicFwPersistenceManager gt gt reloadinstance persistentObject Reload a copy of aPersistentObject from the persistence medium MicFwNRelationship gt gt removeAll Obsolete Remove all objects from the relationship maintained by the receiver Also delete the inverse ref erences MicFwDomainProcess gt gt removeChildProcess aChildProcess Remove the child process lt aChildProcess gt from the receiver process MicFwDomainProcess gt gt removeChildProcessNamed aConnectionName Remove the child process at the Connection named lt aConnectionName gt from the receiver process MicFwViewPort gt gt removeMetaControlListForAspect an
221. e as soon as they change e g Aspects control ling progress bars MicFwRabIntegrity Violation gt gt wasNMDelete Answer true if the operation that caused the error was a DELETE operation on a NM relationship MicFwRabiIntegrity Violation gt gt wasNMInsert Answer true if the operation that caused the error was an INSERT operation on a NM relationship MicFwRabiIntegrity Violation gt gt wasObjectDelete Answer true if the operation that caused the error was a DELETE operation on a persistent object MicFwRabiIntegrity Violation gt gt wasObjectinsert Answer true if the operation that caused the error was an INSERT operation on a persistent object MicFwRabIntegrity Violation gt gt wasObjectUpdate Answer true if the operation that caused the error was an UPDATE operation on a persistent object MicFwRdbSQL Clause class gt gt where anSQLWhere Answer an instance of the receiver that represents anSQLWhere MicFwPersistentObject class gt gt where aQueryArray Answer a collection of instances of the receiver that conform to the query condition in aQueryArray Retrieve instances from persistence medium MicFwPersistentObject class gt gt where aQueryArray orderBy anOrderArray Answer a collection of instances of the receiver that conform to the query condition in aQueryArray Retrieve instances from persistence medium Order by anOrderArray MicFwPsExtentldentifierSQL gt gt whereSQL Answer the sql clause MicFwPsExtentlden
222. e class currently selected in the Process Classes Hierarchy column If such a class exists then the class become the selected class in the Process Classes Hierarchy column and the connection is selected in the Processes Hierarchy column For example assume that the following class is selected Process Classes Hierarchy Processes Hierarchy gy MicFwToolDomainProcess E o 3 MicFwConnectorProcess a aaa ae Selecting Find as child connection will locate the process class that has a child connection to the 5 Tools a Application Framework User s Guide MYND 5 2 Domain Processes Browser 199 selected class Process Classes Hierarchy 4 MicFwToolDomainProcess Processes Hierarchy MicFwProcessesBrowserProcess browser 6 referencesTreeProcess 2 MicFwConnectorProcess 4 MicFwPBPreferencesProcess Ta MicFwPBPropertyListProcess tg MicFwPBReferencesTreeProcess ra Inherited lt none gt Inherited lt none gt MicFwPreferencesView Viewport MLS context MLS supercontext 5 2 2 3 2 Search for a class Opens a dialog for entering the name of the class to search for in the processes displayed in the Process Classes Hierarchy column 5 2 2 3 3 Browse class Opens the VA Class Browser on the class selected in the Process Classes Hierarchy column 5 2 2 3 4 Browse class Opens the VA Hierarchy Browser on the class selected i
223. e columns Process Classes Hierarchy Processes Hierarchy Hame Value j w MicFwToolDomainProcess 4 MicFwConnectorProcess toolCenter connectorEditProcess Note also that only the immediate connections for a class are displayed Subconnections for a connection are not inherited 5 2 2 8 3 Resizing the Process Hierarchy column The column can be resized Process Classes Hierarchy i icFwToolDomainProcess MicFwConnectorProcess 5 2 2 9 Processes Hierarchy column The connections and any subconnections for the Domain Process class selected in the Process Classes Hierarch column are displayed in the Processes Hierarchy column as shown in the following diagram Process Classes Hierarchy Processes Hierarchy 3 MicFwToolDomainProcess ia toolCenter toolCenter connectorEditProcess connectorEditProcess connector MicFwConnectorEditProces toolCenter 5 2 2 10 Name Value columns The Name Value columns displays the name and value of properties for the selection in the Processes Hierarchy column 5 2 2 10 1 Non transaction properties displayed in column Name The non transaction properties displayed in the Name column depend on the type of connection selected in the Processes Hierarchy column PROPERTY MAIN _ CHILD __ MULTIPLE_ DEFAULT_ BASE PROCESS PROCESS CHILD_ BASE PROCESS Type X X X Name X Prefix X
224. e following side effects have to be considered for pages declaring child process access Any transaction declared for the child process will be started When removing a page the transaction for the child process will NOT be ended but remain open until it is committed or aborted by a command or the view is closed 4 8 3 7 Dynamic Container Details View The content of the widget AbtContainerDetailsView are colums These columns are represented within the framework by instances of the class Therefore the content accessor of a connected container details view returns a metapart collection containing meta Aspects MicFwMetaAspect gt gt aspect aValue MicFwMetaAspect gt gt columnWidth aValue MicFwMetaAspect gt gt positionHint aValue MicFwMetaAspect gt gt title aValue The type and number of colums in a details view can be changed dynamically A which is obtained from a subaspect will control the columns The name of the subaspect is comprised of the content accessor of the details view and the string ItemAspects The subaspect is implemented in the connection viewport of the connection that returns the content for the details view ContentViewPort gt gt lt detailsViewContentAspectName gt ItemAspects Example contentListItemAspects result result self getMetaControlListForAspect columnsA ifNil self newMetaControlListForAspect columnsA add MicFwMetaAspect new accessorString defaultProcess col4
225. e for all objects DIRECTLY referenced through persistent relationships This call is only valid inside an active persistent transaction context MicFwPersistentObject gt gt becomeLoaded Activate persistence for the receiver within the current persistence context and set the loaded flag so that the receiver will not be inserted on the next transaction commit NOTE this call is only valid inside an active persistence transaction context MicFwPersistentObject gt gt becomeLoaded anArray Activate persistence for the receiver within the current persistence context and set the loaded flag so that the receiver will not be inserted on the next transaction commit Do the same for all objects referenced through persistent relationships whose names are in anArray NOTE this call is only valid inside an active persistence transaction context MicFwPersistentObject gt gt becomeNewPersistent Activate persistence for the receiver within the current persistence context Set up the receiver to be stored on the next transaction commit NOTE this call is only valid inside an active persistence transaction con text MicFwPersistentObject gt gt becomePersistent Activate persistence for the receiver within the current persistence context if necessary If the receiver is already persistent make it persistent in the current contexts POM This call is only valid inside an active persistence transaction context MicFwPersistentObject gt gt
226. e passed as first argu ment From the technical point of view there are generic Evaluators which use reflectivity for the method call and hard coded Evaluators e The application framework uses Evaluators for two purposes e The Aspect and Action Feature objects have Evaluators to get and set the specific Aspect resp per form the action Model object classes also generate Evaluators for their user implemented features which are requested by the Aspect Action Feature object for direct communication with the model i e if there is no complementary method implemented in the Viewport e ApplicationFramework event handling is based on a special Evaluator the which can hold a linked list of Chainable Evaluators subclass of behind itself which are called in sequence when the Method of the chain head is called There are and methods to add remove Chainable Evaluators and a method to remove all Evaluators for a given receiver The Evaluator Chain Head has a well defined Application Framework User s Guide aA 6 Customizing MYND 6 2 Internal Design 225 behavior when an Evaluator is added or removed during evaluation i e iteration through the list Added Evaluators will not be evaluated during the current iteration removed Evaluators will no longer be eval uated even if they are still in the stack of the current iteration 6 2 2 Adapters 6 2 2 1 Platform Dependent and Independent Components The Application Framework d
227. e the following Child Controls for the connected part will access this Domain Process as default process and use its Model View Connector for resolving Connection Names l e this implies that a separate Connector will be created for the part Any Connection request from within that part will then be directed towards that Connector If no valid lt default base gt has been set the Default Base Connection corresponding to the declared pro cess will be used Any transaction declared for the lt default process gt will be started at initialization In order to select a Group Control Page Form the method selectAspect should be used It should be send to the process to which the page is connected For example if a page in a notebook is named editAddress_secondPage_ you have to call self editAddress selectAspect secondPage in the parent process to bring this page to front The released version of the Application Frameworks contains a few examples applications illustrates the reuse of Forms and Notebook Pages These can be examined by the Examples Browser 4 8 1 2 Using Dynamic Group Controls In some cases it might be nessesary to exchange parts on the view dynamically or to add remove new parts The framework support this in an easy way But you should always keep in mind that you must pay a price for this feature This price is a lack of performance due to the fact that every exchange of view components causes a reconnect of framew
228. e to the group control and its inner widgets 3 5 1 2 2 How to connect a static column A static column connection has 2 parts The process for the column controls the column In this case the accessor would have the following format defaultProcess_columnl_ To display an aspect with the name id of the lists objects a column1 method must return the aspect as the content of the column For example Application Framework User s Guide 3 Programming Reference ew s 102 3 5 View Parts MYND columnl tid The label subaspect is used to set the label of the column columniLabel 7 ID aw i The subaspect editable determines whethe or not the aspect is editable columnliEditable false The editability must not not be set within the VA settings view to false 3 5 1 2 3 How to connect a dynamic column A container details view is connected as defaultProcess_list_defaultProcess_listSelection_asListEntry_ The columns are determined with the ItemAspects subaspect of the contents of the list here gt list lt listItemAspects currentItemAspects isNil ifTrue currentItemAspects MicFwMetaPartCollection new add MicFwMetaAspect new accessorString defaultProcess coll title Name yourself yourself currentItemAspects This code will add a column and the aspect to be displayed is returned by the col1 method of the default process as returned by the defaultProcess col1 To display wit
229. eContents displayMethod not specified VOID accessorMethodContents_ connectionNameSe accessorMethods ection_ ction VOID 3 5 18 1 2 4 connectionNameContents connectionNameSelection displayMethod not specified VOID accessorMethodContents_ VOID_ accessorMethodSel VOID ction_ 3 5 18 1 2 5 connectionNameContents connectionNameSelection accessorMethodSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ VOID_ VOID 3 5 18 2 Supported Subaspects e BackgroundColor CgRGBColor e Editable Boolean e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide 3 Programming Reference 124 3 5 View Parts one M YN D 3 5 19 Container Icon List 3 5 19 1 partName 3 5 19 1 1 Syntax connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethodsS ction_ displayMethodItem_ The default presentation method is The content of this Control is aCollection The selection of this Control is aCollection If connectionName is omitted or declared as VOID_ The Default Base Connection will be used 3 5 19 1 2 Supported variations 3 5 19 1 2 1 All parts of partName specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction displayMethodItem_ 3 5 19 1 2 2 displayMethod not specified connectionNameCont
230. eMemberProcess Process default MicFwViewPort MicExampleMemberProcess lu oil Control Pane OS Control Accessor Text B MicFwObjectAspectControl AbtLabelView OSStatic dateOfBirth MicFwObjectAspectEditorControl AbtTextView OSTextEdit clubMember dateOfBirth 11 2 62 MicFwObjectAspectControl AbtLabelView OSStatic firstName MicFwObjectAspectEditorControl AbtTextView OSTextEdit clubMember firstName Joe MicFwObjectAspectControl AbtLabelView OSStatic initialWeight MicFwObjectAspectEditorControl AbtTextView OSTextEdit clubMember initialWeight 189 5 MicFwObjectAspectContral AbtLabelView OSStatic name Eea AbtTextView OSTextEdit clubMember name Sample of If you open it while the little example is running it should look like the figure above You can see that the open has a Base and a Process Connection The model of the Process Connection is the Domain Process as we have The Base type Connec tion s model is an instance of As there is only one Base Connection it is auto matically the Default Base Connection The List at the bottom of the Connectors Browser shows you the Controls in the selected Window Notice that the name we gave an entry field is listed as an accessor here with the trailing underscore removed This accessor will be sent to the default Domain Model as a Smalltalk message to retrieve the value of an attribute the accessor followed by will be used to set the value of the attr
231. eals that for the with the text the Accessor is registered as Since buttons are always assigned to a Domain Process the widget is assigned to the correct Connection Therefore it can be assumed that the widget name was not spelled correctly As expected the search for an method in the framework of the classes is unsuccessful However there is a method with the name which is suitable for our purpose As a result the widget has to be renamed into After changing the widget name through the GUI Builder this widget is also connected The application is finished 2 4 3 4 Transaction Controlling The Transactions Browser is started via the Menu micFrameworks with the selection Browse Transac tions When declaring variables with the Object Net Browser it is determined whether or not they can par ticipate in transaction handling The Domain Processes Browser determines whether a Transaction Context should be automatically started for this Domain Process When viewing the Transactions Browser You should see marked with a lead ing star in the left List Otherwise no transaction handling was arranged in the Domain Processes Browser for this Domain Process After the selection of the Transaction Context in the Transactions Browser the transaction level appears in the next List If the transaction level gets selected the instances of the class which take part in transaction handling appear in the right List In our example if an entry is se
232. ec tionName withResult aProcessResult MicFwDomainProcess gt gt closeRequested aCloseInfo MicFwDomainProcess gt gt connectorDeactivated MicFwDomainProcess gt gt beNotifiedOfDocumentsClose MicFwDomainProcess gt gt defaultClose MicFwDomainProcess gt gt processClosed MicFwDomainProcess gt gt processResult MicFwDomainProcess gt gt removeChildProcess aChildProcess MicFwDomainProcess gt gt removeChildProcessNamed aConnectionName MicFwDomainProcess gt gt topLevelProcessClosed MicFwDomainProcess gt gt viewClosed 4 3 3 10 Creating and Using of Dynamic Domain Processes In some special cases you might use dynamic child processes The fundamental difference to declared processes is that you initiate the creation and closing of the process instance within your application Therefore a dynamic Process may not always be represented in your process hierachy Once started a dynamic and a static process react and behave in the same manner Hint You should alway consider if you ony solve the problem by using a dynamic Process Extreme use of dynamic Processes leads normaly to problems within your application design MicFwDomainProcess gt gt addNewChildProcess aDomainProcessClass MicFwDomainProcess gt gt addNewChildProcess aDomainProcessClass named aSymbol MicFwDomainProcess gt gt addNewChildProcess aDomainProcessClass named aSymbol withContext aContext withSuperContext aSuperContext MicFwDomainProcess gt gt st
233. ect in the left pane then select childProcConn in the mid dle pane the childProcConn Connection refers to the In the right pane change the Con nectionTransaction handling to and finally change the isolate mode to 2 4 2 3 5 Finalization All declarations made in the Domain Processes Browser refer to the selected Domain Process Selecting the Menu item Save All Changes in the Browser Menu compiles the current state of declarations into that Domain Process class method This is performed for all of the Domain Processes which have unsaved changes in the current browsing session The method createApplicationDescription should not be modified or deleted since all changes will be lost when Save All Changes is performed from the Domain Processes Browser the next time 2 4 2 4 Additional Activities The method is implemented in the class to initialize its Domain Objects transactionStarted self conn DemoInitBase new self init DemoBase new The method initialize has to be reimplemented in the class in order to supply the List with data initialize super initialize self listEntries OrderedCollection new add Henry add Julia add Walter yourself Application Framework User s Guide lt gt 2 4 Quick Tour of Tools 81 The methods in the Viewport must also be implemented with the Class Browser listEntry this method set the selection of the list List sel
234. ect or the name of the accessor method is incorrect TS 10 2 You confirm a command control for example a button with the result that a Debugger with the message a method named lt method gt was missed in class lt aProces sObjectClass gt appears even though you have implemented the method in a Viewport When running the Domain Process the Viewport for the Domain Object Domain Process was not found The class method which contains the class name of the corresponding Domain Object Domain Process as a String was not implemented was implemented as an instance method or e the name of the Domain Object Domain Process was accidentally misspelled e the name of the Domain Object Domain Process was not enclosed by apostrophes A second possibility to connect a Viewport to a model is to declare it in the DomainProcessesBrowser at the Connection of the Domain Object Domain Process to its parent Domain Process You have to check this as well You confirm a command control for example a button with the result that a Debugger with the message appears even though you have implemented the method in a Viewport TS 10 3 You have implemented a method in a Viewport class and you wonder why it is not called even though you have named a widget accordingly Worse scenario A Debugger is also activated with the message lt gt does not understand lt gt When running the Domain Process the Viewport for the Domain
235. ection If connectionName omitted or declared as VOID_ The Default Process Connection will be used 3 5 36 1 2 Supported Variations 3 5 36 1 2 1 All parts of partName specified connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ 3 5 36 1 2 2 baseConnectionName not specified connectionName_ accessorMethod_ VOID_ baseDefaultProcessName_ 3 5 36 1 2 3 baseConnectionName baseDefaultProcessName not specified connectionName_ accessorMethod_ VOID_ VOID_ 3 5 36 1 2 4 connectionName baseConnectionName baseDefaultProcessName not specified VOID_ accessorMethod_ VOID_ VOID_ 3 5 36 1 2 5 connectionName baseConnectionName not specified VOID_ accessorMethod_ VOID_ baseDefaultProcessName 3 5 36 1 2 6 connectionName accessorMethod baseConnectionName not specified VOID_ VOID_ VOID_ baseDefaultProcessName 3 5 36 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean e ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide oe 3 Programming Reference 142 3 5 View Parts MYN D 3 5 37 Windows Notebook 3 5 37 1 partName 3 5 37 1 1 Syntax connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ Content of the Control is aMicFwMetaPartCollection If connectionName omitted or declared as VOID_ The Default Process Connection will be used 3 5 37 1 2 S
236. ections are Collections in contrast to choice controls So this method have to return a Collection OrderedCollection new add self model name yourself This method answers the name of the Domain Object to the List listEntry anOrderedCollection anOrderedCollection isNil or anOrderedCollection isEmpty ifTrue self self model name anOrderedCollection first This method places the selected name from the List into the Domain Object listLabel YourList nameLabel ourName These two methods place the Label text into the view name aString self model name aString self model listEntries includes aString ifFalse self model listEntries self model listEntries add aString yourself The method places the name entered in the Text field into the model If the name is not yet in the List it will be added 2 4 3 Testing and Debugging 2 4 3 1 Starting the Demo This example can be started from the workspace with the following command DemoStartProcess new openView 2 4 3 2 Logging Protocol After starting the demo application and clicking the button Start DemoProcess a walkback takes place In the Debugger the following message appears Inv1alid Model The instance lt a DemolnitBase gt is not a valid model for the connection named lt conn gt which requires a lt DemoBase gt Further information can be obtained through the
237. ed Undefined 9 Child process l Base X Non Aetivated Not editable MicExampleAddNewMemberProcess with default base connection lt club gt and without default view name Now we need the instance variable for the new member So open the Object Model Explorer add the add new member process to the model and add the instance variable to it E afl Mode Class Variable Options Lfa Ala t ale ula elal el E E Type mbi e String Variable il Name newMermber F Relationship Smalltalk relevant Type converter MicFwTypeConverter M Transact F Validate type wil MicExampleAddNewMemberProcess VA Smalltalk Application Framework User s Guide 2 Tutorial PMS MICADO 68 2 3 Beyond Basics Don t forget to save your work 2 3 5 9 2 1 Using Transaction hooks Now we have to implement the creation of a new member and to initialize our child process with the new member at the beginning of the transaction So we reimplement the method at transactionStarted self newMember MicExampleClubMember new self member clubMember self newMember This method is called automatically when a process starts And we have to add the new member to the club after the user commits the transaction MicExampleAddNewMemberProcess gt gt aboutToCommitTransaction self club members add self newMember This method is called automati
238. ed an item you can choose an Aspect in the lower Drop down List which is used either to get the String which appears as list entry or to handle the children of an object inside a hierarchy list You can get the information about all touched models for each of these list item Aspects in the table called Models touched while touching selected item e Application Framework User s Guide eX 5 Tools 5 5 Online Debugger 213 5 6 VA Composition Editor GUI Controls can be connected to Application Frameworks based models by using a specific naming con vention We recommend this method especially for complex or dynamic views The VisualAge Composition Editor provides two additional hooks for connecting parts to the model world One is to use the settings table and with the help of the other feature you can use VisualAge Connections to connect to features of models and Viewports The last feature is not completely supported by now but very helpful when you begin to design a GUI 5 6 1 Connect to Visual Parts with Part Settings The Composition Editor has been extended to provide another means of specifying Aspect Connections In the Settings table for GUI Controls there is now some table rows for entering this information E clubmemberlist List Properties _ o Name Value A aspectName members S Cancel attributeName backgroundColor Apply borderWidth 3 connectionName club eat converter Help
239. ed by the framework The second Connection has like the Connection a generic Viewport from the class even though the Viewport was defined The reason for this is that the instance from the class cannot find a Viewport which returns the string DemoBase in the class method Therefore the Viewport class method must be corrected to DemoViewPort gt gt portName DemoBase An other entry of the Connection column is init the Default Base Connection e The last Connection was created at run time of the framework for the List which is shown in the column Type Clicking on this item the corresponding List Control appears in the control list of the Connectors Browser e At the Accessor column you can check which methods were called by the List when it want to fill its contents and the selection Remembering the naming convention you know that the control asks its content by getting the model using the first name part and gets its content at this model using its second name part The second name part here is but the model at the Connection is and DemoBase has not implemented the method that returns the OrderedCollection of objects which should be transferred to the List The Connection has the information for the List The List widget however is searching for them in the Connection The widget name defines the Connection the data comes from Therefore the name of the widget should be changed to e After clicking onthe Con
240. ed sub Aspect can be defined in the ViewPort for the View These subaspects methods typically control such char acteristics of a view control such as whether or not the part is enabled visible or the label of the part 3 5 1 4 Overview of supported parts 3 5 1 4 1 Buttons e Push Button page 106 Toggle Button page 107 e Radio Button Set page 108 Scale page 109 e Slider page 110 e Hot Spot page 111 3 5 1 4 2 Data Entry Application Framework User s Guide 3 Programming Reference ew 104 3 5 View Parts Text page 112 e Multi line Edit page 113 e Label page 114 Spin Button page 115 e Mic Status Bar Part page 117 e Mic Standard Status Bar Part page 118 3 5 1 4 3 Lists e List page 119 e Multiple Select List page 120 e Drop down List page 121 Combo Box page 122 e Container Icon Area page 124 e Container Icon List page 125 Container Flowed Icon List page 126 e Container Icon Tree page 127 Container Details page 128 Container Details Tree page 129 e Packeting Container Details page 130 Container Details Column page 131 3 5 1 4 4 Menus e Popup Menu page 132 e Menu Choice page 133 e Menu Cascade page 134 e Menu Toggle page 135 e Mic Fw Toolbar View page 136
241. ed system the targets are fixed and cannot be changed during run times 7 3 1 1 13 2 Show csv info lt gt Hide csv info This setting specifies when the system should display for the Locale Entities and whether and if so how many Locales exist in currently visible csv files If the csv information is displayed there are three states in which a Locale Entity may exist Application Framework User s Guide aA 7 Multi Language Support MLS MYND 7 3 The MLS Data Editor 251 all means that all Locales exist in a csv file some means that some but not all Locales exist in a csv file none means that no Locales exist in a csv file 7 3 1 1 13 3 Update csv files automatically lt gt Don t update csv files This setting specifies whether the csv files viewed by the system are to be automatically changed or not in the event of any changes to the unicode data 7 3 1 1 13 4 Set csv path The user is able to enter the path to the directory in which his csv files are held Only the csv files in this directory are visible for the system 7 3 1 1 14 Extra 7 3 1 1 14 1 Edit standard locales The user is able to define a quantity of Locales which are suggested when he is working with the editor at those points where one or more Locales have to be specified For instance the quantity of all possible lan guage territory combinations is very restricted and the choice is simplified for storing data a VA dump file is created
242. ed variations 3 5 6 1 2 1 All parts of partName specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ 3 5 6 1 2 2 connectionNameContents not specified VOID accessorMethodContents_ connectionNameSelection accessorMethods ction_ 3 5 6 1 2 3 connectionNameContents connectionNameSelection not specified VOID_ accessorMethodContents_ VOID_ accessorMethodSelection_ 3 5 6 2 Supported Subaspects BackgroundColor CgRGBColor Editable Boolean e Enabled Boolean e ForegroundColor CgRGBColor e Visible Boolean Application Framework User s Guide 3 Programming Reference 110 3 5 View Parts as M YN D 3 5 7 Hot Spot 3 5 7 1 partName 3 5 7 1 1 Syntax connectionName_ commandMethod_ If connectionName is omitted or declared as VOID_ The Default Process Connection will be used 3 5 7 1 2 Supported variations 3 5 7 1 2 1 All parts of partName specified connectionName_ commandMethod_ 3 5 7 1 2 2 connectionName not specified VOID_ commandMethod_ 3 5 7 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide aA 3 Programming Reference 3 5 View Parts 111 3 5 8 Text 3 5 8 1 partName 3 5 8 1 1 Syntax connectionName_ accessorMethod_ The content of this Control is aStri
243. editable Aspects like the text of an entry field The Abstract Window class is the same for a variety of Controls because the abstract pro Application Framework User s Guide 6 Customizing MA 222 6 2 Internal Design MYND tocol is equal Communication with the model is performed by the Abstract Events and the translation to the protocol of the real window is done by the Platform Adapter A few Object Aspect Controls require spe cial treatment therefore their Abstract Windows are subclasses of i has other Controls as children The Group Control can have a title which can be set according to one of the Model Aspects Some Group Controls allow dynamic setting of their internal com ponents at runtime their abstract superclass is a subclass of named is a specialized Group Control to handle the Main Window and respectively the shell It contains some special Abstract Events to activate and to close a view and are the Abstract Controls for Notebooks and Notebook Pages is the Abstract Window for all kinds of Lists Its protocol is somewhat more complicated than other Object Aspect Controls because it has to care for the list of objects to be repre sented the list of selected objects and the representation of the objects shown in the List Therefore it creates a special type of Connection at runtime a List Model Connection Instance of class where Viewports are created for the objects shown in the List These Viewports are passed
244. eeeeeee 42 internationalization ce eeeeeeee cece se ee ee eee 26 inversion Of CONTIOL cece eeeeecceeeeeecseeeeees 42 involved Domain Object ceceeeeeeeeeeeeees 30 Isolate mode 0 cc eeeeeseeccceceseeseesseeceeeeeees 204 L Label sccsecdssatsiis sicisedsideveransaviead uberis aecepeelaas 114 Language of Connector cceeeeeereeees 206 late model ACCESS ee ceceeeessesetteeeeeeeees 147 legacy Application ceeseccceeeeeeeeeees 26 LE A E AE 119 213 List COto erorcen ashe 215 List 0 9 0 eer 214 List Model Connection ccceeesereeees 223 Load a session from disc toolbar icon 201 Load F ature cecccccccccessessessrteceeeeeeseessens 22 LOCALO arenira ninrin EA 19 237 Locale Categories eseeeseesesseseseserees esse 19 Locale Category cececsssccceceeeeessesereeees 237 Locale Entity 0 0 0 ceessesenseeeeeeeeeeeeeens 237 Locale Manager cecsessccececeeeseesesseseees 19 localization cecanssccesascetcapetenterdtauiacansauvedsasias 237 Localize MLS Context hierarchy 101 296 OOT 210 LOGO SI sr E 329 Losing Focus Event cccccccscssesereees 210 Application Framework User s Guide Index 343 MACROS monnaie ATO 225 Main ProcesS ccccceeseeseeeseeeseees 38 39 205 Main WINGOW ccccceecccseeccceeeessseseeeesseeees 222 Main Window Adapter s es 221 Main Window Control seeen 221 MAIN PROCESS
245. eeeeeeeaeeeeeenaaaeeeeseeaeeeeenenaaeeees 50 Figure 25 Create new class Definition of super class ANd NAME 0 eee eee ee eee e eee ee sees eeeee nett eset ae eneeeeees 50 Figure 26 Create new class Specification of Application 0 0 eee ceeeeceeeee eee eeeeeeeeeeeeeeeeeeeeeteaeeeeeeeeeeeeeeeeeeeeees 50 Figure 27 Context menu of attribute list 0 eect ee eeee eee eee ne ee teeta neat eset a aeee sree aeee eee AANER NANEN 50 Figure 28 Close object modal vee scciiese esievessceieceve cciecene ee ceeevedeececdvesbeusdvuevesds qaveageenededeeeesceedes sti cnveeessedeeeee eect 50 Figure 29 Object Model Explorer with MicExampleClubMember class cecc ees e eee e recess eeeeee teas eeenneees 51 Figure 30 Object Model Explorer with MicExampleClubMember Class ccceceeeeeeeceeeeeeeeneeeeeeenaeeeeeeeaees 51 Figure 31 Domain object and tS ProC SS o oo eee eeceeeceeeeceeee eee eeee eee ee eeeaeeeeeeeaaeee eee eaaaeeeeeeseaeeeeeesaeeeeeeesegeeeeeeseeeneeeees 52 Figure 32 Open proCeSs MONU 2 siiisei eciveeeceneeiveee ceeediv naie E A EAT AT EE EA EE AARAA EAN SNS 52 Figure 33 Domain processes DrOWSED ssesscsnsiirepae eiaa anina RAEE AENA EEA AAAA 52 Figure 34 Add base Connettori seiiccieusveccdccvvvescescevvescesccvveddeccevevs sec EE ANETE EE TT ERNER 53 Figure 35 Add base connection n asrienireirarsieeir ariaa oai e i AAEE ENAIRE EEEE AAEE EAEE AAEE E EAN 53 Figure 36 Set base connection NAME sisssrirsrsssrii irs inia E
246. eeeeeeeeeeeeeeeeeeees 245 2 7 Using the MICGMISKGY cerpi deuaedepsvaskdocexastgacsessslacaieseeatccaupes OE 245 T20 Creating an MISGONOX raissa A E E E E diesel enti nds inetd 247 7 2 9 The MUS AP loren iren pnia a aa aa aeadh N A Ea a Ea aaie 247 TS WIV TALES D ta Editor sceri eie e eee paratae seana Kaadaa 248 Application Framework User s Guide MA 8 Table of Contents MYND Teo Ne OVEIVIOW ee Cn a ee aa 248 T WN ee ocean cit cheese ese oe ec 253 Tk k FOMA S ss csicitee cts eaten ER E T ea tee E sae eee te 253 Ts EXAMPICS ctsctcsieercietaeserctane edit lect atte ctaidiansiedenicectat cee tiantted acaba eishaetenedbbeelakaaceeasiehaabee 254 7 5 1 Externalize Data and Change Language During Runtime eecececceeeenceeeeeeeeneeeeeeeaaeeeeeeeaeeeeeee 254 79 2 AOAC EXO ISOS ornini iei EEEE AE SEE RREO E tennant EAER 256 7 6 Usage of Locale Categories CompoundMessage and CompoundString 06 258 7 7 Packing the Frameworks using MLS xcs cseccasheaecexet sve ceannine sienaeneneadelearadananeniienieebieets 259 Creating Runtime Executables for DistriDUtion cccccssssessseeeeeeeeeeeeeeeeeees 261 8 1 DCU ON cette ace aac heretic cece etiaceneateeniee E A 263 8 2 Organization of Application Framework cc ccccccceeeeeeeeceeeeeeeeeeeneeeeeeeeeeeeeeeeeeeeeeeee 264 8 2 1 Layout of Application Framework Components ccceeeeeeeeeeeeeeeeeeeeeeeeaeeeeseeeaaeeeeeeeaaeeeeeeeaaeeeeeeeaas 264 8
247. eeeeeeeeeeeeeeeees 209 Update iiinis 42 148 212 230 331 Use own conteXt eeeesseseesesssssseserrerrsssse 204 Use parent Context ecessessrteeeeeeeens 204 user INtEFACTION cece ceeeeeeeeeeeeseeeeeeene 35 user trANSACTION cc ccececcceceeeeseeseeees 29 42 userlnputConvertError eeceeeesseeeeeeees 322 Application Framework User s Guide 346 Index V Validate Type sciscscccsaseaccesasnavccessesdccsasnacea vanes 58 validation 34 42 47 58 85 219 222 224 230 DID Betts ee E E enc peas t pects 328 331 valueOfAttributeNamed ifAbsent 234 VELOACTION menite r e ERN 229 VIEW seircean eana E RES 208 VEW eea a AE A E 19 35 View taD zsir n 208 View Adapter ccccsscccesssecccesssreeeeesenaes 221 View ASp Ch nncs aas 230 View classes entry field cece 208 View Connectors BrowSe 00000 42 209 VOW Plt vcscstosctevsiccceidvesciteedsnntbecctanctes 222 226 ViewlmpleMentation cccceeeeeeees 19 322 Viewport 19 31 34 36 37 42 61 78 82 84 89 90 91 100 148 189 204 205 215 216 219 221 223 225 229 231 232 241 243 246 266 SDE E E coheed aameaadeamaniaeien 328 331 Viewport classes entry field ee 208 ViewPortRequestBroke cseceeseeeeeees 175 visibility ceived aivteccetneetee aneetdeaebaabr ine 36 222 225 VISI Dle esn rE nri 230 visual COoMponent seesssesessseseessssrsrsssr
248. eenseaeeeeeneeseeaeeeeeneaaes 91 Completely wired Master Viow 0 c cccecceessecceeeeeseneeeeeeeaeeeeeeeeaaaaeesaaeaaeseeaaaeseeeeeaaeaaeseeaaeeeseeeseaaaees 92 Navigating an Object NOt csicsas E N EEE EAE N 101 Connecting Group Controls ox ssvisects sevcithoss teewcenes renn EEA ALEEA SENARE EREA VE ERS 180 Domain Processes Browser main dialog eeecccceeeeeeeeceeeeeneeeeeeeeaaeeeeeeeaaeeeeeeeaaaeeeeeeeaeeeeeeenaeeeeenee 198 Domain Processes Browser title Dar sessserisiirasiiniii rnidan Sakana ENNAN ENAN EEEN ASAA NRA BAN NENANA 198 DPB SUDMeNU BrOWSER serren a N E E E EEE 198 Unsaved changes marked with red circles in DPB o oo eee eee eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeseeeeeeaeees 199 DPB submenu Process Class siiiscs ctesscuti ccesisudsn deg cxude EE 199 selected process class In DPB veces ssssccseteanitechiaesssateesvuncedeeevesnidceet A SONE EEE EE 199 Class with child connection to selected process class ceecceeeeeeeeeeeeeeeeeeeeeeeseeeeeeeeseeeeteeeeeeeees 200 DPB SUDMENU GOMMECTION estvseeeecetuticndectestnatebetineedelelanievegs EE E 200 DPB SUDMEMU ORION S seaccconedssicdccapessticedpsiewsaces geste lagedvasiesoasas ungedeitececol paidsctedesbadachdesesssiceensehieccduynane 200 DPB SUDMONU Z ororiusote tiiri hated eens EEA fated aneadessvaenedl sa adedersida titer T ata aaa 201 DPB SYMBOISISQENG soc cedeceyceczedesate cvdenaxk ceenduacsivededusssdcncxsdhuaiv ence OE OTE EE EE nets 201 DPB HOGI rreuiossreros
249. ees 230 EXC ption 0 ceeessssceeceeeeseeseees 20 148 229 external representation cceeeeeereeeees 34 externalization cceeeeeeeeeeeeees 26 219 237 REA S E E 60 Feature ODjeCtS cccccceccesseesssscteeeeeeeens 229 File Based Initialization 0 0 0 eeeeeeeeees 239 Filter taD srnssnsee n n 208 Find as child connection menu item 199 Find as child connection menu item 200 Find child process connections with selected model toolbar icon 0 00 0 eeeeeeesseteeeeeeeees 202 Find connection model menu item 200 Find process class of selected model toolbaricon 202 Fitness Club c cccccceeeeeeeeeeeeee 89 90 215 FOF seeren e eE Rai 139 215 Format ee 230 240 253 FramMeWorkK eesseessssssseseerersssssesesrens 29 329 Framework Cache 0 c0cccccccseseseeeeeeeeeee 213 Framework generated accessors 20 Framework Logger 42 78 82 83 86 210 245 329 Full MenUS cece eeeecceeecceeecceesceceesceesseens 317 G g nnen r 37 219 generic Adapter cceesessceeceeeees 237 241 QENETIC CIASS 0 0 ecceeseesseteeeeeeees 230 232 generic Dispatcher cccccccceessesereees 230 generic Evaluator cccccccccccceeeeseseeeees 225 generic Object eseseseeeessssesseeseessssssssesee 230 getMetaControlListForAspect eee 19 getMetaControlListForAspect anAspect 181 82 naa
250. eeseseueeeeeuueeeeeeeeeuueeeeaueueeaeseesaueeeeeaeuseuaeesaaueeaueeeeeuaeeees 148 4 2 2 MethOd GESCIIPUO MS A A E E E E E E A nevesawe E A 148 4 3s DOMAIN PROCESS srren aa ai ea eaae e eea a aaa aada 149 43 1 Overview Class method Saision i a a a E a iY 149 4 3 2 Overview Instance MethoOdS cec cee ccc ceccee cee cese see eeseeueseeeeeeeeeueeeuaueueseescesauaeeeuaaeeueuaueeseaaeeeueeseeaneeees 150 4 3 3 Method GeSCriPtiONS ecrini n E a aesoeeives E EE 156 CR NIGWIDOU conc caeataesctubibenctatcnettaciaustes abcksteeaneeatreebbedebatabctotadiend saath dee rdbcebanRanactienbedalcktatiels 166 4 4 1 Overview Class Methods cccccccsssssecececesssescecceaeeseccecceauenscecececeusecessceseasaeseeeeeauauseseeeeecseceeesensnes 166 44 2 Overview Instance MEthOOSxccessieicdciuies secdeceveumncwecaesiedsecdsimendeid aa a aA EEN Eada 166 dto Monod deschpUohS ees N O TE 170 4 5 ViewPort RequestBroker sccicetesececcs tieecteacticctah cesta ti eet aii act dauanaua cece le dace amemianueaiuats 175 4 5 1 How the ViewPortRequestBroker searches for a ViewPort cceceeeeeeeeeeceeeeeeeeeeeteeeenaeaaeeeeeeees 175 4 5 2 Using a custom ViewPortRequestBroker eeccececeeeeeeeeeeeeeee eee eeeeaeeeeeeeeeaeeeeeeneaaeeeeeeeaaeeeeeneaaeeeseeeaas 175 4 6 Authorization cicsiscrcisderrientatisbiansndsindsbeetenahdbabbietadienihcadacsabadbinmeeinrsiatnebbnebenebadebiebabbaieans 177 CTAN To ENLO a ME ASE EEES EE E E E E E 179 48 COU CONOIS
251. elationship e g logon is a child process of the master process the links between Viewports and GUI controls indicate a link between an Aspect of the respective Viewport and the GUI element For example the link from the Logon button to the means that the button is linked to the Aspect of that functionally equiv alent to naming it 2 5 1 Domain Processes Domain Processes can be used as non visual parts in the Composition Editor To do so select the section micado Frameworks section in the parts catalog on the far left of the Composition Editor Then select the ra symbol Domain Manager and place it on the canvas Double clicking on it will open the settings dialog which simply consists of a Listbox allowing you to select a Domain Process from those currently defined in your image Ga Domain Manager Master Settings _ Oo x dddocoddddddodddddooododdddddddodddodododdddo Domain process MicExampleMasterProcess bd General 2 5 2 Viewports The s associated with a Domain Process i e the child processes and the involved Base Connec Application Framework User s Guide PMS MICADO 2 Tutorial E 2 5 Connect to models using Non Visual Parts 89 tions defined in the DomainProcessesBrowser are accessible as tear off attributes of the domain man ager MicExampleMaster isualView Composition Editor BEE File Edit View Options Tools Help lemMenu Menu Choice Menu Cho
252. eleratorText String e Enabled Boolean Label String Application Framework User s Guide 3 Programming Reference MA 132 3 5 View Parts MYN D 3 5 27 Menu Choice 3 5 27 1 partName 3 5 27 1 1 Syntax connectionName_ commandMethod_ If connectionName omitted or declared as VOID_ The Default Process Connection will be used 3 5 27 1 2 Supported Variations 3 5 27 1 2 1 All parts of partName specified connectionName_ commandMethod_ 3 5 27 1 2 2 connectionName not specified VOID_ commandMethod_ 3 5 27 2 Supported Subaspects e Accelerator CwAccelerator e AcceleratorText String e Checked Boolean e Enabled Boolean e Label String Application Framework User s Guide aA 3 Programming Reference 3 5 View Parts 133 3 5 28 Menu Cascade 3 5 28 1 partName 3 5 28 1 1 Syntax connectionName_ commandMethod_ If connectionName omitted or declared as VOID_ The Default Process Connection will be used 3 5 28 1 2 Supported Variations 3 5 28 1 2 1 All parts of partName specified connectionName_ commandMethod_ 3 5 28 1 2 2 connectionName not specified VOID_ commandMethod_ 3 5 28 2 Supported Subaspects e enabled Boolean e Label String Application Framework User s Guide 3 Programming Reference MA 134 3 5 View Parts MYN D 3 5 29 Menu Toggle 3 5 29 1 partName 3 5 29 1 1 Syntax connectionName_ accessorName_ Content of the Control is aBoolean
253. elf authorizePerform deleteMember using aModel aModel session currentUser canModify In authorized Domain Processes we want to allow committing changes only for authorized i e with the attribute canModify users The method to initialize authorization is initializeAuthorizationTable allow perform access to the commit aspect only for users who can modify data super initializeAuthorizationTable self authorizePerform commit using aModel aModel session currentUser canModify 2 3 6 8 5 Initialize Authorization rules You have to make sure that all these methods are invoked once when the application is initialized MicExampleAuthorizedDomainObject allSubclasses do aClass aClass initializeAuthorizationTable MicExampleAuthorizedProcess allSubclasses do aClass aClass initializeAuthorizationTable Now you re ready to test the example But it is a good idea to reinitialize our current club Before we start the application again we execute Application Framework User s Guide PMS MICADO 2 Tutorial 2 3 Beyond Basics 75 MicExampleClub current nil Now we can start the application MicExampleMasterProcess new club MicExampleClub current session MicExampleSession new openView MicExampleClubMasterView 2 3 6 9 Validate if edit and delete a member is possible There are not only
254. em Domain Model A Domain Model is a design phrase for real world concepts like Customer Policy or Address Its instances are called Domain Objects Domain Object Domain objects describe that part of the MVC architecture which corresponds to business terms The behavior and structure are primarily defined in this respect The appropriate tool object net browser from the Object Behavior Framework is used for this purpose and mapping to the database is described with STOPF from Persistence Framework The Domain Object also has open interfaces for con necting authorization and validation Domain Process A Domain Process is a design phrase for processing and workflow oriented tasks and control flow Its instances are also called Domain Processes Due to their controlling oriented nature they take also responsibility for managing a Transaction Context if appropriate Application Framework User s Guide et s 328 Appendix D Glossary MYND Domain Processes Browser A tool supplied with the Application Framework to browse the exiting Domain Processes DPB Domain Processes Browser Extended Description MicFwExtendedDescription The object that completely describes the typing of all variables in a class The class method createExtendedDescription creates the MicFwExtendedDescription object Framework Logger The tracing facility of the Framework s Events and messages will be routed through this logger Framework A Framework is
255. emInitializer createFileBasedSystem If you got old data in your file system it will be deleted entirely If you want to open and access an existing file system you should later execute MicMlsSystemInitializer initializeFileBasedSystem 7 1 2 9 ENVY Based Initialization In order to store the localized data in Smalltalk classes into the ENVY library you can initialize the system from the Framworks Transcript Menu or by executing the following code in a workspace MicMlsSystemInitializer initializeLibraryBasedSystem If you wish to save data in development and do not use the mls data editor you must set the application to store your data in MicMlsLocaleLibraryManager defaultControllerClass lt anApplicationClass gt lt anApplicationClass gt is the class of the ENVY application in which the localized data is stored in classes For this purpose a new application must first be created by hand e g The controller class can also be set inside the MLS Data Editor 7 1 2 10 MLS Persitence Interface Based Initialization In order to store the localized data through the Multi Language Persitence Interface you must have a POM which is correctly initialized and connected to the database Set the POM instance into your MlisDatabaseManager MicMlsLocaleDBManager pom aPom You can initialize the system from the Framworks Transcript Menu or by executing the following code in a workspace MicMlsSystemInitializer initializeDBBasedSystem
256. en children return true in this method lt closelnfo gt is an object which contains a closeMode and an info closeMode can be one of COMMIT ABORT or DEFAULT System close button pressed or default close command and info is a user defined value default is the Domain Process which has received the close request MicFwDomainProcess gt gt canCommitAndClose Obsolete Called when a user wants to close the corresponding view Called first for all open children then for the business object itself The close action is performed only if the receiver and all open children return true MicFwDomainProcess gt gt canStartInteractionForAspect anAspect Answer if an interaction start is possible see MicFwViewPort gt gt canStartInteractionForAspect MicFwViewPort gt gt canStartinteractionForAspect anAspect An event like notification that the receiver is ready for model view interaction under aspect lt anAspect gt View systems will usually respond by setting the input focus on the corresponing control MicFwDomainProcess gt gt canStartInteractionForAspect anAspect inConnectionNamed connectionName Answer if an interaction start for the model in connection named lt connectionName gt or the receiver if connectionName nil is ready for model view interaction under aspect lt anAspect gt MicFwDomainProcess gt gt childProcesses Answer the child processes of the receiver as a Model Aspect MicFwDomainProcess gt gt childProc
257. en the Viewport class that is defined at the Connection will be taken 5 2 2 10 3 3 MLS context supercontext To activate MLS for your application you have to set an MLS Context at your Main Process at least This could be done within the property list 5 2 2 10 3 4 Defining Transactional Behavior Domain processes are the ideal place for transaction control Thus the class is able to maintain a Transaction Context and its API supports all of the messages necessary to manipulate the context 5 2 2 10 3 5 Transaction Attributes You can influence the transactional behavior of a Domain Process by defining the following items e Transaction Handling can be set to j or i e Isolate mode means that a transaction won t be affected by changes caused by concurrent transac tions e Begin transaction means that a new transaction level will be started when the Connector is opened Attention if you set this feature to false e You have to ensure the transaction behavior by your own This is only applicable for special cases where the provided behavior is not sufficient Transaction context Persistence context indicates which type of transaction context will be used image persistence e Use own context Use parent context indicates which transaction context will be used concurrent or nested Note that when using a persistence context a method answering the Persistence Manager must be imple mented by the Domain Process 5 2 2 1
258. enceManagerRdb gt gt loadAllInstancesOf aPersistentClass Load instances of lt aPersistentClass gt from the persistence medium The instances will NOT be resolved from the context cache Thus this can be used outside of transaction contexts Answer an OrderedCollec tion with loaded objects MicFwPersistenceManager gt gt loadAllInstancesOf aPersistentClass Load ALL instances of lt aPersistentClass gt from the persistence medium Answer an OrderedCollection with loaded objects MicFwPersistenceManager gt gt loadAlllnstancesOf aPersistentClass orderBy anOrderArray Load all instances of aPersistentClass from the persistence medium The instances will NOT be resolved from the context cache Thus this can be used outside of transaction contexts Answer an OrderedCollection with the requested objects Order by anOrderArray aA Application Framework User s Guide MYND Appendix A API 295 MicFwPersistenceManager gt gt loadinstancesOf aPersistentClass where aQueryArray Load instances of aPersistentClass from the persistence medium that conform to the query expression in aQueryArray The instances will NOT be resolved from the context cache Thus this can be used outside of transaction contexts Answer an OrderedCollection with the requested objects MicFwPersistenceManager gt gt loadinstancesOf aPersistentClass where aQueryArray orderBy anOrderArray Load instances of aPersistentClass from the persistence medium that conf
259. eneaaees 81 Framework Logger With An GIOT o0 eccccceeseeceeeeeeseeceeeeeseeeeeeeeesaeeeeeeesaeaeeeeeaaeeeeeeeneaaeeeensneaeeeeeneneaaes 82 Pemo View WIL SIONS recon i r E E T ETR T EA 83 Framework Logger with Wwamnings sictesicrvinelecetedactedeesvaceuteryysacedecedsaheteetstvnedecced RENARE ARATA KAERA 83 Connectors Browser with undefined objects 20 22 eee ceeeeeeeeceeeeenneeeeeeeeaeeeeeeeeaaeeeeeeeaaeeeeeeeaaaeeeeeenaeeeees 83 DEMO Stalt SECOMG TOST scicincetcdecteevaddeelavencesuentenedevinin EE AE EARNE rendeveaiageddnielebaaedeuent 84 Connectors Browser list Connection 00 0 eeeeesseceeeeeeeeeeeeeeeeeeaeeeeeeeaaeaeeeeeaaaaaeeeeeaaeaeeseeaaeaeseeeseeaaees 85 Erroneous DEMO VIGW sesiisrssuiisriii ire tinerii AS ARATI ESEESE 85 Debugger areren ean a E E EAO ENT EAE E STE 85 Transactions BOWS EM ceiroisin kiini iieniin naen ENNE ERSEN EEEREN OEE E 87 Fitness Club Example in the extended Composition Editor sessseeesesseissseeirresrrrrnsrirnrrnnsrnnnnsnenn 89 Settings dialog for Domain Manager eceeeeeeeeeeneeeeeeeeeeeeeeeeeeeaeeeeseeaaaeeeseceaaeeeeeeeaaaeeeeeeeaeeeeeeenenaas 89 Tear off attributes of a Domain MANAGED eeceeeeeeteeceeeeeeteeeeeeeaeeeeceeaaaeeeceeeaaeaaeeeseeeaaeeeeeeeaeeeeeneeaas 90 Step 1 in creating the extended example eeecceeeeeeeeeeeeeeeeeeeeeeeeeaaeeeseeeaaeeeeeeeaaaeeeeeeeeeaeeeeeneeaas 91 Step 2 in creating the extended example ceceeeececceeeeecceeeeeeeeceeeeeeeeaeeeeeeaaeeee
260. ent canChange will do what we intend Application Framework User s Guide 4 Advanced Programming Reference MA 178 4 6 Authorization MYND 4 7 Validation A common feature found in most applications is validation of user input or more generally of attribute val ues altogether The Application Framework supports validation of a Domain Object s and a Domain Pro cess attributes The protocol for controlling validation is extremely simple and consists only of a single method imple mented in class validateWrite anAspect using aRule This methods validates write access to lt anAspect gt by evaluating lt aRule gt lt aRule gt can be a block or a message Example Suppose we have a class Car that has among others an attribute named weight We want to make sure that weight only holds values between 1000 and 4000 Ibs Car validateWrite weight aRule value value notNil and value gt 1000 and value lt 4000 The attempt to set the weight attribute to anything outside this range will simply fail i e the original value will not be changed The validated object the instance of Car in this case triggers three different events Just before the vali dation rule is evaluated the event validate is triggered Depending upon the outcome of this evaluation either valid or invalid is triggered The most common scenario is the handling of invalid write attempts This is demonstrated in the sample applic
261. ents The POM may still be connected to the database Open the STOPF for the POM from the System Tran script select micFrameworks Browse Persistence Manager select the POM and disconnect the POM from the database Manager Disconnect from database TS 3 Domain Object DO TS 3 1 DO doesnt appear in the Tear off pop up window for the DM The DP must first be assigned to the DM by double clicking on the DM and entering the DP class in the dialog AND the DO must be specified in a base connection for the DP using the DPB TS 4 Domain Process TS 4 1 DP doesnt appear in the Tear off pop up window for the DM The DP must first be assigned to the DM by double clicking on the DM and entering the DP class in the dialog TS 5 Domain Processes Browser DPB TS 5 1 A newly created DP DO Viewport View etc does not appear in a drop down list in the DPB Try closing and then reopening the DPB TS 5 2 Can t save a change that I just made in the DPB The Save option is greyed out Click anywhere else in the DPB so that the focus changes The Save option should appear TS 6 Envy debugger messages TS 6 1 Invalid view A default view is not set for a process A default view was not set for the process This can sometimes happen because the a change in the DPB was not saved To solve this problem e Close the DPB e Open the DPB e Reassign the view to the process e Save the changes TS 6 2 MicFwTransactionContext is n
262. ents that are interacting through their public interface To be independent from their specific implementation especially class names or inherit ance structure they are coupled as loosely as possible Each plugable component must register itself with centralized mapping objects responsible for maintaining the path from a requester to the appropriate ser vice provider Application programmers have the opportunity to substitute entire subsystems with their own implementa tion if this is required This may be the case when a well known complete and mature subsystem already exists in your company and you want to reuse it with your new application The amount of effort it takes to accomplish such modifications depends widely on the complexity of the particular component Let s look at some examples Assume you have created a new composite visual Control with a specific behavior and a public interface All the details of managing the embedded Controls are hidden and it s prepared for reuse in the entire application or even more The task now is to introduce your Control to the Framework This is one of the simple things to do and requires the choice of a set of existing abstract components from the abstract Model View Controller and the implementation of one Adapter class with about 5 10 methods transform ing the abstract protocol to your real Control s interface This task is explained in detail in one of the follow ing sections Externalization
263. ents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ VOID_ 3 5 19 1 2 3 connectionNameContents displayMethod not specified VOID accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ VOID_ 3 5 19 1 2 4 connectionNameContents connectionNameSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ accessorMethodSelection_ VOID_ 3 5 19 1 2 5 connectionNameContents connectionNameSelection accessorMethodSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ VOID_ VOID 3 5 19 2 Supported Subaspects e BackgroundColor CgRGBColor e Editable Boolean e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide aA 3 Programming Reference MYND 3 5 View Parts 125 3 5 20 1 1 Syntax 3 5 20 Container Flowed Icon List 3 5 20 1 partName connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ displayMethodItem_ The default presentation method is The content of this Control is aCollection The selection of this Control is aCollection If connectionName is omitted or declared as VOID_ The Default Base Connection will be used 3 5 20 1 2 Supported variations 3 5 20 1 2 1 All parts of partName specified connec
264. er gt gt get Load the object identified by the receiver from the underlying persistence medium MicFwRabIntegrity Violation gt gt get Let the persistence manager load the extent identified by the receiver from the underlying persistence medium resolved from the cache MicFwAbstractPersistenceManagerRdb gt gt getAlllnstancesOf aPersistentClass Load ALL instances of lt aPersistentClass gt from the persistence medium The instances will be resolved from the persistence context cache Answer an OrderedCollection with loaded objects MicFwPersistenceManager gt gt getAlllnstancesOf aPersistentClass Load all instances of aPersistentClass from the persistence medium Resolve loaded objects from the internal cache This can only be executed inside an active transaction context Answer an OrderedCollec tion with the requested objects MicFwPersistenceManager gt gt getAllinstancesOf aPersistentClass orderBy anOrderArray Load all instances of aPersistentClass from the persistence medium Resolve loaded objects from the internal cache This can only be executed inside an active transaction context Answer an OrderedCollec tion with the requested objects Order by anOrderArray MicFwAbstractDomainProcessContext gt gt getEnv var Get a DP environment variable MicFwPersistenceManager gt gt getinstancesOf aPersistentClass where aQueryArray Retrieve instances of aPersistentClass from the persistence medium that conform to the
265. erations MicFwDomainProcess class gt gt defaultTransactionPolicyFor anInstance asChildOf aParentProcess named conName MicFwDomainProcess class gt gt defaultTransactionPolicyClass MicFwDomainProcess class gt gt defaultPersistentTransactionPolicyClass MicFwDomainProcess class gt gt defaultHierarchicalPersistent TransactionPolicyClass MicFwDomainProcess class gt gt defaultHierarchicalTransactionPolicyClass MicFwDomainProcess class gt gt defaultInheritedTransactionPolicyClass M M M MicFwDomainProcess gt gt transactionPolicy Application Framework User s Guide 4 Advanced Programming Reference MA 164 4 3 Domain Process MYN 4 3 3 17 Advanced API Methods 4 3 3 17 1 Public Class Methods MicFwDomainProcess class gt gt defaultTransactionPolicyFor anInstance asChildOf aParentProcess named conName MicFwDomainProcess class gt gt defaultWindowingPolicyForChildOf aParentPro cess named conName viewClass aViewClassHint parentViewHolder aDo mainProcess modality aModality MicFwDomainProcess class gt gt processContextEvaluator 4 3 3 17 2 Public Instance Methods MicFwDomainProcess gt gt addPresetChoiceConnectionNamed aSymbol withCon text aContext withSuperContext aSuperContext MicFwDomainProcess gt gt addPresetHierarchyListConnectionNamed aSymbol withContext aContext withSuperContext aSuperContext MicFwDomainProcess gt gt addPresetListConnectionNamed aSymbol withCont
266. ere MicFwPersistenceManagerRdb gt gt mappingFor selector inClass aClass Answer the variable mapping for selector in aClass Answer nil if not there MicFwRdbSQLClause gt gt markNotToBeCompiled Set that the receiver needs not to be compiled before an SQL statement can be generated Receiver does not contain parameter markers or is already compiled MicFwRdbSQLClause gt gt markToBeCompiled Set that the receiver needs to be compiled before an SQL statement can be generated MicFwModelObject class gt gt MicFwModelObject gt gt permitWriteDuringReadWhile aBlock MicFwPersistenceManager gt gt minimalCopy Answer a new instance of the receiver that shares most of the receiver s state such as core configuration ready to use The following is also shared by default but may be exchanged to allow instance specific state instanceName statementExecutor DB connection cache MicFwDomainProcess gt gt mlsContext Application Framework User s Guide MA 296 Appendix A API MYND Returns the MLS Context of the default Domain Process of the current Connector MicFwAbstractWindowingPolicy gt gt modality Get the modality MicFwDomainProcess class gt gt modality Valid return values are MicFwSystemModal MicFwFullApplicationModal MicFwPrimaryApplicationModal nil no modality The default implementation returns nil To change this behavior you have to overwrite this method MicFwAbstractWindowingPolicy gt gt moda
267. ered under the mapping viewPort see application MicFwProcessesBrowser class gt gt loaded In order to ensure that the correct ViewPortRequestBroker will be used for development tools the processes of the development tools are marked with lt isTechnicalDomainProcess gt The MicFwViewPortRequestBrokerDispatcher will then forward all calls to the customerViewPort Broker or the technicalViewPort Broker Any CustomViewPortRequestBroker s should be registered in the broker mapping For example self bro ker use ACustomerVPBroker for customViewPort A MicFwViewPortRequestBroker or a ACustomerVPBroker must be available for the runtime via the viewPort mapping See application MicFwViewPorts class gt gt resetMappings The following methods can be implemented to register ACustomVPBroker for development and runtime Application Framework User s Guide aA 4 Advanced Programming Reference MYND 4 5 ViewPort RequestBroker 175 separately Application UserApplication class gt gt packagingRulesFor aRuleCollector aRuleCollector replaceClassMethod registerForDevelopment with registerFor Runtime inClassNamed ACustomVPBroker ACustomvPBroker class gt gt registerForRuntime self broker use ACustomVPBroker for viewPort ACustomVPBroker class gt gt registerForDevelopment self broker use ACustomVPBroker for customViewPort ACustomVPBroker class gt
268. es now cause an MLS Converter Error 3 ForegroundColor BackgroundColor can be set for GroupBox The ForegroundColor and BackgroundColor can be set for a GroupBox This was not possible in the previ ous version 4 DragAndDropControllmplementation and DragAndDropContrl can be subclassed DragAndDropControllmplementation and DragAndDropControl can now be subclassed This supports custom Drag amp Drop implementations This may be required when using custom controls with Drag amp Drop Hooks MicFwDomainProcess gt gt defaultDragAndDropControlImplementation MicFwDragAndDropControlimplementation gt gt getModelViewPortFromPlatformItem anitem 5 Fix for VA CascadedSubmenu enabled status error If a dynamic Menu that contained CascadedSubmenu s was switched from disabled to enabled VA would set the Enabledstatus for the CascadedSubmenu and any of its submenus to false The Menultem s were also not refreshed correctly The Framework now provides a fix for this error 6 Deleting via a dynamic Menu does not cause an error A dynamic context menu can be opened for an item such as IconTreeltem and the item deleted via the menu This avoids an error which occurred in the previous version 7 Column accessor is MicFwBaseModelAccessor The Column accessor is now MicFwBaseModelAccessor In the previous version a Column static or dynamic was connected via a MicFwGroupModelAccessor which caused problems in certain situations This change should
269. ess gt gt abortAndBeginAlone MicFwDomainProcess gt gt abortAndBeginTouched MicFwDomainProcess gt gt abortAndClose MicFwDomainProcess gt gt aboutToAbortTransaction MicFwDomainProcess gt gt aboutToCloseTransaction aTransactionCloseMode MicFwDomainProcess gt gt about ToCommitTransaction MicFwDomainProcess gt gt aboutToStartTransaction MicFwDomainProcess gt gt activateTransactionContextFor aBlock MicFwDomainProcess gt gt canAbortAndClose MicFwDomainProcess gt gt canCommitAndClose MicFwDomainProcess gt gt commitAndBeginAlone MicFwDomainProcess gt gt commitAndBeginTouched MicFwDomainProcess gt gt commitAndClose MicFwDomainProcess gt gt innerAbortTransaction MicFwDomainProcess gt gt innerCommitTransaction MicFwDomainProcess gt gt innerStartTransaction MicFwDomainProcess gt gt performAbortAndClose MicFwDomainProcess gt gt performClose MicFwDomainProcess gt gt performCommitAndClose MicFwDomainProcess gt gt persistenceObjectManager MicFwDomainProcess gt gt prepareAbort Application Framework User s Guide 4 Advanced Programming Reference eX 160 4 3 Domain Process MY MicFwDomainProcess gt gt prepareCommit MicFwDomainProcess gt gt resetTransactionClose MicFwDomainProcess gt gt transactionAborted MicFwDomainProcess gt gt transactionClosed aTransactionCloseMode MicFwDomainProcess gt gt transactionCommitted MicFwDomainProcess gt gt transactionPolicy MicFwDomainProcess gt gt tr
270. ess named conNameSym bol Return the default transaction policy for instances of the receiverclass Normally is lt aChildProcess gt an instance of the receiver and lt aParentProcess gt is the parent from lt aChildProcess gt MicFwViewPort gt gt defaultUndefined anAbstractValue Set lt anAbstractValue gt which holds a MicFwUndefinedModelObject to the defaults for undefined contents MicFwViewPort gt gt defaultUpdateOfMetaControlList aMetaControlList forAspect anAspect Override to change the default update behavior of lt aMetaControlList gt for the currently read Aspect lt anAspect gt when a model change has been notified A return value of nil will cause the Aspect get acces sor method for lt anAspect gt to be called again Answer the default readable value for the lt dispatch erAspect gt This is taken from the model that was read finally to retrieve the contents of lt dispatcherAspect gt MicFwModelObject class gt gt defaultValidationRule The default validation rule Block or Message for all aspects of the receiver MicFwViewPort gt gt defaultVisibleValueOf aDispatcherAspect Answer the default enabled value for the lt aDispatcherAspect gt This is taken from the model that was read finally to retrieve the contents of lt aDispatcherAspect gt MicFwDomainProcess class gt gt defaultWindowingPolicyClass Override this method to get an alternate windowing policy class i e an object which Controls the w
271. essages from a running application It is very useful in conjunction to the Application Framework if you rely on a defined sequence of messages and message flow when a Debugger would interrupt or change those sequences e g pop ping up the Debugger will generate a Losing Focus Event again causing some operation within the frame work The Application Framework contains logging facilities on many important areas e g I O between models and parts opening and closing of views providing useful diagnostic information to the logger if activated by the user Information in the logger is presented line by line in an independent window as shown below amp Framework Logger oO x Logger Logger active I Logto file Sever category o 5 50 07 14 05 Infe Mic Fw Sample Order Processing 05 9 _MicFw Sample Order Processing gt open view MicFw Sample Order Processing 15 50 08 14 05 98 Mic Fw Sample Order Processing gt opened view MicFwActivateRequestEvent MicFw Sample Order Processing General MicFw Sample Order Processing MicFw Sample Order Processing MicFwActivateRequestEvent Mic Fw Sample Order Processing General 15 50 08 14 05 98 Mic Fw Sample Order Processing gt activated 16 22 18 14 05 98 Mic Fw Sample Order Processing gt open view 16 22 19 14 05 98 MicFw Sample Order Processing gt opened view 16 22 19 14 05 98 AbtShellView gt getingFocus 16 22 19 14 05 98 MicFw Sample Orde
272. essesAreStarting Call the starting hook for all child processes Called in the parent process before any of the child processes is created MicFwDomainProcess gt gt A Application Framework User s Guide MYND Appendix A API 277 childProcessFinished aChildProcess named aConnectionName withResult aProcessResult Notification from a child process which has ended MicFwViewPort gt gt childViewPortBaseClass Override to change the base class for list hierarchy child viewPorts MicFwViewCachingWindowingPolicy class gt gt clearCache Close and remove all Cached Views MicFwRabAbstractDirectStatement gt gt close Close the receiver by releasing all external resources MicFwRabiIntegrity Violation gt gt close Close the receiver by releasing all external resources MicFwDomainProcess gt gt closeProcess Close the process and its associated view If a transaction is running use the lt commitTransactionByDe fault gt method to specify if a commit or abort should happen If a child process wants to stay open with the parent but can t close itselfs do not close the receiver MicFwDomainProcess gt gt closeRequested aCloselnfo Called when a close command enters and can be overridden to modify the values in lt aCloselnfo gt MicFwDomainProcess gt gt closeView Same as closeProcess MicFwMetaAspect gt gt columnWidth aValue Set the initial column width MicFwDomainProcess gt gt commitAndBegin Commit the transaction
273. etc on the fly Application Framework User s Guide aA 1 Concepts 1 4 Mynd Frameworks Architecture 43 Application Framework User s Guide 1 Concepts 44 1 4 Mynd Frameworks Architecture one M YN D Tutorial Application Framework User s Guide 45 Application Framework User s Guide 2 Tutorial PMS MIGADD 46 2 1 Introduction In this chapter we will present a sample application demonstrating some of the most important features of the Application Framework We will develop this application step by step beginning with a simple Domain Object and a view to represent it In the course of the tutorial the Domain Object will get more complex We will also add Domain Processes transaction handling authorization and validation logic a simple help system etc Each of these steps will be accompanied by diagrams showing the interaction between the pieces involved Where appropriate there will be demonstrations of the most common mistakes and their effects After having worked through this tutorial you should be able to use the basic patterns involved in creating application using the Application Framework The model we chose is a fitness club The application will manage a list of members of the club and allow for editing members and their addresses We included a similar example within the frameworks examples The code for this example can be found in the ENVY Application There you will find some of the imp
274. ethod returns true but it is closed if this method returns false MicFwViewPort gt gt stopIinteraction aConnection Obsolete Use leavelnteractionForAspect goingToAspect of instead MicFwPersistenceManager gt gt storeGlobally The receiver so that it can be retreived with the instance name later MicFwMetaPart gt gt tabType aSymbol Set the tab type of the page Valid tab types are MAJOR MINOR NONE aA Application Framework User s Guide MYND Appendix A API 307 MicFwMetaAspect gt gt title aValue Set the initial header title of the column MicFwPersistentObject gt gt to1 Relationship instVarSymbol references aPersistentObject Determine whether the relationship defined on the instance variable lt instVarSymbol gt holds a reference to the object lt aPersistentObject gt This should be done in a way that avoids persistence actions DB access as much as possible MicFwRdbSQLClause gt gt toBeCompiled Answer whether the receiver contains named parameter markers instVar and thus needs to be com piled before an SQL statement is generated MicFwDomainProcess gt gt topLevelProcessClosed Called after the top level process has disconnected its view Can be overridden to perform cleanups or exit the system MicFwNRelationship gt gt transact Answer true if the relationship access handler handles transacted accesses false otherwise MicFwTr1Relationship gt gt transact Answer true if the relationship access ha
275. eveloping multi tier applications According to your needs you may load only dedicated parts of it into your development image Application Framework provides you with a set of tools sufficient to design and implement all aspects of your application except the User Interface It has a complete VisualAge integration and you may use Visual Programming techniques Thus VisualAge Composition Editor is only required to create User Inter faces for the client tier Installing the Release Files IBM Visual Age Smalltalk version 4 5 recommended must be already installed on your computer before installing Frameworks Installing Frameworks consists of 2 main steps Importing the configuration maps from the library file on the CD ROM manager V50 dat to the library file on your computer typically vast mgr50 dat e Loading the applications in the imported configuration maps along with any other required maps to your image file typically vast abt icx Importing configuration maps Frameworks is installed in your Smalltalk environment by importing the required Frameworks applications using the Visual Age Configuration Maps Browser The applications are imported by importing the configu ration maps that contain the Frameworks applications applications contain the classes and methods In the System Transcript Select Tools Browse Configuration Maps The Configuration Maps Browser opens In the Configuration Maps Browser Select Names Import names
276. ework User s Guide ew s 288 Appendix A API MYND return the result MicFw1Relationship gt gt getTarget Returns the target object of the gt 1 relationship MicFwNRelationship gt gt getTarget Returns a Collection of target objects referenced by the gt N relationship MicFwRelationship gt gt getTarget Returns the target object the actual object or a collection depending on the type of relationship of the relationship MicFwTr1Relationship gt gt getTarget Returns the transacted target object of the gt 1 relationship MicFw1Relationship gt gt getTargetNoTr For an non transacted relationship Returns the object referenced by the gt 1 relationship For a transacted relationship Returns the variable value not the transacted object MicFwNRelationship gt gt getTargetNoTr For an non transacted relationship Returns the object version of the Collection of objects referenced by the gt N relationship For a transacted relationship Returns the variable value of the Collection not the transacted object MicFwRelationship gt gt getTargetNoTr For an non transacted relationship Returns the object referenced by the relationship For a transacted relationship Returns the variable value not the transacted object MicFwTransactionManager class gt gt global Return single instance of receiver MicFwViewPort gt gt graphicsPresentation Get the grahic presentation of an object Returns an Instance of AbtGraphicsDescripto
277. ewport by a class method at the relateted Viewport class that returns the class name of its related model This class method is called So implement the following code MicExampleClubMemberAsListItemViewPort class gt gt portName MicExampleClubMember 2 3 5 4 6 3 Item presentation The method for doing this is to implement the message asListEntry in the earesponding class meaning we will put the following method into asListEntry answer the list representation of the receiver myModeli myModel self model name asString myModel firstName 2 3 5 4 7 Open Child Process We have defined the name of the Edit button in the view as default_edit_ The Button will be sent the message edit when it is pressed As we want this edit to open the member edit Window on the currently selected member we have to implement domain and view related code 2 3 5 4 7 1 Domain Code The implementation of domain related code in is Application Framework User s Guide 2 Tutorial PMS MICADO 66 2 3 Beyond Basics edit edit the club member that is currently selected in the parent self member clubMember self currentMember yourself 2 3 5 4 7 2 View related Code As you see there is no call of The reason is that this is view related code and has to be implemented at the Viewport of the master process The implementation of view related
278. ext transactionPolicy aTransactionPolicy Process Context MicFwAbstractDomain ProcessContext windowingPolicy Process Context MicFwAbstractDomain ProcessContext windowingPolicy aWindowingPolicy MicFwAbstractWindow ingPolicy MicFwAbstractWindow ingPolicy abstractView MicFwAbstractWindow ingPolicy MicFwAbstractWindow ingPolicy abstractView anAbstractView MicFwAbstractWindow ingPolicy MicFwAbstractWindow ingPolicy interceptAbortClose MicFwAbstractWindow ingPolicy MicFwAbstractWindow ingPolicy interceptClosePlatformView MicFwAbstractWindow ingPolicy MicFwAbstractWindow ingPolicy interceptCommitClose MicFwAbstractWindow ingPolicy MicFwAbstractWindow ingPolicy interceptOpenPlatformView MicFwAbstractWindow ingPolicy MicFwAbstractWindow ingPolicy interceptPrepareClose MicFwAbstractWindow ingPolicy MicFwAbstractWindow ingPolicy modality MicFwAbstractWindow ingPolicy MicFwAbstractWindow ingPolicy modality aModality MicFwAbstractWindow ingPolicy MicFwAbstractWindow ingPolicy newPlatformViewFor anAbstractView Class MicFwAbstractWindow ingPolicy MicFwAbstractWindow ingPolicy parentView MicFwAbstractWindow ingPolicy MicFwAbstractWindow ingPolicy parentView anAbstractView MicFwAbstractWindow ingPolicy MicFwAbstractWindow ingPolicy viewClass
279. ext aContext withSuperContext aSuperContext 4 Advanced Programming Reference N D 4 3 Domain Process 165 vA Application Framework User s Guide 4 4 Viewport 4 4 1 4 4 2 Overview Class methods Type Implementor Message Declaring MicFwView isDefaultViewPort Port Overview Instance methods Type Implementor Message Declaring MicFwViewPort defaultEmbeddedPartValueOf dispatch erAspect Declaring MicFwViewPort defaultMaxSearchLevelValueOf dispatch erAspect Initialize MicFwViewPort initialize Model Navigation MicFwViewPort model Model Navigation MicFwViewPort modelAtConnection aConnectionName Model Navigation MicFwViewPort modelAtDefaultBaseConnection Model Navigation MicFwViewPort modelAtDefaultProcessConnection Controlling Sub aspects MicFwViewPort lt aSourceAspect gt lt anOperation gt aListOfView Ports onto aViewPortOrNil Controlling Sub aspects MicFwViewPort lt aSourceAspect gt lt anOperation gt lt aTar getAspect gt aListOfViewPorts onto aViewPor tOrNil Controlling Sub aspects MicFwViewPort lt aspectName gt Accelerator Controlling Sub aspects MicFwViewPort lt aspectName gt AcceleratorText Controlling Sub MicFwViewPort lt aspectName gt BackgroundColor aspects Controlling Sub MicFwViewPort lt aspectName gt Checked aspects Controlling Sub MicFwViewPort
280. faultShowTouchedValueOf anAspect Overriding Default Behavior MicFwViewPort defaultUndefined anAbstractValue Overriding Default Behavior MicFwViewPort defaultUpdateOfMetaControlList aMetaControl List forAspect anAspect Overriding Default Behavior MicFwViewPort defaultVisibleValueOf aDispatcherAspect Late Model Access MicFwViewPort lt anContentAspectOfAGroupControl gt Child PaneConnectionMode Late Model Access MicFwViewPort defaultChildPaneConnectionModeValueOf anAspect 4 4 3 Method descriptions 4 4 3 1 Declaring MicFwViewPort class gt gt isDefaultViewPort MicFwViewPort gt gt defaultEmbeddedPartValueOf dispatcherAspect MicFwViewPort gt gt defaultMaxSearchLevelValueOf dispatcherAspect 4 4 3 2 Initialize MicFwViewPort gt gt initialize 4 4 3 3 Model Navigation MicFwViewPort gt gt modelAtConnection 4 4 3 4 Controlling Subaspects aConnectionName MicFwViewPort gt gt lt aspectName gt Accelerator MicFwViewPort gt gt lt aspectName gt AcceleratorText MicFwViewPort gt gt lt anContentAspectOfAGroupControl gt ChildPaneConnectionMode MicFwViewPort gt gt lt columnAspectName gt EmbeddedPart MicFwViewPort gt gt lt detailsViewContentAspectName gt ItemAspects MicFwViewPort gt gt lt anAspect gt Manipulator MicFwViewPort gt gt lt anAspect gt MetaControlListUpdate aMetaControlList Application Framework User s Guide 4 A
281. fied by lt aspectName gt MicFwViewPort gt gt lt aspectName gt BackgroundColor Set the background color of the Control specified by lt aspectName gt MicFwViewPort gt gt lt aspectName gt Checked Set the checked state of the Control specified by lt aspectName gt MicFwViewPort gt gt lt aspectName gt Editable Set the editable state of the Control specified by lt aspectName gt MicFwViewPort gt gt lt aspectName gt Enabled Set the enabled state of the Control specified by lt aspectName gt MicFwViewPort gt gt lt aspectName gt ForegroundColor Set the foreground color of the Control specified by lt aspectName gt MicFwViewPort gt gt lt aspectName gt HelpText Set the Framework help text for the Control specified by lt aspectName gt MicFwViewPort gt gt lt aspectName gt HoverHelpText Set the Framework Hover Help text for the Control specified by lt aspectName gt MicFwViewPort gt gt lt aspectName gt Label Set the label of the Control specified by lt aspectName gt MicFwViewPort gt gt lt aspectName gt Manipulator See lt defaultManipulatorValueOf anAspect gt MicFwViewPort gt gt lt aspectName gt MetaControlListUpdate aMetaControlList See lt defaultUpdateOfMetaControlList aMetaControlList forAspect anAspect gt MicFwViewPort gt gt lt aspectName gt Readable Set the readable state of the Control specified by lt aspectName gt MicFwViewPort gt gt lt aspectName gt Visible Set the v
282. finition of our Viewport is MicFwViewPort subclass MicExampleClubMemberAtMemberProcessViewPort instanceVariableNa mes classVariableNames poolDictionaries 2 3 4 5 Connect Viewport to Model at Process The Viewport must be able to identify its model To define a Viewport for the club member at the place where the funtionality of the Viewport should be used This is done by defining it at the base connection at the domain processes browser on your member process So open the domain processes browser on your member process Expand the connection hierarchy in the central list select the base connection which is typed to your club member e g clubMember and choose the viewport at the settingstable right list from the dropdown list If you made the viewport and it is not vis Application Framework User s Guide 2 Tutorial PMS MICADO 60 2 3 Beyond Basics ible right now click on the refresh button which is located in the left uper corner markted with an R Tip The name of the Viewport is too long to be displayed completely if you want to have more space to non read click at the collaps button marked with lt located at the right side of the class hierarchy Now you can close browser and Save the work 2 3 4 6 F1 Help Protocol As mentioned before the protocol for help texts is defined in the Viewport For regular help a method named has to be implemented e g for the attribute na
283. g page 205 5 2 2 2 5 Refresh environment Reloads and initializes the complete environment 5 2 2 2 6 Browse new net Ctrl A Opens a dialog for selecting a new root class 5 2 2 2 7 Save all changes Ctrl S Saves all changes that have been made since the last save When changes are made in the DPB the modified items are marked with a red circle The changes that have not been saved can be discarded Processes Hierarchy ec The red circles are removed after the changes have been saved 5 2 2 2 7 1 Storage and Initialization When saving changes a class method named is generated for each modified Domain Process class that contains all declarations made so far For each Connection a read accessor will be generated and for the Base Connections an additional write accessor will be generated This gives access to the models in the Connections Process Classes Hierarchy tear totter eatin lH 4 MicFwConnectorProcess 5 2 2 2 8 At runtime all declarations will be stored in a class instance variable named Discard all changes Ctrl D Discards any unsaved ie marked with red circles changes 5 2 2 2 9 Close Closes the DPB 5 2 2 3 Submenu Process Class Find as child connection Search for a class Browse Class Browse Hierarchy MicFwT oolDomainProcess 5 2 2 3 1 Find as child connection Searches for a class in the Process Classes Hierarchy column that has a child connection to th
284. g e Visible Boolean Application Framework User s Guide aA 3 Programming Reference 3 5 View Parts 107 3 5 4 Radio Button Set 3 5 4 1 partName 3 5 4 1 1 Syntax connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethodSelection_ displayMethodItem_ Content of the Control is aCollection Selection of the Control is anObject If connectionName omitted or declared as VOID_ The Default Base Connection will be used The default presentation method is asListEntry 3 5 4 1 2 Supported variations 3 5 4 1 2 1 All parts of partName specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction displayMethodItem_ 3 5 4 1 2 2 displayMethod not specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ VOID_ 3 5 4 1 2 3 connectionNameContents displayMethod not specified VOID accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ VOID_ 3 5 4 1 2 4 connectionNameContents connectionNameSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ accessorMethodSelection_ VOID 3 5 4 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean e ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide 3 Programming Refe
285. g asc or desc e g 1 asc 2 desc Only INTEGER Values are supported MicFwNRelationship gt gt orderDescending arrayOfSelectors Define the receiver to be sorted on the attributes named in arrayOfSelectors in descending order The attributes are assumed to be base attributes not relationships MicFwPsExtentldentifier gt gt orderDescending arrayOfSelectors Define the receiver to be sorted on the attributes named in arrayOfSelectors in descending order The attributes are assumed to be base attribute symbols for the extent target class not relationships MicFwPsExtentldentifierSQL gt gt parameterAt aName put aValueObject A Application Framework User s Guide MYND Appendix A API 299 Store aValue for the parameter named aName MicFwRabiIntegrity Violation gt gt parameterAt aName put aValueObject Store aValue for the parameter named aName MicFwEnhancedQuery gt gt parameterAt aNameSymbol put aValue Store aValue for the parameter named aNameSymbol MicFwPsExtentldentifier gt gt parameterAt aNameSymbol put aValueObject Store aValue for the parameter named aNameSymbol MicFwPsProjectionDescriptor gt gt parameterAt aNameSymbol put aValueObject MicFwDomainProcess gt gt parent Answer with the parent process from the receiver MicFwAbstractWindowingPolicy gt gt parentView Get the parent view MicFwAbstractWindowingPolicy gt gt parentView anAbstractView Set the parent view MicFw
286. ge MicFwDomainObject openView aViewClass 3 2 2 Method descriptions MicFwDomainObject gt gt openView aViewClass Application Framework User s Guide 3 Programming Reference 96 3 2 Domain Object ots M YN D 3 3 Domain Process 3 3 1 Overview Class methods Type Implementor Message Declaring MicFwDomainProcess modality 3 3 2 Overview Instance methods Type Implementor Message Declaring MicFwDomainProcess modality Initialising MicFwDomainProcess initializelnvolvedBaseConnections Initialising MicFwDomainProcess initializeChildProcessConnections Opening MicFwDomainProcess openView Opening MicFwDomainProcess openView aViewClass Services MicFwDomainProcess startlInteractionForAspect anAspect Services MicFwDomainProcess startlnteractionForAspect anAspect inConnec tionNamed connectionName Transaction Behavior MicFwDomainProcess abortAndBegin Transaction Behavior MicFwDomainProcess abortAndCloseProcess Transaction Behavior MicFwDomainProcess abortAndCloseView Transaction Behavior MicFwDomainProcess commitAndBegin Transaction Behavior MicFwDomainProcess commitAndCloseProcess Transaction Behavior MicFwDomainProcess commitAndCloseView Transaction Behavior MicFwDomainProcess commitTransactionByDefault Transaction Behavior MicFwDomainProcess startTran
287. gramming Reference MYND 3 5 View Parts 129 3 5 24 Packeting Container Details 3 5 24 1 partName 3 5 24 1 1 Syntax connectionNameContents_ accessorMethodContents_ connectionNameSe accessorMethodsS ecti displayMethodIte cti on_ m_ The content of this Control is aCollection The selection of this Control is aCollection If the Connection Name is omitted or declared as VOID_ the Default Base Connection will be used 3 5 24 1 2 Supported Variations 3 5 24 1 2 1 All parts of partName specified connectionNameCon accessorMethodCon tent tent connectionNameSe accessorMethodSe ect ecti displayMethodItem 3 5 24 1 2 2 displayMeth connectionNameCon accessorMethodCon connectionNameSe tent tent ect accessorMethods cti VOID_ 3 5 24 1 2 3 connectionNameContents displayMethod not specified VOID S S_ Lon on_ od not specified S S_ Lon on_ accessorMethodContents_ connectionNameSe ecti accessorMethods ta VOID on on_ 3 5 24 1 2 4 connectionNameContents connectionNameSelection displayMethod not specified VOID accessorMethodContents_ VOID accessorMethodSelection_ VOID 3 5 24 1 2 5 connectionNameContents connectionNameSelection accessorMethodSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ VOID VOID
288. groupControl to the front Use startInteractionForAspect instead MicFwDomainProcess gt gt selectProcess Obsolete bring its groupControl to the front Use startInteractionForAspect defaultProcess instead MicFwAbstractDomainProcessContext gt gt setDomainProcess aDomainProcess Set the DP controlled by the receiver MicFwAbstractDomainProcessContext gt gt setEnv var to value Set an DP environment variable Setting an envvar to nil means that it is removed MicFwPsProjectionDescriptor gt gt setQuery aBlock Set the query to aBlock MicFwPsExtentldentifier gt gt setQuery aQuery Set the query that specifies the extent aQuery can be an Array of Symbols old query syntax or a Block extended query syntax Answer the receiver if successful Signal an exception otherwise MicFw1Relationship gt gt setTo anObject Create the relationship connection between anObject and thisObject Validate the type of anObject and the connection if the receiver s validateType is lt true gt Delegate to connection handler MicFwPsObjectidentifier gt gt setValueFor keyObject to aValue Set the value for the specified key MicFwViewPort gt gt shouldEmulateEditable This method turn on the emulation of the editable protocol for widgets which don t implement this behav iour by themselves MicFwRabiIntegrity Violation gt gt skip Set the receiver to be resumed when the active handler has terminated on the next lower level MicFwAb
289. gt register self registerForDevelopment The method register will be called when the application is started Note After the above has been completed Loading the application MicFwViewPorts can overwrite the Dispatcher and causes errors Application Framework User s Guide 4 Advanced Programming Reference MA 176 4 5 ViewPort RequestBroker MYND 4 6 Authorization The Application Framework offers authorization mechanisms for both Domain Objects and Domain Pro cesses Managing authorization at this level of an application provides for greater consistency within the scope of an application than managing it at the GUI level does Also it helps in avoiding security loop holes For Domain Objects and Domain Processes read and write accesses to an object s attributes can be con trolled Only for Domain Processes the right to perform Aspects of the object is controlled The authorization mechanism is class based This means that authorization rules will be the same for all instances of the controlled class Let s look at validation for read and write accesses first The Frameworks interface provides the following protocol for managing access to a Domain Object s and Domain Processes attributes in class Method Method Description authorizeReadUsing aRule authorize read access to all the object s Aspects based on the result of evaluating lt aRule gt lt aRule gt is either a block or
290. h two members 2 3 5 3 Create Club View Now we need a view to represent the list of members and to show the Controls necessary for manipulat ing it This view can look like the figure below Please use the following names for the Controls for the for the New button Edit button this will be implemented in the Domain Process that manages this view as you guessed we will invoke the edit process window we already have for the Delete button e this will be implemented in the Domain Process that manages this view for the Ok button e this is a default message implemented in the Framework Closes the Window and commits all transac tions for the Cancel button e this is a default message implemented in the Framework Closes the Window and commits all transac tions for the List Control PMS MICADO Application Framework User s Guide 2 Tutorial 2 3 Beyond Basics 63 used to retrieve the list and get set the currently selected member O X File Edit View Layout Connections Options Help UltraTools 3ize amp Positor l 22 ell Fle a Su el ola lolx ial E a il ma po e DAEN Members a gt club_members_default_selectedMember_ selected 1211S The choice of names will be explained when we get to the Domain Processes involved 2 3 5 4 Create domain process to ha
291. he business object classes As a consequence the framework provides a way to connect business objects to GUIs or other external views Moreover it introduces a powerful view controller which fits most of the needs but which is very flexible and extensible The Application Framework is a class library which allows creating portable applications with a robust and clear architecture It contains sophisticated updating automatisms and lots of default behavior which make application development deterministic and easy from the start When the application grows its complexity stays almost the same because many design patterns can be reused 1 1 4 Fields of Operation Application Framework enable an application to be modeled and implemented in a portable manner and independently of the system and software infrastructure These include Operating system APIs characteristics release change e Front end system GUI of the operating system HTML pages Java applets e Style guide dialogs notebook window in window Drag amp Drop e Externalizing texts mnemonics and one touch keys presentation formats user guidance Scaling Batch network computer network PC standalone laptops servers mainframes e Distribution Internet Intranet configuration communication infrastructure e Integration of other Frameworks persistence replication communication e Integration of external systems process control authorization system legacy application
292. he database Sub classes will determine which actual class of descriptor is used The statement will be prepared and exe cuted the user can start to fetch via nextRow immediately MicFwAbstractPersistenceManagerRdb gt gt executeSQLForFetch anSQLString with parameterArray Answer an sq statement descriptor object that can be used to directly interface with the database Sub classes will determine which actual class of descriptor is used The statement will be prepared and exe cuted the user can start to fetch via nextRow immediately Use the parameters in lt parameterArray gt MicFwPersistenceManagerRdb gt gt executeSQLForFetch anSQLString with parameterArray Answer an sq statement descriptor object that can be used to directly interface with the database Sub classes will determine which actual class of descriptor is used The statement will be prepared and exe cuted the user can start to fetch via nextRow immediately Use the parameters in lt parameterArray gt MicFwRabAbstractDirectStatement gt gt executeWith anArrayOfParameters Execute the statement without answering result Close the cursor immediatly Use the parameters in lt anArrayOfParameters gt for the embedded parameter markers in the statement Answer the number of rows affected MicFwRabIntegrity Violation gt gt executeWith anArrayOfParameters Execute the statement without answering result Close the cursor immediatly Use the parameters in lt an
293. he new dialog box in the left list and displace by clicking the command button gt gt into the right list and confirm you through may click the ok command button Defining a Domain Model Define a Domain Model Define a Domain Process gt Define a View To get started we ll define a simple Domain Model At the center of our fitness club application there is the club member so it makes sense to model it first In the object model in figure 6 1 the member class for our first shot will have four direct attributes name e first name e date of birth e initial weight when joining the club Let s start the Object Model Explorer to create the member class as a subclass of and to define the four attributes as well as additional information about the class The Object Model Explorer has to be opened by the SystemTranscript Menu micFrameworks gt Object Model Explorer gt open Object Model Explorer Ew Eii Erisa og ErhmrH i Open Seren Phe Ginta g i Aad Gregs i Gane 5 a gr we Bue Cen Process Toe 4 Bee Tiree oe ae imara yari Hat oD EEE EE To create the member class using menu Class New Class E Object Model Explorer on BES Variable Options E Application Framework User s Guide PMS MICADO 2 Tutorial 2 2 Getting Started 49 Here you define the name and the super class of your member class To define the super class please choo
294. he process context evaluator for instances the receiver An evaluater encapsulate an action e g an access to an instance variable MicFwAbstractDomainProcessContext gt gt processFinished The corresponding Domain Process has been closed May be overridden to perform cleanups MicFwDomainProcess gt gt processResult Return something to be passed to the parent as result MicFwPsExtentldentifier gt gt query Answer the query that was constructed from the input array or an empty query MicFwPsProjectionDescriptor gt gt query Answer the query that was constructed or nil MicFwPsExtentldentifier gt gt queryStream Answer a query stream which can be used to dynamically construct the query expression in the receiver MicFwPsProjectionDescriptor gt gt Application Framework User s Guide ew 302 Appendix A API MYND queryStream Answer a query stream which can be used to dynamically construct the query expression in the receiver MicFwDomainProcess gt gt reactivateConnector Obsolete Use reactivateViewInteraction instead MicFwDomainProcess gt gt reactivateView Reactivate the receivers view MicFwDomainProcess gt gt reactivateViewlnteraction Reactivate the receivers Model View Connector MicFwViewPort gt gt readAccessRejectedForAspect anAspect vetoValue aProhibitedModel Override this method to control the reaction on a rejection of a read access to the model MicFwDomainProcess gt gt readModelAtConnection aConnectionNa
295. he userlnputConvertError is not passed on to the Framework If userlnputConvertError should be passed on to the Framework then the utilized widget class must be subclassed and the Event must be registered See View Adapter page 226 For example the following widget is subclassed AbtTextView subclass UserAbtTextView And the following view implementation is created MicFwAbtTextViewImplementation subclass MicFwUserAbtTextViewImplementation MicFwUserAbtTextViewImplementationclass gt gt implementedEvents Public Answer a dictionary with supported real events as keys and abstract events as values IdentityDictionary new at losingFocus put MicFwObjectUpdateEvent at stringChanged put MicFwObjectChangeEvent at helpRequested put MicFwHelpRequestEvent at userInputConvertError put UserFwObjectInputErrorEvent yourself The Event class must be created The input can be rejected in the method lt triggerWithCallData data gt as shown in the following example or a method in the Viewport of the Domain Model that receives the input can be called Implementation of a custom error event MicFwObjectAspectEvent subclass UserFwObjectInputErrorEvent UserFwObjectInputErrorEvent gt gt triggerWithCallData data MicSystem messageBox message The Input data offendingInput is incorrect self abstractWindow windowImplementation window converterManager userInput
296. hin the dynamic column the aspect name of the object the method col1 in the default pro cess or in the default process viewport must be implemented as following coll name A variation of this would be to use a MetaAspect that directly sets the content of the aspect and the width of the column Example MicFwMetaPartCollection new add MicFwMetaAspect new aspect name title name columnWidth 80 yourself yourself 3 5 1 2 4 How to connect embedded parts Embedded parts are currently only possible within container detail view 3 5 1 2 4 1 An example of directing editting with embedded parts A List with objects with viewport A should be displayed in a container details view The first column is named defaultProcess_column1_ The default process implements columnl aspectXy The connection for the direct editing is in viewport A A MicFwEmbeddedMetaPart will be returned with the aspect name of the column and the subaspect EmbeddedPart 3 5 1 2 4 2 Examples ViewPort A implements columnlEmbeddedPart MicFwEmbeddedMetaPart new accessorString defaultItem name type TEXT initiallySelected true yourself Application Framework User s Guide aA 3 Programming Reference 3 5 View Parts 103 columnlEmbeddedPart MicFwEmbeddedMetaPart new accessorString defaultItem toggleButton type TOGGLEBUTTON yourself columnlEmbeddedPart MicFwEmbeddedMetaPart new accesso
297. horizeReadUsing aModel aModel session currentUser canRead f authorizeRead session using true sel We also stated that a club member s initial weight can only be entered by someone who qualifies as a coach This is reflected in the class method initializeAuthorizationTable allow write access to the initial weight aspect only for coaches super initializeAuthorizationTable self authorizeWrite initialWeight using aModel aModel session currentUser isCoach only a coach is allowed to enter the initial weight 2 3 6 8 3 Action authorization theory The protocol for Domain Process authorization is also class based The messages to define authorization are authorizePerformUsing aRule Allow execution of all Aspects of the receiver s class based on the result of evaluating the block or message lt aRule gt e authorizePerform anAspect using aRule Allow execution of lt gt of the receiver s class depending on lt aRule gt 2 3 6 8 4 Implementing action authorization rules We stated earlier that only users with the right to modify data should be able to add and delete members The following method in MicExampleMasterProcess sets authorization accordingly initializeAuthorizationTable allow creating deleting members only for users who can modify data super initializeAuthorizationTable self authorizePerform newMember using aModel aModel session currentUser canModify s
298. i yc gece viten he nevada eet cine OE A EOE A 243 Application Framework User s Guide A 338 List Of Figures MYND Figure 120 Localize a Hover Help ornes iiss ieia E E ASE AAAA ATENA EE 244 Figure 121 Localize a button label essscustii ain E EA E 244 Figure 122 MLS Data Editor Create a new context o oo eee ceceececeee eee eeee eee eeeeeaeeeeeeseaeeeeeesaeeeeeeeeeneeeeeeteeeeaees 248 Figure 123 MLS Data Editor Edit contexr settings eeeceeceeeeceeeeeeeeeneeeeeeeeaeeeeeeeaeeeeeeeeaeeeeeeeseneeeeeeeeeenaees 249 aA Application Framework User s Guide List Of Figures 339 Application Framework User s Guide MA 340 List Of Figures MYN fa 1010 g e SEEE OA E EE EEEE E eh assed 57 ADON aerer e A A 57 abortAndCloSe seseeererererrrerrrerererrrerrrrnee 86 abortAndCloseProcesS sseeesesseseeeesssese 19 abortAndCloseView ccccccceeseeeeeeees 19 57 ADOLMIGCIOSE c cccscsiensaccaccsasasdsaasacescouasdecdeanscs 223 aborting a transaction 98 272 About PMS Micado toolbar icon 202 Abstract Commanid 41 220 221 225 Abstract Control 41 209 220 221 222 223 PAA S AE PENE EE E E E ee uaa 228 327 Abstract Event 35 41 220 221 222 223 226 ODT a A a Ea 327 Abstract Label ccccccccccceessesseeeeeeeeees 184 Abstract Value 00 221 225 229 327 Abstract View Al 221 222 223 226 327 Abstract Window
299. ibute in the model This scheme gives you an indication why correct naming is so important Imagine you forget the under score in a Control s name the Application Framework will not be able to identify the attribute of the Domain Model that the Control is supposed to represent For example if you forget the underscore on the member_firstName entry field and open the Window it will look like this G iojx name Sample firstName dateOfBirth 1172762 initialWeight 189 5 Application Framework User s Guide MEMS PMS MICADO 2 Tutorial ie 2 2 Getting Started 55 amp Connectors Browser lo x Connectors MLS contexts Connector Connection MicExampleClubMemberView u Pa Control OS Control MicFwObjectAspectControl AbtLabelView OSStatic dateOfBirth MicFwObjectAspectEditorControl AbtTextView OSTextEdit clubMember dateOfBirth 11 2 62 MicFwObjectAspectControl AbtLabelView OSStatic firstName MicFwObjectAspectEditorControl AbtText OSTextEdit Ld A quick look at the Connectors Browser will show you what s happening The one Control is an AbtText View however it doesn t have an accessor associated with it This immediately tells you that something must be wrong with the name as the Application Framework interpret everything that is followed by an underscore as an accessor The following picture gives you an overview of the application parts you made gray and
300. icMlsLocaleContext gt gt Class withKey aKeyName MicMlsLocaleContext gt gt localize aLocale anObject withKey connectSubcontext aLocaleContext connectSupercontext aLocaleContext delegateLocalizationof delegateLocalizationof delegateLocalizationof Class named aLocaleName MicMlsLocaleContext gt gt delegateLocalizationof Class named aLocaleName withKey aKeyName MicMlsLocaleContext gt gt Name 7 1 3 3 Formats anObject to anObject to anObject to anObject to aKeyName aLocale aLocale aLocale aLocale connectLocaleFor aLocaleClass named aLocale The various format placeholders are described in the appendix The relevant current value is entered at this position in the format string when localizing All format variables start with a percent sign Any other characters may be used in the format string as well as the format variables The percent sign can be displayed as Application Framework User s Guide 7 Multi Language Support MLS 240 7 1 Language Support Base System one D 7 2 MLS and Application Framework 7 2 1 Overview The Application Framework provides a generic Adapter for accessing the underlying MLS base system which is described in Language Support Base System The generic Adapter helps the developer to fetch data from the MLS base system into his views without great effort The framework will change its behavior only if
301. ice2 i club Mick wiViewPort currentMember MicFwViewPort default MicF wCommander i member domainProcessName String ZEEN logon MicFwCommander member MicFwCommander primaryPart Part self Domain Manager AL Nothing selected 2 5 3 Aspect Connections The Aspects of s are represented as connectable features of the corresponding edit parts Depending on their type the GUI parts also have one or two extra features The first which is called mic Contents represents the contents of the part The other named micSelection represents the selection of the part In the example in the above figure the members Aspect of the club is connected to the micContents feature of the Listbox indicating that the Listbox will be filled with the members of the club A detailed description of a complete example will follow in the next chapter 2 5 4 Example Our objective in this chapter is to take you through an example using all the new features in the Composi tion Editor which we presented in the previous chapter The example will be an extension of the Fitness Club Example In order to work through the example shown here it is vitally important that you are familiar with the contents of this chapter We will replace the views from the Fitness Club application with views created using the new features in the Composition Editor Fir
302. ide aA 4 Advanced Programming Reference MYND 4 11 Cached Views 191 4 12 Drag amp Drop Drag amp Drop within the framework enable the developer to abstract from the implementation details of Drag amp Drop and lead him to a more technical use of the mechanism The complete process control of Drag amp Drop is done by implementing some methods in the viewports of the models connected to the widgets on the screen These methods cover all dynamic Aspects of drag drop allow deny actions etc 4 12 1 Concept of Drag amp Drop In the internal layers a Drag amp Drop session is represented as following If a drag session start from VA a Control and a Drag amp Drop Connection will be created in the specific Connector the source model is con nected The Drag amp Drop Connection will connect all models which are involved in the Drag amp Drop pro cess The Drag amp Drop Control is the framework interface to the VA Drag amp Drop session via its implementation The Drag amp Drop Connection also contains some additional information of the current session so if more information about the current Drag amp Drop state is needed you can look in this Connection named drag drop 4 12 2 How to Use Drag amp Drop To use Drag amp Drop within your application the following protocol must be implemented in the specific viewports of the involved Domain Objects Notations lt aString gt always mean a String for exam
303. idenaatamaccehadasiutienyaseudsikanenitcel yadedunahiadsnaunibtdanwdustansnacenaneumndiweunasenentieals 97 Die VICW DOM sis E E A uni iulcinsiabondoussdubunlaniencdusseiUeoidadadiabttetigiadouiassdnelbusieoteve 100 3 4 1 Overview Instance Methods cccceeeeeeceececeee cee ee ee eee eee ea aaeae eee eeeeeee ea gaaaaaaaeeaeeeeeeeeeeeegeeeeeeeeeensanaeees 100 3 4 2 Method descriptions ss tice icv ncrayenwentevidinecdeasied caine sta EAER EEEIEE EAEE EEEE EERE AA 100 Bs WN P ans preach sence ceme senses macnn taaenmaa E E E E E EEE 102 Be Lee MORC ON harnean das tausintind ddvseawaevesiuawueat Deed dalisun ava a E aa a a S 102 3 5 2 PUSH BUTOMN ees tescnccecdehcnceaste tie agcansteveckeg aa sussascnececdasiesgaagnndseunseaaedauecdadaeshias stated dnancentbecesndxassaueancene 106 39 0 TOJE PUNO enii R EEE SEATA angenmnlene 107 3 5 4 Radio Button SEt poeis sciss ccc cadasanncdunatsactiectepdancnaaddhasadacestanscnadeaddasnwcuienceaeadebansesancuaas aaseaatteapocdunaacesceiie 108 9 925 SCAlC i tssacianite aeeredecleatuteestandaaveunvabsudehavaneteetageaetel a aa a Ea a aa a a a Aa 109 ELA RE e o EE E EE E E A T E ATE E T E T E TA 110 Sode HOt SPOl usoei ir e SE EI ESNE OE PEN ELE AT EE EEAS 111 908e TOR aeia EEEE EE SEA 112 3 5 9 Muline Edits orses a a EE EEEE EET ENE ERS E AOTER E REEE E 113 CRE o E E E E TE E E E E E ET AN TE TE PE E T T 114 Application Framework User s Guide MA 6 Table of Contents MYND BeDeT Te OPIN BU
304. ifier gt gt except anExtentidentifier Combine the queryAnalyzer of this descriptor with the queryAnalyzer of anExtentldentifier with the except operation MicFwPsProjectionDescriptor gt gt except aProjectionDescriptor Combine the queryAnalyzer of this descriptor with the queryAnalyzer of aProjectionDescriptor with the except operation MicFwRabAbstractDirectStatement gt gt executeForFetch Execute the statement without answering result Leave the cursor open so results can be fetched rowwise MicFwRabDirectStatement gt gt aA Application Framework User s Guide MYND Appendix A API 285 executeForFetch Execute the statement without answering result Leave the cursor open so results can be fetched rowwise MicFwRabiIntegrity Violation gt gt executeForFetch Execute the statement without answering result Leave the cursor open so results can be fetched rowwise MicFwRabAbstractDirectStatement gt gt executeForFetchWith anArrayOfParameters Execute the statement without answering result Leave the cursor open so results can be fetched rowwise Use the parameters in lt anArrayOfParameters gt for the embedded parameter markers in the statement MicFwRabDirectStatement gt gt executeForFetchWith anArrayOfParameters Execute the statement without answering result Leave the cursor open so results can be fetched rowwise Use the parameters in lt anArrayOfParameters gt for the embedded parameter markers in the statement MicFwRabiIntegrity
305. igure 108 Child connection with defined context Parent context with no Context eeeeeeeeeeeeeeeeeeeeeees 207 Figure 109 Preferences dialog Tab Filter eccccceeesecceeeeesseceeeeeeeeceeeeeesaeeeeeeeaeaaeeeesaeaeeeeeneaeeeeensneaeeeeeneaaes 208 Figure 110 Preferences dialog Tab Filter ecccceeeeeecceeeeesseceeeeeeeeeeeeeeesaeeeeeeesaeaeeeeeaaeaeeeeeeaaeeeensneaeeeeeneaaes 208 Figure 111 Preferences dialog Tal View o00 ecccceeeesecceceeeseeceeeeeeeeeeeeeeesaeeeeeeesaeaaeeeeaaeaeeeeeeaaeeeensneaeeeeeneaes 208 Figure 112 View Connectors BrowSer cccccescccceeeeeccceeeeeeeceeeeesneccaeeeeseeececeesaacaeeesaaeeeeeeseaeeeeenseeaeseeeneaaes 209 Figure 1 132 Framework LOQGEN unsoro O ET E 210 Figure 114 Extended Settings dialog for a Listbox 00 eeeeceeeeeeeenneeeeeeeaeeeeeeeaaaeeeseeeaaeeeeeeeaaaeeeeeeeaaeeeeeneaaas 214 Figure 115 Fitness Club Example in the extended Composition Editor ccc cceeeeeeeeeeeeeeeeeeeeeeneeeeeeeeeeeeees 215 Figure 116 Settings dialog for Domain Manager 0 eeeeceeeceeeeeeeeeeeeeeeeeeeeeeaeeeeeeeaaaeeeeeeeaaeeeeseeaaaeeeseeeaeeeeeseaaas 216 Figure 117 Tear off attributes of a Domain Manager eee ceeeeeeeeennee eee eeeeeeeeeeeeeaaeeeeeeeaaeeeeeeeaaaeeeseeeaaeeeeeeenaas 216 Figure 118 MVC Architecture in the Application Framework 00 cccccceeeseeeeeeeeeeeeeeeeeeeeeeeeeeseeeeeeeeseeeeeeeeeeeeeees 221 Figure 119 Localize A LOX oes atin checz cin c
306. ike a group of static texts and entry fields which represent a logical group in the view an address for example As described in section Language Support Base System Language Support Base System the MLS base systems offers a structure called in which you can collect Locale Entities instances of Locale Categories Each MLS Context then offers a set of integer or string keys and formatting rules for Date Time Float and Integer objects All Locale Entities inside a MLS Context are localized to one Locale e g germany german When using the Application Framework MLS Adapter you bring both things together Each Control of a view or a group of Controls is connected to a Model Connection which carries a model and a viewport This Model Connection can be specified directly or default behavior is used Now each Model Connection gets its MLS Context This can be done by selecting one inside the Domain Application Framework User s Guide 7 Multi Language Support MLS ew s 242 7 2 MLS and Application Framework MYND Processes Browser or if none is specified the Model Connection will try to get a MLS Context along a default path Now the generic Adapter will try to use the MLS Data inside the Model Connection s to convert keys into strings or values into strings with the formatted content of the value For the generic Adapter an Aspect name for a Control can be a key in the Locale Entities of a MLS Con text and a value returned from the mode
307. image In MicFwFitnessClubExample class the message is implemented as PackagerIncludeSelectors self packagerIncludeClasses inject OrderedCollection new into res class res addAll class allSelectorsFor self addAll class class allSelectorsFor self res Again this implementation is rather crude as it includes all selectors that have an implementation You may choose to be more specific here if the need arises 8 3 1 1 3 Using Symbols In typical Smalltalk applications Symbols are used for two different purposes one is to provide flexibility in what messages are being sent the Symbols will be performed at some time the other is simply as a string like data type Since the Packager cannot distinguish between these two usages it always assumes the worst case every Symbol might be used as a message selector Consequently during the packaging process it will warn you that aSymbol has no implementors even if you never intended aSymbol to be used as a selec tor There is a way to circumvent these warnings though You will need to implement the message in your application class returning a Collection of Symbols you do not intend to use as message selectors For instance if you use Symbols for colors throughout your application have packagerKnownSymbols return red green blue white yellow The alternative is to use Atoms instead of Symbols in the first place Atoms behave like Symbols do but are not assume
308. in decision making This manual assumes that you have some knowledge of or experience with the Smalltalk development language and its basic concepts and programming techniques It is also recommended for the reader to have a fundamental understanding of graphical user interfaces GUIs To install the Application Framework you should also have a working knowledge of IBM VisualAge for Smalltalk and should be familiar with the Object Behavior Framework which is documented in its own manual will guide you through a program creation process from scratch It will help you in extending your knowl edge about fully fledged applications by adding features step by step For training in association with the Framework Mynd offers a wide variety of ready to use classes for Smalltalk programming object oriented analysis and design methods and project management tools Recommended Chapters The organization of this manual follows the concept that there are several ways to read our manual Some chapters are intended to be read by programming novices while other chapters are to be used by experi enced or senior programmers who want to get most out of the Framework Therefore we recommend You to decide which chapters could be of interest especially for Your needs and skills For the Smalltalk and OO programming novice e Start with Tutorial page 45 For the designer or architect of an application e Start with Concepts page 23 e Optionally
309. in one view 2 3 5 9 1 Create add new member process The add new member to club process could be created by executing the following code MicFwDomainProcess subclass instanceVariableNames classVariableNames poolDictionaries 2 3 5 9 2 Definition of the add new member process The add new member to club process should be defined by the domain processes browser After you have done all definitions with the exception of the transaction behavior see next topic it should look like this o x Browser Process class Connection Options MicExampleAddNewMemberProcess MicExampleAddNewMemberProcess Zj MicExampleMasterProcess R te alel aj els 3 AE I PMS micavo Process Classes Hierarchy Processes Hierarchy Hame Value micExampleAddHewMemberProcess club Type Hame CHILD_PROCESS member Class Viewport MLS context MLS supercontext Default view MicExampleMemberProcess lt generic gt Uses a lt none gt Uses a lt none gt MicExampleMemberProcess clubMember lt none gt Transaction Connection Transaction handling None Transaction Transaction handling LJ Child Hone P Inheritable default base Inheritable P Default base Pi L Process class heritable child process Er O Main Process d Jo Motivat
310. in the current VA directory Application Framework User s Guide 7 Multi Language Support MLS MA 252 7 3 The MLS Data Editor MYND 7 4 Tables 7 4 1 Formats 7 4 1 1 MicMlsLCDate bAbbreviated name of month BFull name of month mMonth as number with leading zero 01 12 zMonth as number without leading zero 1 12 dWeekday as number with leading zero 01 31 eWeekday as number without leading zero A space is put before single digit figures 1 31 tWeekday without leading zero 1 31 wDay of week Sunday is 0 ALong name of weekday aShort name of weekday y Year without century 00 99 Y Year with century 7 4 1 2 MicMlisLCNumeric llnteger part of a number with leading blanks i Integer part of a number without leading blanks S Decimal separator fFraction part aAlways signed or nOnly signed if negative value 7 4 1 3 MicMIsLCTime HHour in 24 hour format 00 23 lHour in 12 hour format 01 12 kHour in 24 hour format without leading zero 0 23 iHour in 12 hour format without leading zero 1 12 MMinutes 00 59 SSeconds 00 59 pLocalized AM PM string 7 4 1 4 MicMlsLCMonetary For Monetary the same format variables apply as for Numeric plus the following UFull name of currency HShort name of currency Y Currency symbol Application Framework User s Guide aA 7 Multi Language Support MLS MYND 7 4 Tables 253 7 5 Examples
311. ing a Mapper As an example of modifying the default behavior of views without an explicit Domain Process we will exchange the framework s with an implementation which will be a subclass named Let s assume we want to run our views in an isolated transaction con text in contrast to the framework s default which is not to support any transaction behavior with generic Domain Processes at all e Create a subclass of named located in your subsystem Use the Domain Processes Browser to declare and store the requested transaction behavior with the new Use your loaded VA or initialize VSE mechanism to implement the registration of as the generic Domain Process the Framework will use in the future This will take place by calling e self genus use as domainProcess e Version and release your code reload your subsystem or execute the registration code to activate the exchange now e Now test your modification by executing one of the framework examples that uses a view without an explicit Domain Process You find all provided examples in the ExamplesBrowser that can be reached through the micFrameworks in your Transcript window You can examine the new behavior with the Logger ViewConnectorsBrowser and TransactionsBrowser e If necessary you may now implement additional methods in to meet further requirements Application Framework User s Guide aA 6 Customizing MYND 6 3 Substituting Subsystems 233 6 4 Adding Y
312. ing of the parent process A child process can prohit the closing of the parent process The main process attempts to close the view If commitAndCloseProcess fails ask the user if to abort or cancel and perform the appropriate action defaultClose self commitAndCloseProcess ifFalse self askUserIfAbortOrCancel ifTrue self abortAndCloseProcess The child process can block the attempt to close the window with canClose aCloseInfo self checkForCloseInfo aCloseInfo checkForCloselnfo returns lt false gt FAQ 2 2 How can l implement additional custom behavior before actually closing a process The method for example userAbortAndCloseProcess that is executed when a process is to be closed committed aborted etc can send addtional messages before actually sending the message that closes the process Assume in the following example code that a view has an abort and a commit button Clicking a button sends the userAbortAndCloseProcess or userCommitAndCloseProcess message to the process respec tively Both of the methods send the required message userCloseCode before actually sending the mes sage to itself to abort or commit the process UserProcess gt gt userAbortAndCloseProcess self userCloseCode self abortAndCloseView UserProcess gt gt userCommitAndCloseProcess self userCloseCode self commitAndCloseView FAQ 2 3 How can the user be allowed to choose whether or not the default close of a main process causes the en
313. ion feature is no longer a part of the Application Framework 6 VisualAge 5 01 compatibility Frameworks including Application Framework now run under VisualAge 5 01 Version 4 3 1 Inserting MicFwUndefinedObject in a DropDownList under OS 2 causes no error Under OS 2 a MicFwUndefinedObject can be inserted in a DropDownList with no errors In the previous version this caused update errors 2 Web interaction not supported The Application Framework connection to the IBM WebConnection is not supported in this version This connection was provided as a preview in the previous version however performance with the Web Connection architecture in realistic web implementations was less than expected Version 4 2 1 View can be opened as a Prompter A View can be opened as a Prompter Processing is halted while the view is being opened MicFwDomainProcess gt gt openViewAndWaitUntilRemoved aViewClass MicFwDomainProcess gt gt openViewAndWaitUntilRemoved 2 MLS automatic conversion of entries disabled MLS no longer supports automatic conversion of entries One reason for this change is that the complex application rules required for the feature are eliminated In the previous version the following entries would be converted as shown 1 00 000 00 to 1 000 000 00 aA Application Framework User s Guide MYND Release Notes 13 1 24 567 00 to 1 240 567 00 1 000 00 to 1 000 000 00 The above entri
314. ion gt now allows using the context and level of the parent when starting a process transaction 10 New method MicFrDomainProcess gt gt forceStartTransaction lt forceStartTransaction gt starts or activates the process transaction If the process uses the parent context then a separate level is started for the process 11 Performance optimization for committing a non isolated TransactionContext Committing a non isolated TransactionContext will not send lt aspectChange gt This is not necessary since changes are already globally visible due to ReadTraces e lt commitVersion aMicFwObjectVersion inContext aTrContext gt e lt commitVersion aMicFwObjectVersion inContext aTrContext inRelationship aRelationship gt 12 Application framework exception handling Application Framework can handle ExError exceptions The new hooks lt micException gt specify the type of asynchronous handling of an exception The default implementation specifies that the process that caused the exception is closed The default implementation of lt doPerformAsynchBlock gt resignals the exception or calls the hook lt micEx ception gt when the systemlsRuntime Flag is true lt doPerformAsynchBlock gt specifies the action to be performed immediately after the exception occurs while the stack is not yet flushed If the Exception was generated during a CommandRequest then the hook lt defaultExceptionReturnValue ForCommandType aCommandClas
315. ion if an accelerator for the menu item has been defined However this applies only to menu items that are registered with the current view In other words for dynamic menus ie menus that change depending on the current view only the accelerators whose menu items are accessible can be executed MicFwMetaCommand new accessorString testCommand label MicFwAbstractLabel new labelString Test labelType 2 yourself mnemonic 2 acceleratorDescription Control 2 acceleratorText Ctrl 2 yourself 4 8 3 5 Using Abstract Label Strings CgPixMap s and Abtlcon s can be used as labels However its important that the correct label type is set for the abstract label The label types are defined in the PoolDictionary CwConstants Valid types are XmPIXMAP XmSTRING XmICON String label examples MicFwMetaCommand new accessorString testCommand label Test yourself or MicFwMetaCommand new accessorString testCommand label MicFwAbstractLabel new abelString Test abelType 2 XmSTRING Application Framework User s Guide 4 Advanced Programming Reference MA 184 4 8 Group Controls MYND yourself PixMap s or Icons to be displayed must be defined with a GraphicsDescriptor The definition is set using MicFwGraphicsDescriptorMapper gt gt use aResponsibleObject for aCategorieSymbol Where lt aResponsibleObject gt is the graphic and lt aCategorieSymbol gt the key lt aRes
316. is Application Framework User s Guide For Frameworks Release V5 0 Application Framework Sam Life fas oremce i h i e ae i MYND Application Framework User s Guide 1 ony 2 Application Framework User s Guide MYN Application Framework User s Guide 3 ony 4 Application Framework User s Guide MYN Copyright and trademarks Copyright Copyright 2000 Mynd All rights reserved Mynd Frameworks V5 0 Application Framework User s Guide July 2000 For more information about Mynd Frameworks please contact Mynd SoftwareConsult GmbH Taubenholzweg 1 D 51105 K ln Cologne Germany Tel 49 0 221 8029 0 FAX 49 0 221 8029 999 Email info mynd de Web www mynd de Trademarks is a registered trademark of the Object Technology International corporation and are registered trademarks of the International Business Machines Corp and are registered trademarks of the Microsoft Corp aA Application Framework User s Guide MYND Copyright and trademarks 3 Application Framework User s Guide aA 4 Copyright and trademarks MYN Table of Contents GODVFIGHE ANG trad markS siascasssdssesepisssnsntsnsasdancesseedsnsiigetaswonwuiaassessudebsnstvxrsuaeedeasssiedbdussaawaeess 3 TADIG OF CONT al siesta situs A E vass isbadnatbossastiavaudeniangded E 5 DOGUINENIALION OVETVIOW saves esicdscedsicstrcsscsrucadsiacciuaedvs sea vdsdancdicnenvbdnaninnboavsndeemwa
317. is a pattern to allow easy access to and influence the behavior of specific application com ponents The Framework offers an interface to define authorization and validation of all Domain Objects based on externally maintained rules These rules may be implemented by Smalltalk blocks or messages or even complex objects that you implemented as a part of a security system They just have to be compat ible with a very narrow and well defined interface which is explained in the chapters covering authorization and validation It will take more effort to substitute an entire subsystem The Framework uses specialized Mappers to let the developer set and get interface classes that are used to fulfill a requested responsibility Under certain circumstances you ll find a simplified default behavior which doesn t meet your requirements One of the Framework s default assumptions is that s are uniquely related to their model objects Domain Objects and Domain Processes In other words the which is selected for presentation of a Domain Object is chosen without any context or state of your application The following sections show how Brokers are used to implement this simple relation and how you can develop and introduce your own Bro ker in order to choose dynamically the correct Viewport for a given Domain Object The entire Application Framework has been developed to offer as many reusable components and as much reusable behavior as possible But on the other hand
318. is already open bring the view to front newInstance newConnectionName controller controller aMicFwDomainProcess multipleProcessControllerNamed multi newInstance controller prepareNewProcess Create a new dynamic child process Application Framework User s Guide MA 16 Release Notes MYND newConnectionName controller connectionNameForProcess newlnstance Get the new connection name contro r openProcess newInstance or contro r openProcessNamed newConnectionName When used first a new view is opened for the process If used when the view is already open bring the view to front Other APIs aMicFwDomainProcess multipleProcessControllerNamed multi isProcessStartedForMainObject anObject Answer if a process instance is registered for anObject aMicFwDomainProcess multipleProcessControllerNamed multi allProcessesDo aBlock Iterate through all process instances controlled by the multiple process controller aMicFwDomainProcess multipleProcessControllerNamed multi connectionNameForProcess aDomainProcess Answer the connection name which was given to the new child process connection 2 Dynamic column Position hint horizontal alignment The dynamic column now also supports a position hint This hint is the position of the static column this col umn should be inserted after The dynamic column now also supports a horizontalAlignment This can be set via one atom out
319. is explicitly specified opening a view from a Domain Model for display only Concerning persistence the same as described for Domain Models in the previous section also holds for Domain Processes since the class is a descendant of MicFw PersistentObject This makes sense if for example a Domain Process and its state information must be stored in a database to be saved for later processing possibly by another user s Smalltalk image 1 3 7 Attaching Domain Processes 1 3 7 1 Attaching One Domain Process Especially within the Application Framework Domain Processes are designed to implement business pro cessing logic or control over existing external modules which provide such functionality like calculating rates of a certain insurance requirement Besides this often some control functionality is involved e g to perform the start or opening of another view controlled by a subordinate Domain Process The main pur pose of a Domain Process is to implement all commands and actions to be performed when the user oper ates one of the Command Controls like buttons Menu or toolbar items or doing some special actions like a double click on a list of objects The Domain Process decides within the called method when to start or open another view managed by a child process for example The following diagram shows a normal configuration with one Domain Process and one or more Domain Models connected to a Model View Connector customer Customer Co
320. isible state of the Control specified by lt aspectName gt aA Application Framework User s Guide MYND Appendix A API 271 MicFwViewPort gt gt lt columnAspectName gt EmbeddedPart Returns an embedded part MicFwViewPort gt gt lt detailsViewContentAspectName gt ltemAspects MicFwTransactionManager gt gt abortAll Abort all contexts MicFwDomainProcess gt gt abortAndBegin Abort the transaction of the receiver and all its child processes and begin a new transaction for the receiver and all its child processes MicFwDomainProcess gt gt abortAndBeginAlone Abort the transaction of the receiver and all its child processes and begin a new transaction for the receiver only MicFwDomainProcess gt gt abortAndBeginTouched Abort the transaction of the receiver and all its child processes and begin a new transaction for the receiver and all its child processes which have ever opened a transaction level MicFwDomainProcess gt gt abortAndClose Obsolete use abortAndCloseProcess MicFwDomainProcess gt gt abortAndCloseProcess Abort the transaction and close the receiver and its associated view If a child process wants to stay open with the parent but can t abort and close itselfs do not not abort and do not close the receiver MicFwDomainProcess gt gt abortAndCloseView Same as abortAndCloseProcess MicFwAbstractPersistenceManagerRdb gt gt abortDatabaseTransaction Rollback any pending database transaction
321. itched on for the receiver MicFwDomainProcess gt gt isViewOpen Answer the state of our modelViewConnector True means the view is present to the user MicFwViewPort gt gt itemViewPortBaseClassForAspect anAspect Override to change the base class for item viewPorts lt anAspect gt is the Aspect of the list content as returned by the receiver MicFwAbstractPersistenceManagerRdb gt gt iteratorClass Answer the class to be used for persistence iterations on MicFwPersistentObject collections MicFwAbstractPersistenceManagerRdb gt gt iteratorClass Answer the class to be used for persistence iterations on MicFwPersistentObject collections MicFwAbstractPersistenceManagerRdb gt gt iteratorClass Answer the class to be used for persistence iterations on MicFwPersistentObject collections MicFwAbstractPersistenceManagerRdb gt gt iteratorOn aPersistentClass where aQueryArray Application Framework User s Guide MA 294 Appendix A API MYND Answer an iterator capable of loading instances of lt aPersistentClass gt from the persistence medium that conformto the query expression in aQueryArray MicFwAbstractPersistenceManagerRdb gt gt iteratorOn aPersistentClass whereSQL aSQLString Answer an iterator capable of loading instances of lt aPersistentClass gt from the persistence medium that conform to the SQL Where Clause in aSQLString MicFwPsObjectlidentifier gt gt keyValues Answer the receivers key values OrderedColle
322. ities which are added to the context during the instancing process if these are present in the data pool The entry Load all keys into cache specifies whether when the context is instanced all data of its Locale Entities are to be loaded or whether the keys which have already been requested are retained in memory This option should be set to false particularly for large data volumes where only a few keys are actually required The entry Transacted specifies whether the MLS Data are to be incorporated in the transaction mechanism of Object Behavior Framework The Toggle Button below the List of all Locale Entities enables changes to be made for the selected line Delete entity and add entity and rename entity can be used for deleting creating or renaming the entries for the context However changes to these entries only change the reaction of the context during initialization This means that no Locale Entities are deleted or created and that only the potential addition of such entities to this context is affected The Combo Box master context can be used for specifying that a specific Master Context is set for this context when it is initialized as a super context This is only relevant for working without Application Frame work or for specific cases as the super context can also be set in the Domain Process browser It must also be borne in mind that any Master Context set at this point overrides all other settings in the Domain Process browser
323. ivides the window system the view controller layer into an abstract plat form independent side and the Platform View The platform independent window system Abstract View Abstract Controls Abstract Events and commands provides an interface to the view according to the architecture and the protocol of ApplicationFramework The Platform View however forms part of the host Smalltalk system e g IBM Visual Age and therefore it presents its own architecture and protocol Because of this a Platform Adapter system is used as an extension of the framework to perform the trans lation of the protocol and overcome the architectural differences between the host Smalltalk system archi tecture and ApplicationFramework architecture It should be noted that the ApplicationFramework does not intend to take complete control over the platform window system but take advantage of the host system capabilities and interface only those system features which are relevant for interacting with Application Framework The Window System Adapter of ApplicationFramework consists of the View Adapter instance of class the Window Adapters instances of subclasses of and some platform specific extensions to Abstract Events and Viewports The View Adapter inter faces the platform object which holds and controls the Platform View and the Abstract View Additionally for each component window of the Platform View View Part widget pane there is a Window Adapter which
324. k that modifications can only be done by subclassing them with concrete classes and registering these in a normal defined way is always taken as generic Dispatcher if you didn t implement your own subclasses It provides defaults for mapping the Domain Model Aspects to its corresponding and aggregating View Aspects automated update between Domain Objects and views mapping authorization and validation rules of the Domain Objects to state control of view elements editable visible formatting and a lot more The Framework s Mappers and Brokers provide an easy to use mechanism to allow the exchange of exist ing subsystems Each exchangeable subsystem of the framework is coupled via a Broker which must be registered with the Broker Mapper after loading the subsystem The Broker Mapper is one of several Map pers that will be explained later on in this chapter It maintains a collection of subsystem names which are unique and constant for all future releases and their associated Brokers During the following sections you will have a closer look at the currently implemented subsystem Brokers and a brief overview of their responsibilities We also describe in a detailed example how to implement and plug in a Broker 6 3 1 Brokers A subsystem implements its public interface in several ways It may offer a public class with some methods presenting services that are requested and handled at once returning a result which can be used without f
325. kinds of state information like whether or not the control should be enabled what the background color is which context help text is displayed and so on Abstract View When a real View is created an Abstract View begins to exist in its shadow The lifetime of the Abstract View is exactly determined by the lifetime of the real View The Abstract View s purpose is to manage the Abstract Controls corresponding one to one to the real Controls on the view Moreover the Abstract View performs coordination between abstract and platform layer when opening activating and closing the view It communicates with the real Platform View using a Platform Adapter Accessor Generator The accessor generator is the object that creates the OBF accessors for a variable Active Context Only 1 context can be active at anytime While a context is active any changes to any trans A Application Framework User s Guide MYND Appendix D Glossary 327 acted variables will be recorded in object versions This variable will be locked by the context which means that no changes may be made to the variable while a sibling context or parent context is active as long as this context exists Adapter A Platform Adapter system is introduced which does the translation of protocols and overcomes the architectural differences between the host Smalltalk system architecture and the Application Framework architecture This makes the core part of the framework itself portabl
326. l Composition Editor Delete v X Done D a ge l9 Logon Visual member Z 2 B V logon Push Button5 logon gt query selected E We must now change the so that it will make use of the newly created view Change the default view name with the Domain Processes Browser To replace the member editing screen go to the VisualAge Organizer again Create a new visual part named MicExampleMemberViewVisual Select a Domain Manager part ra from the micado Frame works section of the parts catalog and place it next to the Window Assign it the Domain Process named MicExampleMemberProcess and rename it to Member Now place an entry field inside the Window Double click it to get to the settings dialog window From the Drop down List in the section select Type for the at the settings at Please note that the options in the List are evaluated based on the Domain Process you have assigned to the Domain Manager part associated with your Window And go on in the same way you have done making a view for the Application Framework User s Guide 2 Tutorial PMS MICADO 92 2 5 Connect to models using Non Visual Parts 3 Programming Reference Application Framework User s Guide aA 3 Programming Reference N 94 Application Framework User s Guide 3 Programming Reference ots M YN D
327. l Two dif ferent variations can be distinguished e Presentation of Domain Model Aspects without transformations e Presentation of Domain Model Aspects with transformations The first case doesn t need a special Viewport a generic one is enough An example is a person with the attributes firstname and name where these attributes are presented in a view without transformations In the second case a Viewport must be written which provides the necessary transformations One exam ple may be a presentation of a person s sex one Model Aspect in a group of two radio buttons male female on a view Case 1 Case 2 OHH Default Domain Process 1 3 5 2 Attaching an Object Net An example from the insurance business will be used throughout the following sections for clarification of concepts It is a sketch of a typical situation in an application some views for data acquisition resulting in a creation of one or more Domain Objects The application provides the user with a couple of views for entering new claim data or editing an existing claim The following objects must be attached to the main view e the edited customer and his main address an overview of all his contracts the data of the newly created claim request The relationships between the Domain Models may be as shown in the diagram below Customer Address Contract Claim In order to attach objects connected to each other by a
328. l entity and the image of this format is displayed in the testing box 7 3 1 1 10 2 Add locale A further Locale is created for the selected Locale Entity The selected category with the selected name is thus applicable This Menu item is used for simply adding a further language territory combination to existing combinations 7 3 1 1 10 3 Delete locale This is used for permanently deleting the selected Locale of the selected Locale Entity from the current memory system All data of this Locale are lost 7 3 1 1 11 Browse version changes of locale In a library based systems you can check the changes you made compared to another version of the selected Locale The lower entry field always contains the MLS Data of the Locale which is in lt Values of the chosen key gt This the place for entering and changing the actual MLS Data 7 3 1 1 12 Further Menu Items General 7 3 1 1 12 1 Save all changes This ensures that all changes to MLS keys and their data which have been made in memory and which have not been saved are permanently written to the current storage system In general data which have not yet been saved will not exist as all data are immediately saved when the system changes from input field to another field 7 3 1 1 12 2 Clear mls cache All MLS Data stored in memory are deleted and are retrieved from the permanent medium when subse quently requested The keys in the Master Contexts are reloaded directly after
329. l is a candidate for the use of formatting rules 7 2 3 Integration of the Adapter into the Structure of the Framework The Adapter is fully integrated into the structure of the Application Framework as described in the chapters above Each Control of a view or group of Controls is connected to a Model Connection which carries a model and a viewport The Model Connection is the organizational unit which brings view Viewport and model together and because of this central position the Framework and the MLS base system come together in the Model Connection When defining a Model Connection inside the Domain Processes Browser the developer can choose from a list of MLS Contexts Each Control which uses this Model Connection to get its label content help text and so on will access the MLS Context which it carries to search for keys or formatting rules While testing the application a developer can view the MLS Context of a Model Connection inside the Connectors Browser If no MLS Context is specified within the Model Connection it will try to get an MLS Context from the Default Domain Process Connection of the currently valid Connector or from a Default Domain Process Connection of its parent process Connector Doing this all Controls of a whole hierarchy of views can access an MLS Context which belongs to the Connection of the Domain Process whose view is opened first This would turn the MLS system into an NLS system and switching the MLS Contex
330. lAtConnection ccccccceeeeeeeee 20 real Control 0 41 209 220 222 327 real EVEN cc eeesesccceseseseeesseseeseeeees 220 real VIEW 0 eeeeeesescecceeeeeeeeeee 223 226 327 real VID OS lic 2s c0sg ttansaeautastencciarenasreaneesanieneets 84 real world concepts cceceesseceeessseeeees 328 realValue anAbstractValue e 222 POUO AAEE EOE A EE EAEE NEEE E 225 referential integrity eee eeeeeeseeeeeeeeees 330 registerWithRealWindow s s s 224 relational databases ceeeeeeeeeeeeseeeeeee 330 relationship 32 33 62 89 215 226 329 330 Reload all classes from current environment toolbar ICON ceececececeeeeeseessneeeceeeeseeseees 202 FE MOVG iesise naro E RES 19 remove MLS system ccssecccsesseeeeeees 245 Remove selected connection toolbar icon 202 reusability 00 eee ce cececeeseseccececeeeeesessensnaeees 29 runtime executable 263 264 266 329 S sample application cccceeseeserseeeeeeeees 47 Save all changes menu item 0 199 Save all changes via destination connector tool AMICON xsiivstotesetedaetetsteet eevee heaiied deve 201 Save current session to disc toolbar icon 201 scala Dillty ss 2 nr er e AES 26 all 6 E ET 109 Script EdItOT issons n 51 Scrolled WINGKOW sssscssseessesvseentvesvsnesasens 141 Search for a class menu item 200 Searchforaprocessc
331. lassinobjectnet toolbaricon 202 select event occ cccccaienscsccsaasdcenchantsdesadabdeecseneetc 19 selectedMember ssssesseneseessssseereresssssssererr 66 AMemberColl ccceeesccssessssseesesseeeeseees 66 So 210110 ee 32 selectionAspectName ceceesesseceeeeeees 214 selectionConnectionName 0 0e 214 SON SIUIVILY 3 sevdecns e a 222 SEVICE aene E E E S 43 Set as default base menu item 200 SME EAT PE EA EEA 222 OMG Uten n e E E A RiR 184 Show context comparison scccceceees 207 Gld renta vette tisieieeeees 110 Source Destination connectors 206 Spin Button 4 115 214 spiral approach in iecisn sce estanndusausGheedongucdaaas 230 StandardMasterConte t cccccceeeeeeee 254 Startup adjustment cccecceseseeteees 208 Status Dar iisi ai as 205 SIOPE a E RE 42 328 Style QUIGE viteiistsen Gedstee enti detected 26 41 Subaspect cceeeee 18 100 101 166 167 DUBMOENU ss srcdscssericctattecsasscbagceiasatendvadbaveetas 183 subsystem Broker cecsecsececeeeeeeeeeens 230 support table 0 0 ceeeeessesetteeeeeeeees 32 230 SysteMTransCript ceceessceeeees 49 55 65 T TORU E EE EE N A 112 textAccessorName eeeeseeseeeeeeessseseee 214 215 textModelName ccccceessseecececeeeeeeeees 214 timeless architectures ccccceeseeeeeeees 29 Toggle ButtOn ccccccccec
332. lationship See 1 way relationship Relationship Editor A visual OBF tool for establishing relationships between 2 classes See object Net Browser Relationship In Smalltalk relationships between objects are simply represented as object pointers No distinc tion is made between complex and simple scalar data types since all are full scale objects and there is con ceptually no difference between a relationship and an embedded value Beyond this the PMS MICADO Object Behavior Framework provides an elaborated relationship concept maintaining referential integrity between objects Those relationships may even be mapped to relational databases with the help of the PMS MICADO Persistence Framework RelationshipDescription MicFw Object which contains complete information about a relationship Running context A context that has a TrLevel1 it may have higher levels also Sibling contexts See Concurrent Contexts STOPF ODBC Smalltalk Object Persistence Framework Transacted variable A variable that has been marked as transacted in the Object Net Browser NOTE Changes to a variable will not be transacted even if a transaction context is active if the variable is not marked as trans acted Transaction Browser A Visual OBF tool for displaying and manipulating aborting committing transactions Transaction Context A logical unit that can contain transaction levels and that can be related to other contexts as a parent sibling
333. lativ to the static Notebook Pages The position towards other dynamic pages is defined by the position of the metapart within the metapart collection The position hint is zero based MicFwMetaAspect gt gt positionHint aValue Set the position relative to the static columns in the view The position towards other dynamic columns is determind by the position of the meta Aspect within the collection MicFwDomainProcess gt gt prepareAbort Flag the transaction to be aborted Used to change requested transaction close mode for the receiver MicFwDomainProcess gt gt prepareChildForlnteraction aChildProcess A view has requested interaction with a child ofthe receiver Ensure that the child process is in the state to perform its task MicFwDomainProcess gt gt prepareCommit Flag the transaction to be committed Used to change requested transaction close mode for the receiver MicFwAbstractPersistenceManagerRdb gt gt primaryKeysColumnsFor aPersistentClass Answer primary key columns for aPersistentClass Answer a Dictionary with keys TableNames and values OrderedCollection with ColumnNames Only the primary key columns are mentioned MicFwDomainProcess gt gt processClosed Called after the process has disconnected its view Can be overridden to perform cleanups or exit the sys tem MicFwDomainProcess gt gt processContext Return the process context MicFwDomainProcess class gt gt processContextEvaluator Return t
334. ld be instances of the same class e g reload ing the same object Signal adequate exceptions in case of inconsistencies The following inconsistencies are signalled 1 concurrent changes in persistence and current transaction context MicFwDomainProcess gt gt refreshAllViews Refresh all views connected to domain processes in the complete process hierarchy MicFwDomainProcess gt gt refreshView Refresh the receivers view Enforce an update of the view with the actual model contents MicFwAbstractPersistenceManagerRdb gt gt registeredClauseAt aName Answer the clause stored as aName The result is of type MicFwPsRegistrableObjectInterface NOT FOR PUBLIC USAGE The API use of this method is deprecated Use one of the more concrete API meth aA Application Framework User s Guide MYND Appendix A API 303 ods instead e g registeredExtentAt or registeredStatementaAt MicFwAbstractPersistenceManagerRdb gt gt registeredClauseAt aName ifAbsent aBlock Answer the clause stored as aName The result is of type MicFwPsRegistrableObjectInterface NOT FOR PUBLIC USAGE The use of this method is deprecated for public usage Use one of the more con crete API methods instead e g registeredExtentAt ifAbsent or registeredStatementAt ifAbsent MicFwAbstractPersistenceManagerRdb gt gt registeredExtentAt aName Answer the registered object query extent stored as aName The result is of type MicFwPsExtentldenti fier MicFwAbstract
335. le calls of this method would return the same target object MicFwMetaAspect gt gt aspect aValue Set the Aspect of the model shown in the column MicFwPersistenceManager gt gt assertConnected Assert that the receiver is connected to a data source MicFwPersistenceManager gt gt assertPersistenceValid aPersistentObject Assert that lt aPersistentObject gt is in a state that would allow it to become persistent Signal a MicFwPs NotStorable exception otherwise Subclasses will most likely overload this according to their definition of persistence MicFwPersistentObject gt gt assertValidForinsertWith aPersistenceManager Assert that the receiver is in a state that would allow it to become persistent in aPersistenceManager Signal an exception otherwise The default implementation delegates this to the persistence manager MicFwDomainProcess class gt gt authorizePerform anAspect using aRule Use lt aRule gt Block or Message to authorize each perform access to lt anAspect gt MicFwDomainProcess class gt gt authorizePerformUsing aRule Use lt aRule gt Block or Message to authorize each perform access to object itself MicFwModelObject class gt gt authorizeRead aspect using rule Use lt rule gt Block or Message to authorize each read access to lt aspect gt If the access is prohibited real Value newProhibited will be returned MicFwModelObject class gt gt authorizeRead aspect using rule ifProhibitedRetu
336. lected in the DemoView List then the instance of the class appears in the right List of the Transactions Browser After selecting in the Transaction Browser the instance variable of this class is dis played in the lower left List Clicking the variable with the mouse lets the contents of the variable be dis played in the lower right List After selecting in the Transaction Browser the instance variable of this class is displayed in the lower left List Clicking the variable with the mouse lets the contents of the variable be dis played in the lower right List GyTransactionsBrowser O OZ OZO O OOOO OME DbjectinstanceVariables hic Fw ext 1 5 05 94 a DemoBase i E Clean Opos Opos o om Julia Water Juliahy u P 2a Transaction runs in uncommitedRead mode uncommitted Application Framework User s Guide 2 Tutorial PMS MicADD 86 2 4 Quick Tour of Tools Using the committed uncommitted button located on the status line it is possible to trace the changes of the contents of the instance variable 2 4 3 5 Common Problems The information in the Connectors Browser makes it easier to understand unexpected behavior of the framework Some situations are described below Problem 1 You have implemented a method in a Viewport class and you wonder why it is not called even though you have named a widget accordingly Worse scenario A Debugger is also activated with the message
337. lementa tions below but there are extensions for MLS and a different process and view structure implemented The code for ObjectModelExplorer can be found in the ENVY Configuration Map m m Application Framework User s Guide PMS MICADO 2 Tutorial 2 1 Introduction 47 2 2 Getting Started 2 2 1 Overview Define a Domain Model gt Define a Domain Process gt Define a View 2 2 2 Preparations for Envy Before you can begin with the examples you have to do the following steps in the team programming envi ronment ENVY You have to load the development environment So we load the ENVY Configuration Map named micObjectBehaviorFramework Development first and then the Configuration Map named micApplica tion Framework Development The code for ObjectModelExplorer can be found in the ENVY Configu ration Map micObjectBeaviorFramework Tools Object Browser Development and micObjectBeaviorFramework Tools Object Browser RMI Runtime Please load them too e You need an Application where you will put in all the stuff you will develop for topic fitness club e This Application requires the ApplicationFrameworks so you have to register a prerequisite for your new Application It suffices for the pending examples to indicate the Application MicFwViewPorts as Prerequisite 2 2 2 1 Creating a new Application It suffices for most actions inVisualAge to use the VisualAge Organizer It is one of the
338. leteTargetsOf aPsNRelationship Delete the target objects referenced by aPsNRelationship from the database MicFwAbstractPersistenceManagerRdb gt gt deleteWithReferences persistentObject Delete the persistent data associated with persistentObject from the database Also delete all data refer enced through relationships For use outside of persistence contexts Objects already loaded in the image are not considered and must be cleaned up by the application MicFwPersistenceManagerRdb gt gt deleteWithReferences persistentObject Delete the persistent data associated with persistentObject from the database Also delete all data refer enced through relationships For use outside of persistence contexts Objects already loaded in the image are not considered and must be cleaned up by the application MicFwPersistenceManager gt gt discardGlobally Remove the receiver from global storage MicFwPersistenceManager gt gt disconnectDataSource disconnect from the data source Subclasses will have to actually terminate the physical connection MicFwPersistenceManagerRdb gt gt disconnectDataSource Disconnect from the data source MicFwViewPort gt gt enterlnteractionForAspect anAspect comingFromAspect lastAspect of lastViewPort Called if the process is selected via a Notebook Page select event May be reimplemented to perform some actions with the process Return true if the actions are successful possible false otherwise MicFwPsExtentldent
339. levant initializations MicFwPersistentObject gt gt persistencelnsert aVersionContainer Protected the persistent representation of the receiver is about to be inserted with the version data in lt aVersionContainer gt Overriding this methods allows subclasses to perform any relevant actions e g generating primary keys MicFwPersistentObject gt gt persistenceLoaded Protected Perform any initializations that should be done after the receiver has been loaded from the per sistence medium This method will be overriden by subclasses that need to perform persistence relevant initializations MicFwDomainProcess gt gt persistenceObjectManager Obsolete Answer the receiver s persistence object manager It must be reimplemented if the receiver wants to use a persistent transaction context Better handle this setting the correct transaction policy object MicFwPersistentObject gt gt persistenceUpdate aVersionContainer Protected the persistent representation of the receiver is about to be updated with the version data in aA Application Framework User s Guide MYND Appendix A API 301 lt aVersionContainer gt Overriding this methods allows subclasses to perform any relevant actions MicFwDomainProcess gt gt persistentTransactionPolicyClass See lt defaultPersistentTransactionPolicyClass gt MicFwMetaPart gt gt positionHint aPositionHint Set the position hint The position hint specifies the position of the page re
340. lity aModality Set the modality MicFwViewPort gt gt model This method returns the Domain Object which this Viewport works on MicFwViewPort gt gt modelAtConnection aConnectionName Answer the model of the Connection named lt aConnectionName gt The connection that the viewport belongs to uses the connection MicFwViewPort gt gt modelAtDefaultBaseConnection Return the Domain Object which lies in the Default Base Connection of the current Connector MicFwViewPort gt gt modelAtDefaultProcessConnection Return the Domain Object which lies in the Default Process Connection of the current Connector MicFwDomainProcess gt gt modelChosen aConnection Called after a model is chosen enter double click in a List by the user lt aConnection gt is a internal List Connection MicFwDomainProcess gt gt modelltemChosen aConnection Called after a model item is silently chosen e g by item Menu request in a List by the user It may be reimplemented to work on the selected base model s lt aConnection gt is an internal List Connection MicFwDomainProcess gt gt modelSelected aConnection Called after a model is selected cursor click in a List by the user It may be reimplemented to work on the selected base model s MicFwDomainProcess gt gt modelViewConnector Answer the model view connector The connector hold all base connections and child processes connec tions to all domain objects MicFwPersistenceManage
341. ly the initialization method recourses into the child platform panes to create framework structures for them and connect them as explained At runtime the Abstract Windows hold their corresponding Abstract Events They are called by the Abstract Events which are responsible for the view update upon changes in the model world These calls are forwarded to the corresponding Platform Adapters mainly by the method which takes an instance of class The Abstract Value packs the value to be put into the widget with state information about visibility editability sensitivity for user inputs color and other Window specific information The Abstract Window unpacks the Abstract Value and sets the corresponding properties in the view window by calls to the Platform Adapter is an Abstract Window which shadows Push Buttons Menu items and similar widgets which can be selected to send a command to the model world It holds an Abstract Event of the class or a subclass which uses an Abstract Command to send the request to the Viewport of the corresponding default Domain Process object corresponds to a Menu which can access the Domain Process if its platform Menu has a name which installs model access to add and remove Menu items at runtime is the Abstract Window for all Windows capable of showing some Aspect or representation of a model The Object Aspect Control itself is used for read only Aspects like static texts There is a subclass the which supports
342. mber date_of_birth Date first_name String last_name String Application Framework User s Guide 2 Tutorial 2 2 Getting Started 51 PMS MICADO 2 2 4 1 Creating the domain process class You employ the VisualAge Organizer to do this Create the class for EditMember To do this you choose the menu part in the VisualAge Organizer there the submenu New there the submenu part A dia log box appears Now type the name of your EditMember class in the first field e g MicExampleEditWem ber Then you type MicFwDomainProcess in the inherits from field super class and click ok 2 2 4 2 Processing the DomainProcess in the DomainProcessBrowser The DomainProcessBrowser is used to process the DomainProcess in its quality as a UseCase and view controller class You achieve the DomainProcessBrowser by using the micFrameworks menu if you are there then choose the entry Browse domain Processes System Transcript Oo x File Edit Ritfegieiiteencm Tools Browse Log Open Dora srowser Browse View Connectors A dialog box which resembles that one which appears where you type in the name of your edit member class e g MicExampleMemberProcess A list appears that shows to you only classes which are derived from MicFwDomainProcess Choose your edit member class from this list and you confirm with ok The actual DomainProcessBrowser appears
343. mber L g Class MicExampleMemberProcess viewport lt generic gt MLS context Uses a lt none gt MLS supercontext Uses a lt none gt Default view lt none gt Transaction Connection Transaction handling Defined lt Autostart mode 4 Use own context Use parent context Isolate mode Persistence context Transaction context a e xle le Hierarchical mode Process class Ye othatytase Main Process Defaut base J Pativated t Undefined Littl eee Child process Base Non Activated L Not editable MicExampleMasterProcess with default base connection lt club gt and without default view name Finally we save all changes 2 3 5 4 4 Instance Variable for current selected member The currently selected club member is a status information of the domain process and should be defined in the same way as we defined instance variables of a usual domain object So we open the Object Model Explorer by the SystemTranscript Menu micFrameworks gt Object Model Explorer gt open Object Model Explorer To be able to work on our club process e g we have to add it to the model Class gt add class net Now we add the instance variable named currentMember to the process It is not necessary but a good idea to set the transact flag Now we can save our work Model gt save to VA and close the browser 2 3 5 4 5 Filter the
344. me which returns the text to be displayed when the user presses F1 nameHelpText self model nameDetailedHelp As you see you have to use the method call to navigate to the related domain model Here we have to implement the method MicExampleClubMember gt gt nameDetailedHelp An Employ need the name of the member to identify him self name isNil or self name isEmpty ifTrue So it is highly recommended to fill out this entry field ifFalse 2 3 4 7 Hover Help Protocol For Hover Help a method named will be invoked if it is present Conse quently implementing MicExampleClubMemberAtMemberProcessViewPort gt gt nameHoverHelpText self model nameShortHelp MicExampleClubMember gt gt nameShortHelp The name of the member self name isEmpty ifTrue Please to fill out this entry field ifFalse 2 3 4 8 Enable Hover Help at Visual Age If you re using the VisualAge Composition Editor make sure to check the box enable Hover Help over all children in the Main Window attribute dialog openSettings gt hoverHelpEnabled gt true G ialx Name Value a OK defaultBaseName C 1 dialogBorder true Cancel enabled true Apply foregroundColor fractionBase 100 framingSpec AbtViewAttachmentConstraint Help helpFile ce helpKeysld helpTitle helpTopicld horizontalSpacing 0 aI hoverHelpEnabled t
345. me Answer the model of the Connection named lt aConnectionName gt MicFwViewPort gt gt readOnlyAspect anAspect Set Aspects essentially read only These Aspects can only be displayed on the view MicFwPersistentObject gt gt refresh Refresh the persistent instance variables of the receiver by loading and comparing the values from the persistence medium Triggers and handles MicFwPsDeletedConflict or MicFwPsAspectCompareConflict when neccessary MicFwAbstractPersistenceManagerRdb gt gt refresh persistentObject Refresh the persistent instance variables of persistentObject by loading the associated data from per sistence and comparing the values Signal adequate exceptions in case of inconsistencies The following inconsistencies are signalled Concurrent changes in persistence and current transaction context e Object deleted from persistence CAUTION You must not perform any persistent relevant actions db accesses in the exception handler blocks MicFwPersistenceManager gt gt refresh persistentObject Refresh the persistent instance variables of persistentObject by loading the associated data from per sistence and comparing the values Signal adequate exceptions in case of inconsistencies MicFwAbstractPersistenceManagerRdb gt gt refresh persistentObject with otherObject Refresh the persistent instance variables of persistentObject by comparision with the values of other Object CAUTION otherObject and persistentObject shou
346. me Its current mappings are abstractControl MicFwAbstractControlRequestBroker abstractEvent MicFwAbstractEventRequestBroker abstractCommand MicFwAbstractCommandRequestBroker viewPort MicFwViewPortRequestBroker 6 3 2 1 3 MicFwBrowserMapper maintains the mapping to the framework tools Its interface consists of the inherited methods of plus no additional methods It is called via self micFwBrowser for theBrowserNumber Its current mapping is 1 MicFwLogBrowser 6 3 2 1 4 MicFwGenusMapper maintains the mapping to generic classes Its interface consists of the inherited meth ods of plus Application Framework User s Guide 6 Customizing MA 232 6 3 Substituting Subsystems MYND MicFwGenusMapper gt gt use aResponsibleObject as aCategorieSymbol It is called via self genus for theGenusClassName Its current mappings are domainProcess MicFwGenericDomainProcess command MicFwGenericAbstractCommand 6 3 2 1 5 MicFwinterfaceMapper maintains the mapping to used subsystem interfaces Its interface consists of the inherited methods of plus no additional methods It is called via self micFwInterface for theInterfaceNam Its current mappings are authorization MicFwAuthorizationManager transactionManager a MicFwTransactionManager validation Identity Dictionary 6 3 2 2 An Example of Implementing Generic Behavior Us
347. me would not be changed Also the Domain Object would trigger the event prohibit If the access is in fact authorized the attribute s value will be changed and the event per mit will be triggered by the Domain Object Suppose we want to limit read access to an attribute and return a designated value if access is prohibited This would look like MicPerson authorizeRead name using Date today dayIndex 1 ifProhibitedReturn Read access to the attribute name will be allowed on Sundays In all other cases the string will be returned instead of the person s name For Authorization of perform Aspects in Domain Processes the protocol is somewhat similar the major dif Application Framework User s Guide aA 4 Advanced Programming Reference MYND 4 6 Authorization 177 ference being that now perform access is controlled e authorizePerformUsing aRule e allow execution of all the receiver class Aspects based on the result of evaluating the block or mes sage lt aRule gt e authorizePerform aspect using aRule e allow execution of the receiver class lt aspect gt depending on lt aRule gt Example Suppose we want to control who can commit changes made to a person We ll assume there is a class User with a single instance that understands canChange We ll also assume that editing a person is man aged by a Domain Process called PersonEdit PersonEdit authorizePerform commit using User curr
348. meContents_ accessorMethodContents_ connectionNameSelection odEntryField accessorMethods ction_ displayMethodItem_ VOID_ VOID 3 5 11 1 2 4 displayMethod connectionNameEntryField accessorMethodEntryField not specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ VOID VOID VOID_ 3 5 11 1 2 5 connectionNameSelection displayMethod connectionNameEntryField acces sorMethodEntryField not specified connectionNameContents_ accessorMethodContents_ VOID_ accessorMethodSelection_ VOID VOID VOID_ 3 5 11 1 2 6 connectionNameContents connectionNameSelection displayMethod connection NameEntryField accessorMethodEntryField not specified Application Framework User s Guide aA 3 Programming Reference MYND 3 5 View Parts 115 VOID_ accessorMethodContents_ VOID_ accessorMethodSelection_ VOID_ VOID_ VOID 3 5 11 2 Supported Subaspects e BackgroundColor CgRGBColor e Editable Boolean e Enabled Boolean e ForegroundColor CgRGBColor e Visible Boolean Application Framework User s Guide 3 Programming Reference MA 116 3 5 View Parts 3 5 12 Mic Status Bar Part 3 5 12 1 partName 3 5 12 1 1 Syntax connectionName_ accessorMethod_ The content of this Control is aString If connectionName is omitted or declared as VO
349. me_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ Content of the Control is aMicFwMetaPartCollection If connectionName omitted or declared as VOID_ The Default Process Connection will be used 3 5 35 1 2 Supported Variations 3 5 35 1 2 1 All parts of partName specified connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ 3 5 35 1 2 2 baseConnectionName not specified connectionName_ accessorMethod_ VOID_ baseDefaultProcessName_ 3 5 35 1 2 3 baseConnectionName baseDefaultProcessName not specified connectionName_ accessorMethod_ VOID_ VOID_ 3 5 35 1 2 4 connectionName baseConnectionName baseDefaultProcessName not specified VOID_ accessorMethod_ VOID_ VOID_ 3 5 35 1 2 5 connectionName baseConnectionName not specified VOID_ accessorMethod_ VOID_ baseDefaultProcessName 3 5 35 1 2 6 connectionName accessorMethod baseConnectionName not specified VOID_ VOID_ VOID_ baseDefaultProcessName 3 5 35 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean e ForegroundColor CgRGBColor Visible Boolean vA Application Framework User s Guide 3 Programming Reference N D 3 5 View Parts 141 3 5 36 PM Notebook 3 5 36 1 partName 3 5 36 1 1 Syntax connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ Content of the Control is aMicFwMetaPartColl
350. mework User s Guide MA 280 Appendix A API MYND Answer the current transaction context or nil if none active This is an alternative to MicFwTransactionMan ager global currentContext MicFwDomainProcess gt gt currentChoice Get the last chosen model MicFwTransactionManager gt gt currentContext Return the active context MicFwTransactionManager class gt gt currentContext Return active context or nil MicFwPersistenceManagerOdbc gt gt dataSourceDescription Answer the dataSourceDescription for the receiver MicFwTransactionContext gt gt deactivate If the receiver is the single active context Deactivate the receiver ie no context is active MicFwViewPort gt gt defaultAcceptedOperationsValueOf anAspect Answer the default acceptable actions for the receiver the default no action acceptable actions are valid drop operations Actions enableCopy enableMove enableLink MicFwViewPort gt gt defaultCanCopy aList valueOf aSourceAspect Return the default permit status for a copy operation of the receiver MicFwViewPort gt gt defaultCanLink aList valueOf aSourceAspect Return the default permit status for a link operation of the receiver MicFwViewPort gt gt defaultCanMove aList valueOf aSourceAspect Return the default permit status for a move operation of the receiver MicFwViewPort gt gt defaultCheckedValueOf dispatcherAspect Answer the default checked value for the lt dispatcherAs
351. model ReturnAgeKey Public return a MLS key which informs the reader if the person is over 18 Date today subtractDate self dayOfBirth 365 asFloat gt 18 ifTrue MicMlsKey new value 1 ifFalse MicMlsKey new value 2 These methods ensure that Application Framework receives a object from the model in response to the help text For Framework this special object means that a text has to be retrieved from the MLS system This then represents the actual help text This is only one example for the use of the class This class can be used at various points in order to specifically access data of the MLS system which is not covered by the generic standard response of Application Framework 7 Multi Language Support MLS N D 7 5 Examples 257 vA Application Framework User s Guide 7 6 Usage of Locale Categories CompoundMessage and Com poundsString These Locale Categories are used to display strings which are assembled from static string parts non localized object parts and localized object parts The result can be strings like Date today 10 9 97 or Do you want to delete 2 files In some cases you might want to use plural expressions depending on the value of a parameter Because of this it s possible to decide from the value of a parameter if you want to use part A or B so you can build expressions like one file or 2 files depending on the number of files The general data structure of and is
352. n The same holds for moving instances between relationships Support tables code tables thesauri need a manager i e some object which is responsible for maintain ing the mapping between a single instance and the whole list of available instances There are several approaches for putting this responsibility somewhere but most probably there is a real Manager class giv ing access to the lists Depending on the implementation the hook to get into the manager may be a Con nection i e the Domain Process is responsible for grabbing and accessing the manager via a declared Application Framework User s Guide 1 Concepts MA 32 1 3 Mynd Frameworks Concepts MYND Connection or a Domain Object provides a path to the manager by means of the corresponding Aspect s value an object managed by the support table manager The List Control has to be named accordingly to select the right path to the available list contents Since the processing purpose is to display or set a single Aspect in a Domain Object the selected object is nor mally sent directly to that Domain Object possibly converted automatically by an application dependent type converter for the object s class see OBFW 1 3 6 Domain Process All processing logic and certain aspects of control flow should be placed into Domain Processes The framework class serves as domain class for its own Domain Processes as well as a simple default class in case where no process logic
353. n aConnection MicFwViewPort gt gt startInteractionForAspect anAspect Application Framework User s Guide 4 Advanced Programming Reference et 172 4 4 Viewport MYND MicFwViewPort gt gt stopInteraction aConnection MicFwViewPort gt gt writeAccessRejectedForAspect anAspect vetoValue aPro hibitedModel 4 4 3 7 Overriding Default Behavior The application framework provides a default behavior for some Subaspects If this default behavior is suit able for your application you must not implement the corresponding Subaspect methods to control the behavior of your application If you want to change this default behavior for a specific Subaspect you must reimplement the following methods in the class MicFwViewPort gt gt defaultEditableValueOf aDispatcherAspect MicFwViewPort gt gt defaultEnabledValueOf aDispatcherAspect MicFwViewPort gt gt defaultLateModelAccessValueOf aDispatcherAspect MicFwViewPort gt gt defaultLink aList onto aViewportOrNil valueOf anAspect MicFwViewPort gt gt defaultManipulatorValueOf aDispatcherAspect MicFwViewPort gt gt defaultMove aList onto aViewportOrNil valueOf anAspect MicFwViewPort gt gt defaultProhibitedValueOf aDispatcherAspect MicFwViewPort gt gt defaultProvidedOperationsValueOf anAspect MicFwViewPort gt gt defaultReadableValueOf aDispatcherAspect MicFwViewPort gt gt defaultShowTouchedValueOf anAspect MicFwViewPort gt gt defaultUndefined anAbstractV
354. n Activated x Hon Activated and Hot Editable f Undefined and Not Editable tl Value Not Editable 5 2 2 6 2 About Displays contact information for PMS Micado 5 2 2 7 Toolbar ES Connector WA ST Connector i P fe Dest Connector WAST Connector gt pe 5 2 2 7 1 la Load a session from disc Same as Browser Open session 5 2 2 7 2 led Save current session to disc Same as Browser Save session 5 2 2 7 3 Save all changes via destination connector Same as Browser Save all changes Ctrl S Application Framework User s Guide aA 5 Tools MYND 5 2 Domain Processes Browser 201 5 2 2 7 4 gt Discard all changes Same as Browser Discard all changes Ctrl D 5 2 2 7 5 t Browse new object net Same as Browser Browse new Net Ctrl A 5 2 2 7 6 al Search for a process class in object net Same as Process class Search for a class 5 2 2 7 7 amp l Add a new child process connection Same as Connection Add Child Connection Ctrl C 5 2 2 7 8 Add a new base connection Same as Connection Add Base Connection Ctrl B 5 2 2 7 9 a Remove selected connection Same as Connection Remove Connection Cirl R rs 5 2 2 7 10 _ Make selected base to default base Same as Connection Set as default base 5 2 2 7 11 e Make selected default base to base Same as Connection Set as base 5 2 2 7 12 Find process class of selected model Same as Process class Search for
355. n IPFOCESSES uana T E A E N 321 FATO ENON conusircininisiiriii i ri OAN EEVALON A EN EAO EEES 322 FAA FONO aan T E E T O mexeeesp ces 323 PA Q s LiSts cnbceectieestiee ccc anctickeneeedtiisadelechaanedieectdedvia dated a eaeediiea abe adha i eines 323 FAQ 6 INOLCDOOKS ies ced set cnicsakeFexe chee att citescaacesecitcduah eed ayae peas ie ndunde dase Naa e a iaei aae 323 FAQ 7 TRANSACTIONS cridissi ieu aatend an a a iida e a a a o aa a 323 FAQ S ViOWPOMS seccsieccsocssnehsscettausd extlebepastcedesds hagceasgahgerexasseweaieeceeteasune sp E aa a E 323 Appendix D 6 teh ee ee ee ne er eee ee eee eer eee et 325 12410 1e 18 01 4 A E E EPE E taco A A ES EE E E E 333 LIST OF TaDIGS E E T 335 List Of FIQUICS siiiiittinanncisneni iii in obianai ane 337 dato l asda E E EE E AEE eaten eels dient enantio 341 aA Application Framework User s Guide MYND Table of Contents 9 Application Framework User s Guide MA 10 Table of Contents MYN Documentation overview Who Should Read this Manual What You Should Already Know The Purpose of this manual is to show the concepts development tools and programming techniques used in the Application Framework and is intended to be used mainly by Application developers This man ual describes the necessary base functions in the framework and enhances the developer s practical abili ties and skills For Managers and Project leaders this manual will provide background information needed for use
356. n Process browser The method is used in the Domain Process for placing a instance in this Default Base Connection 7 5 1 2 Create an MLS Context No MLS specific step has yet been taken The purpose of all previous steps has been only to connect to Application Framework The first step is to create a new MLS context in the example application so that data can be stored in the context For this purpose start the MLS Data Editor micFrameworks gt Open MLS data editor A new MLS context is created with the Menu item New context which can be accessed via the context Menu of the MLS contexts list In the following mask the user can define the name of the new context the target application and the Locales which are to be added to this context The most recently created edition of an application is suggested with a standard name In this case the application is and the name is Because we initially intend to add Labels in this example the setting in Choose Locales to be added is cor rect As the view is to be translated into English and German the user only needs to select the two Locales english united kingdom and german germany from the list Create for selected Locales and create a new context with Start creating new context If the new context is now selected in the data editor a new Locale Entity entitled is found under the category Strings If this is selected it can be seen that no key has yet been created in this new Lo
357. n and English and vice versa using the two buttons under Language control The format of the date of birth is determined by the format in the StandardMasterContext as we have not defined a separate format in our new context 7 5 2 Advanced Exercises 7 5 2 1 Externalized Help Text A help text is to be entered for the entry field firstName For this purpose we must initially establish a facility in our new context for enabling help texts to be stored This new Locale Entity must be able to hold data for our two languages and it is created as follows Our new context is selected and the Menu item Add locale entity is reached via the context Menu on the list MLS locale entities When this Menu item has been selected the user is asked which Locale Category he would like to create Help texts are stored ina Locale and the name must end with help text We select the following standard name We select the German and the English Locales When the Locale Category is being created the user is asked whether he would also like to save the data in a csv file in order for instance to permit a simple data interchange process which contains readable non unicode data or in order to send MLS keys to the translator In our example we answer no to the question for creating a csv file and continue The editor then contains a Locale Entity of the category Strings names This Locale Entity is now selected and using the context Menu on
358. n methods see below most of the methods which require re implementa tion according to the necessities of the specific widget have abstract or default implementations in class The methods are 6 2 2 6 1 Instance Methods e Get or set the background color of the widget Get or set the foreground color of the widget Get or set the real View s checked state Get or set the real View s editable state Get or set the real View s enabled state Get or set the real View s visible state Get or set the real View s text This may be a label the first part of the content or anything that can be used as a hint in a textual representation of it e g a browser log etc Get or set value Get or set selection collections e activate Set the focus e childPlatformPanes Retrieve all child controls 6 2 2 6 2 Class Methods implementedEvents e Answers a dictionary with supported real events as keys and Abstract Events as values It is imple mented in and has to be re implemented in subclasses which must map Platform Events to Abstract Events abstractWindowClass Application Framework User s Guide aA 6 Customizing MYND 6 2 Internal Design 227 must be implemented in every Adapter class and returns the class of its Abstract Control 6 2 2 7 Mapping of Platform Events In communication between the models and the user interface events
359. n of this Control is anObject If connectionName is omitted or declared as VOID_ The Default Base Connection will be used 3 5 17 1 2 Supported variations 3 5 17 1 2 1 All parts of partName specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ h accessorMethods ction displayMethodItem connectio hodEntryField Z ameEntryField n accessorMe 3 5 17 1 2 2 connectionNameSelection accessorMethodSelection not specified connectionNameContents_ accessorMethodContents_ VOID VOID_ displayMethodItem_ connectionNameEntryField accessorMethodEntryField_ 3 5 17 1 2 3 connectionNameEntryField accessorMethodEntryField not specified connectionNameContents_ accessorMethodContents_ connectionNameSelection ct accessorMethods ction_ displayMethodItem_ VOID_ VOID_ 3 5 17 1 2 4 displayMethodltem connectionNameEntryField accessorMethodEntryField not specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction VOID VOID VOID_ 3 5 17 1 2 5 connectionNameSelection displayMethodltem connectionNameEntryField acces sorMethodEntryField not specified connectionNameContents_ accessorMethodContents_ VOID_ accessorMethodSelection_ VOID VOID VOID_ 3 5 17 1 2 6 connectionNameContents connectionNameSele
360. n or the name of the widget was incorrectly speci fied Application Framework User s Guide 2 Tutorial PMS MICADO 88 2 4 Quick Tour of Tools 2 5 Connect to models using Non Visual Parts To further facilitate the process of connecting views and models as well as to provide a method of visualiz ing structural elements of an application the Frameworks also extend the VisualAge Composition Editor Let s first look at an example of what this means in practice The example is based on the Fitness Club application that is included as a coded example After that the extended capabilities of the Composition Editor will be explained in detail Sa MicExampleMasterVisualV iew Composition Editor File Edit View Options Tools Help A F ra lemMenu Member Menu Choice Menu Choice2 9 M P defaut SN F 5 NN Delete Q je m mba A were ad A Master club Logon VisFW A 2 e Y logon I Sticky eerie F Nothing selected BEEK shows how the extended Composition Editor helps to visualize important Aspects of an application These are the icon labeled represents a Domain Process in this case the icons labeled n Pel and represent Viewports Process hierarchy the wires between the Viewports of Domain Processes and the master process i indicate a child process r
361. n the Process Classes Hierarchy column 5 2 2 3 5 list of classes Contains a list of all classes that have been found during this session with the Search for a class menu item 5 2 2 4 Submenu Connection Add Child Connection CtreC Add Base Connection Ctrl B Add Multiple Child Conn Ctrl M Remove Connection CtrhA Find Connection Model Find as Child Connection 5 2 2 4 1 Add child connection Ctrl C Adds a child process connection for the Domain Process class currently selected in the column Process Hierarchy The target class is selected from a list of all availabe Domain Process classes 5 2 2 4 2 Add base connection Ctrl B Adds a base connection for the Domain Process class currently selected in the column Process Hierar chy The target class is selected from a list of all availabe Domain Object classes 5 2 2 4 3 Add Multiple Child Conn Ctrl M Adds a multiple child connection for the Domain Process class currently selected in the column Process Hierarchy 5 2 2 4 4 Set as default base Available if a non default base connection is selected in the column Process Hierarchy Selecting causes the selected non default base connection to become the default base connection 5 2 2 4 5 Find connection model Selects in the Process Classes Hierarchy column the class that is referenced by the currently selected connection in the Processes Hierarchy column 5 2 2 4 6 Find as child connection For the currentl
362. n this process has been completed this view is closed and a new context exists in the data editor 7 3 1 1 3 New master context A new Master Context is created as described above the new Master Context is instanced and stored in LocaleManager when the system is next initialized 7 3 1 1 4 Delete context The selected context class is deleted although the Locale Entities belonging to this context are retained These have to be deleted individually elsewhere 7 3 1 1 5 Edit context settings Application Framework User s Guide 7 Multi Language Support MLS MA 248 7 3 The MLS Data Editor MYND Settings for the selected context can be made in the following view Za MicFwMultiLanquageSupportE xample1MlsC ontext1 ojx Locale entities Locales to be connected Locale category Locale name Load all L MicMIsLCDate MicFwMultiLanguageSupportExample1 MlsContexti false MicMIsLCMessages MicFwMultiLanguag eSupp ortExample1MlsContextl false MicMIsLCStrings MicFwhdultiLanguageSupp ortExample1 MisContextl HelpTextifalse MicMIsLCStrings MicFwhultiLanguageSupportExample1MlsContextiLabels false Ta W Add with entire data F Transact data Default locale Master context english united kingdom none Edit standard locales It is possible to define the default Locale which is automatically set whenever the context is instanced In addition the list Locales to be connected contains the Locale Ent
363. nProcessClass gt to our Connector If the Connector contains more than one Domain Process of the the same class use its name lt aSymbol gt to distinguish them Let it be a child of the receiver MicFwDomainProcess gt gt addPresetChoiceConnectionNamed aSymbol Add a preset choice connection to our connector MicFwDomainProcess gt gt addPresetChoiceConnectionNamed aSymbol withContext aContext withSuperContext aSu perContext MicFwDomainProcess gt gt addPresetHierarchyListConnectionNamed aSymbol Add a preset hierarchy list connection to our connector MicFwDomainProcess gt gt addPresetHierarchyListConnectionNamed aSymbol withContext aContext withSuperContext aSuperContext MicFwDomainProcess gt gt addPresetListConnectionNamed aSymbol Add a preset list connection to our connector MicFwDomainProcess gt gt addPresetListConnectionNamed aSymbol withContext aContext withSuperContext aSuper Context Add a preset List Connection to our Connector This Connection will be used from the framework when a internal List Connection is requested for the Aspect lt aSymbol gt lt aContext gt resp lt aSuperContext gt are MLS Contexts If you preset internal List Connections you can access them with methods like connection Named MicFwTransactionContext gt gt allCurrentChanges Answer a Dictionary with all changes on the current level in the receiver The changed objects appear as keys their version containers as values Mic
364. nProcessContext gt gt transactionPolicy aTransactionPol icy MicFwAbstractDomainProcessContext gt gt windowingPolicy MicFwAbstractDomainProcessContext gt gt windowingPolicy aWindowingPolicy 4 3 3 12 Windowing Policy Each process context hold a so called windowing policy This policy is responsible to create a proper view instance for the process Windowing policies can be set for each process instance individually Object MicFwAbstractWindowingPolicy MicFwStandardWindowingPolicy MicFwViewCachingWindowingPolicy 4 3 3 13 MicFwAbstractWindowingPolicy This is the abstract windowing policy class Each process may have one instance MicFwAbstractWindowingPolicy gt gt abstractView MicFwAbstractWindowingPolicy gt gt abstractView anAbstractView MicFwAbstractWindowingPolicy gt gt interceptAbortClose MicFwAbstractWindowingPolicy gt gt interceptClosePlatformView MicFwAbstractWindowingPolicy gt gt interceptCommitClose Application Framework User s Guide aA 4 Advanced Programming Reference MYND 4 3 Domain Process 163 MicFwAbstractWindowingPolicy gt gt interceptOpenPlatformView MicFwAbstractWindowingPolicy gt gt interceptPrepareClose MicFwAbstractWindowingPolicy gt gt modality MicFwAbstractWindowingPolicy gt gt modality aModality MicFwAbstractWindowingPolicy gt gt newPlatformViewFor anAbstractViewClass MicFwAbstractWindowingPolicy gt gt parentView MicFwAbstractWindowingPolicy gt gt parentView anAbst
365. na aas 288 Graphical User Interface eeeeseeeees 25 graphicsPresentation cccceeessesereeees 225 Group BOX sea isistat tessede etnies ioe aebeadebie 140 Group Control ceceeseeseeeceeeeeeeeeens 215 223 RIN esate a eae esdesesetes 25 35 H hard coded Evaluator scccsesseeeees 225 help system ee ceesecscccceceeeseesenseceeeceeseeseens 47 Help TV SXtres vesessnereadcanssieetdanteeeasasseerains 61 244 Hierarchical mode ccssccccssssereeeeeee 204 hook into ApplicationFramework 226 HOt SPOT seee ran r Erns 111 Hover Helpers e a 60 HoverHelp Text cesecccecssscreeseesseees 61 246 I TOO ornent asks 214 implementedEvents scccsssseeeeeeeeee 229 initialize file based system cece 245 initialize library based system 06 245 initializeChildProcessConnections 97 98 151 291 initializedAbstractEvents cccccccc eee 226 initializelnvolvedBaseConnections 81 97 98 ID aenertia 291 INP ULEI TOF scnatectessastuoncastedoretusisinansivedeacutdeand 322 installing scccvsrnseuecaduvdccivapsednesieabiessmsdarssseeraises 21 INSTAN CO ves sececcsscretcescnscecesocsetestensssecuasecteanesss 207 instance variables cc cc ceeeeeeeeeeeeee 207 Insurance Frameworks ccccccccseeeeeeeeeeees 26 INTEPACTIONS cdecheeiitdivcscsieinedietehesniidene 328 interaction behavior eeeeeeeeceeeee
366. nd Application Framework ote rules this process All successful or unsuccessful conversions which the Adapter carries out are written to the Framework Logger at severity level primitive This data can be used to debug the actions of the MLS Adapter in difficult sit uations 7 2 4 Transcript Menu Items The Framework Adapter adds new Menu items to the Transcript Menu They can be used as follows e Open MLS data editor opens an editor which helps to view and edit MLS Data e Multi language tools initialize library based system initializes an MLS storage system based on classes No Files are required in this case e Multi language tools initialize file based system initializes an MLS storage system based on files The pathname is taken from micado mls Multi language tools remove MLS system removes the entire MLS systems and clears all caches Multi language tools convert csv source into the current storage system is used to convert data which is stored in a csv file into the current storage form This can be either a file or a class e Multi language tools convert all library data into a new file based system is used to convert data which is stored in the currently loaded subclasses of MicMIsDATA into file based data During this procedure all old file based data in this path will be deleted because data of a new file based system is written 7 2 5 Extension of the Domain Processes Browser The D
367. ndle a club We will create a Domain Process that manages the view we just defined and that has one child Domain Process for editing the currently selected member 2 3 5 4 1 Class definition The name of the club process should express that the process is the entrance process of the application So we named it master So the class definition looks like this MicFwDomainProcess subclass MicExampleMasterProcess instanceVariableNames classVariableNames poolDictionaries 2 3 5 4 2 Connections This Domain Process will have the following properties a Base Connection named club for an instance of e a Process Connection named for the member editing Domain Process e a Process Connection named which references itself After you saved this definition go to the Domain Processes Browser and define the connections according the figure below Change into default by editing the property Name Make sure you set the default view name to and turn on transaction handling o x Browser Process class Connection Options Rite Ble aj s ol F Pms micaca Process Classes Hierarchy Processes Hierarchy Hame Value GEE Type MAIH_PROCESS MicExampleMemberProcess club Name default Class I MicExampleMasterProcess Viewport lt generic gt MLS context lt none gt MLS supercontext _ lt none gt Default view lt none gt Transaction handling Defined Autos
368. ndler handles transacted accesses false otherwise MicFwNRelationship gt gt transact aBoolean Set the transaction property for the receiver If aBoolean true gt handle accesses transacted MicFwTr1Relationship gt gt transact aBoolean Set the transaction property for the receiver If aBoolean true gt handle accesses transacted MicFwDomainProcess gt gt transactionAborted Called when a user wants to close the corresponding view after the transaction of the receiver process is aborted MicFwDomainProcess gt gt transactionClosed aTransactionCloseMode Called when a user wants to close the corresponding view lt aTransactionCloseMode gt is a boolean which is meant to indicate if an open transaction is to be committed or aborted MicFwDomainProcess gt gt transactionCommitted Called when a user wants to close the corresponding view after the transaction of the receiver process is committed MicFwTransactionContext gt gt transactionLevel Return the active highest transaction level of receiver as Integer MicFwAbstractDomainProcessContext gt gt transactionPolicy Get the transaction policy MicFwDomainProcess gt gt transactionPolicy Return the transaction policy object MicFwDomainProcess gt gt transactionPolicy Return the transaction policy object MicFwAbstractDomainProcessContext gt gt transactionPolicy aTransactionPolicy Application Framework User s Guide MA 308 Appendix A API MYND Set the transa
369. ne Debugger MYND used by the framework If a Subaspect is marked inactive a method written by the user is not used even it might exist In such case you should reset all Framework Caches At the bottom of the view you can inspect the Transaction Context which is used 5 5 1 3 Page MLS The table displays the Locale Entities from the MLS system which may be used to localize data The Debugger displays the data in all Locales which are available This page only contains data if the MLS system is currently loaded into your image 5 5 1 4 Page List contents This page contains basically all the information of the Basic page but for the content Aspect of a List wid get Mainly the page shows the model and its Viewport which are used to get the content of a List 5 5 1 5 Page List Vp The page contains a table as it exists on the Basic Vp page only this time the table contains the models which were touched by the Framework while retrieving the content of the List or its Subaspects 5 5 1 6 Page List items This page displays all the list items and offers additional information about them Each Framework List contains Viewport objects and because of this the tool allows you to inspect the Viewport instance the Viewport class and the model belonging to each Viewport When working with Container Details you can choose the attribute to be displayed in the main item list from the Available attributes list After you have select
370. necessary in the first place to write all Domain Model Accessor methods if the collection holder keeps instance variables for maintaining both the collection and selection Example In order to prepare for some editing and deleting the members of the fitness club shall be displayed in a List box It will be possible to select a specific member which can then be processed by pushing a button To support this scenario the following things must be implemented A List Control named club_members_default_selectedMember_ Please note that the members themselves will be retrieved through the club Connection whereas the selected member will be managed by the Domain Process which is accessible through the default Connection e Accessor methods in the Domain Process In the example you ll see that there is a Connection Names currentWember which holds an instance of The methods are used to convert between a single member and a collection holding that single member as List Controls always require a collection for their selection there are List Controls which can have multiple selected items vA Application Framework User s Guide 4 Advanced Programming Reference N D 4 9 Collections 189 4 10 List Connections Each single instance in the collection to be displayed must be a Domain Object For administration of these Domain Objects the Model View Connector internally maintains a List Connection instance of the frame
371. nected to Domain Processes are displayed hierarchical and shows their parent child relations as they exists at this point of time e You can inspect the model instance If the model is a Domain Process you can open the Domain Pro cesses Browser on it If the process has a transaction you can browse the Transaction Context instance e Connector e The Connector of the model this widget is connected to e The List contains all process and Base Connections The default process and Default Base Connection are always the first Connections of its group e The arrow displays the Connection of the model the widget is connected to e You can inspect the selected model Connection object e Type If the widget is an entry field and you have set a type in the object net browser you will see it displayed here e You can change the type in the object net browser if you like 5 5 1 2 Page Basic Vp You get a table of all the objects which were touched by the Framework while retrieving the result for the basic Aspect or its Subaspects If you want to understand why some update mechanism didn t work you should first check if the Frame work registered all your dependent models You can inspect the selected Domain Object and browse the object net of its class The two Lists active and inactive display the user implemented Subaspect methods which are currently Application Framework User s Guide 5 Tools MA 212 5 5 Onli
372. nection information about the Aspects of the view appears in the List below In the left column below the name Control is listed This class is the abstract class of the framework which observes the real Widget The real Widget appears in the column Pane the platform widget in the OS Control column The assignment of a widget to a Domain Process takes place through the defined accessor name for the widgets in the GUI Builder Linked to the Domain Object you will find the widgets and to which the mes sages missing method BaseObject DemoInitBase gt gt listLabel missing method BaseObject DemoInitBase gt gt name were referred in the Framework Logger This error is caused by the incorrect assignment of the widget through the naming convention If you exit the entry field a walkback will be initiated with the mes sage a method named lt name gt was missed in the class DemoInitBase The widget must be assigned to the accessor which is located in the Viewport of the Domain Object This Domain Object is linked to the Connection and not to the as it is presumed when entering the widget name and leaving out the Connection Name The correct widget name must be The entry field must also be attached to the Connection The read accessor method is defined in the Domain Object and the write accessor method is defined in the corresponding Viewport The widget name for the entry field must also have the Connection Name a
373. nees 130 3 5 25 Container Details GOI s ccicicie soceedenics cvctetices seabecinidbetumedcinscusiciisies nelnudsehle wayewateted a a aiia d 131 3 0 262 POPUP MON wxtecenese2 tcdcapsedcecodpeae T legueesscuteencweues useless aeqpanecdai T 132 9 5 27 MENUS CH OICC isenana E E vacicdecuens a a deta dutiony a A a a a a a a 133 3 528 MENU Gasca dE eno a a a a a E a A E 134 ooe MON TOGO racios i E ONE NEA NEO EOE 135 3 95 30 MIC FW TOOlbar Vie Woss ma E a EE E EEA 136 3 5 31 Mic Fw Framed Toolbar View arrire EE EENE EA a AE NEES N 137 Ee E PAINO OW AAEE EA E AE AE E A E A AA E AER AA EA 138 3 039 FOl Miesen asenaan aada a a E E aa aa a aaa aaa 139 ae OUD DOK onan r a A E E E TT E A T E encpeceuarten 140 9 5 95 S6rOled WINGOW sicceccseececeseancdvcesla vetcbunien iaia E aa a a iE A E aa a aA Eaa aiat 141 2o90 PM NOO DOOK T a AA E A EAEE OESE 142 3 5 37 Windows NOtebOOK scieiccctsicnceccssncncctesiaccdees sameadedaansbcdauesnancdatky sbemectiiessampudvunes AE a ACE AEAEE 143 320962 NOTCDOOK Fago sanani E T O 144 Advanced Programming Reference s ssssssssssnnnereeeeeeerrrrrnrrrrrrrrrrrerrrrenrrnr ennn 145 4 1 Introduction csencces ent a irsocs es hombaou ated oatcuinctantnemebeoua en cbimnenten ay aad nrinn rtnn kinena nnna na nanan ne ananena nenn 147 4 2 Domain Object ssitadinnoidecaicickenseubiutadebtheishsntecnsecidetdishei sie hbadeaedal cob seeeieadetazetendadeacototendas 148 4 2 1 Overview Class Methods ccccecccccecccceeeeeecee
374. net stringChanged is triggered if a key stroke occurs The user has the chance to activate this event if needed So it should be mapped helpRequest is needed for the help system The user can activate help for every attribute in the Viewport 6 2 3 Feature Objects The Aspect Feature is like a Viewport counterpart to the Abstract Value Aspect features are owned by each Viewport class for each Aspect the Viewport may be asked by a view component The Aspect Fea ture keeps the information how to retrieve its Aspect and Subaspect values and how to set the Aspect value Aspect features are generated automatically using reflectivity but as a mean of optimization View port subclasses can create specific hard coded Aspect Feature objects The transmission of commands is handled in a similar way by the Viewport using Action Feature objects 6 2 4 Exception Handling To allow an easy way of handling conditions that may cause the framework not to operate correctly due to developer s mistakes missing Adapters and other circumstances the framework signals specialized exceptions that provide a default behavior for them To override the behavior of exceptions please refer to the chapter explaining the implementation and use of the Exception Handling System Application Framework flags the following exceptions e MicFwinvalidModel During development this exception signals an invalid definition of a Domain Object class as an involved Domain Object
375. ng If connectionName is omitted or declared as VOID_ The Default Base Connection will be used 3 5 8 1 2 Supported variations 3 5 8 1 2 1 All parts of partName specified connectionName_ accessorMethod_ 3 5 8 1 2 2 connectionName not specified VOID_ accessorMethod_ 3 5 8 2 Supported Subaspects e BackgroundColor CgRGBColor e Editable Boolean e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide 3 Programming Reference as 112 3 5 View Parts MYN D 3 5 9 Multi line Edit 3 5 9 1 partName 3 5 9 1 1 Syntax connectionName_ accessorMethod_ The content of this Control is aString If connectionName is omitted or declared as VOID_ The Default Base Connection will be used 3 5 9 1 2 Supported variations 3 5 9 1 2 1 All parts of partName specified connectionName_ accessorMethod_ 3 5 9 1 2 2 connectionName not specified VOID_ accessorMethod_ 3 5 9 2 Supported Subaspects e BackgroundColor CgRGBColor e Editable Boolean e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide aA 3 Programming Reference 3 5 View Parts 113 3 5 10 Label 3 5 10 1 partName 3 5 10 1 1 Syntax connectionName_ accessorMethod_ The content of this Control is aString If connectionName is omitted or declared as VOID_ The Default Base Connection will be used 3 5 10 1 2 Supported variations
376. ng Localized Data The MLS editor is a tool which can be used for maintaining the externalised data in a simple manner An export import option for CSV files Comma Separated Values enables the data to be interchanged with external parties for instance translators by means of spreadsheet programs In order to be able to work with the micado MLS it must first be initialized The configuration map micAp plication Service Multi language must be loaded in order to do this If you want to see the initialization results in the Transcript you should set the commentProgress flag to true Application Framework User s Guide 7 Multi Language Support MLS et s 238 7 1 Language Support Base System MYND MicMlsSystemInitializer commentProgress true Now you can read off the status of the initialization in the transcript along with any error messages which have been produced 7 1 2 8 File Based Initialization In order to store the localized data in files the file based initialization procedure must be carried out You need a text file called mls mls in your VA directory which contains the path to your mls directory e g c mls The mls directory must contain a subdirectory called Locale In this directory c mls locale in this case the MLS system will then store its data You can now initialize and create the system from the Frameworks Transcript Menu or by executing the fol lowing code in a workspace MicMlsSyst
377. ng a Connector the framework dynamically creates an instance of the proper Viewport class for each connected Domain Object or process as well as for each element of a List Connection The proper Viewport class is provided by a Broker which detects it by the following default algorithm For all Viewport classes derived from check the answer of class method portName whether or not it is the class name of the Domain Model or process If a class can be found use it other Application Framework User s Guide 1 Concepts ew 34 1 3 Mynd Frameworks Concepts MYND wise choose the generic one See the rules in the Viewport Request Broker capture Normally you define in domain processes browser the connection between a domain model and a view port But you can register a viewport class eg for a list item in the Framework simply by implementing the portName class method as shown in the following example The class should be filtered by a Viewport class Create List Viewport page 66 The portName method established the relation ship between them MicExampleClubMemberAsListItemViewPort class gt gt portName MicExampleClubMember 1 3 9 Connecting Objects to Views One of the main purposes of the Application Framework is interfacing Domain Objects and Domain Pro cesses to the truly event driven outside world This is most commonly represented by Graphical User Interfaces displaying views for end user inte
378. ng is similar to that for visibility defaultEnabledValueOf dispatcherAspect we want to enable controls only when the user is authorized to perform the associated actions super defaultEnabledValueOf dispatcherAspect and self model permitsPerformAccessTo dispatcherAspect Now we can start the application again using the old workspace 2 3 8 Modality Define transaction Manage child processes Enable authorization Overriding Pereu behavior Define modality Modality is defined as the dis allowance for the user to switch from the current view to another window A modal view requires input from the user before the application will continue A non modal view will remain on the screen but will allow continuation of work in other windows Views will be started as non modal views by default The modality state can be refined as SemiModal Other applications can be started or activated restric tions apply only to the parent of the current view e ApplicationModal Other applications can be started or activated restric tions apply only to views of the current application e SystemModal No other applications can be started or activated Views can be started as modal views by implementing the class method in your Domain Process This method has the following constants as possible return values e MicFwSystemModal e MicFwFullApplicationModal e MicFwPrimaryApplicationModal Application Frame
379. ng new methods can be used to limit the maximum number of searches when a selection is made in a tree MicFwViewPort gt gt defaultMaxSearchStepsValueOf dispatcherAspect SESE EE lass gt gt isExecAuthorizationActive lass gt gt isExecValidationActive aaadaaqaa UserViewPort gt gt lt aspect gt MaxSearchSteps In the previous Framework version making a selection in a recursive net could result in a very large or infi nite search Release 3 4 Version 1 1 1 Application Framework General e New Debugging Tool e New Subaspect called Manipulator The Manipulator is an object intended for communicating informa Application Framework User s Guide ew s 18 Release Notes MYND tion from within an application s model to a view Information contained in the Manipulator will be used by the Adapter of the view Support of Windowing policy classes in order to meet special needs e g creation of complex views in background removal of all Cached Views when the application is closed Support of Cached Views as standard application of Windowing policies Drag amp Drop support is now available for Visual Age for Smalltalk V4 x Dynamic controls are supported No write access to models or Connections while a traced read is performed Informing processes of select deselect events on Notebook Pages Some internal fixes for the hierarchy list dynamic fo
380. nitialized by the application 4 4 3 10 Direct View Manipulation through Manipulators A manipulator is an object intended for communicating information from within an application s model to a view Information contained in the manipulator will be used by the Adapter of the view The manipulator itself is a Subaspect of the model just like enabled and visible Since the manipulator is being evaluated in the Adapter with the Adapter itself being passed to it as a parameter it can be used for influencing Aspects of the view not connected to the Framework This means that the manipulator has to contain all the necessary logic for providing behavior in the intent of the application An instance of a manipulator will be evaluated only once before it is discarded This means that for exam ple for every update a new instance of the manipulator has to be created Valid Manipulators are e OneArgumentBlocks the argument is the Adapter e DirectedMessages with one parameter the argument is the Adapter an instance of a subclass of API Example Setting the font size of Label connected to the Aspect personName PersonViewPort gt gt personNameManipulator L adapter adapter setFontSizeTo 20 In this case the Adapter has to implement a method Accessing the Adapter s window from within the Manipulator should be avoided Application Framework User s Guide 4 Advanced Programming Reference MA 174 4 4 Viewport MYND
381. nnection a newClaim Connection COnAOmMZzZZ R createClaim Connection Claim Creation 1 3 7 2 Attaching Several Domain Processes In larger applications especially when using complex views like Notebooks with some pages offering vari ous functions to the user it is often advisable to separate the process logic into several Domain Pro cesses Using this design approach the resulting models normally are much smaller and probably easier to understand and maintain and more reusable Moreover there is an additional relationship between Domain Processes the parent child relationship supported by the framework in a natural way This makes it often easier to implement dependence between models and correlated behavior e g starting and closing the child process when the main parent process is started or closed respectively e to use a Domain Process in conjunction with more than one Model View Connector thus serving more than one view with some of its functionality In the insurance example sketched in the previous sections it may be possible to implement a customer edit Domain Process which can either operate standing alone or be started as a child process of the claim Application Framework User s Guide aA 1 Concepts MYND 1 3 Mynd Frameworks Concepts 33 request claim Cisim Fustomeie Customer customer Wew Connection Port jeditCusitom er Edit editCustomer Connecti
382. nnections are added It may be reimplemented to prepare the Base Model Connections with their base models MicFwDomainObject class gt gt initializeValidation Class method that sends all validateWrite using messages for all instance variables of the class that should be validated MicFwModelObject class gt gt initializeValidationTable Create a new validation table for the receiver This may be reimplemented It is called during initialization of the class The validation table must be filled with associations between aspects Symbols and valida tion rules Block or Message that return a boolean MicFwDomainProcess gt gt innerAbortTransaction Aborts a transaction without any further considerations MicFwDomainProcess gt gt innerCommitTransaction Commits a transaction without any further considerations MicFwDomainProcess gt gt innerStartTransaction Starts a transaction without any further considerations MicFwPersistenceManager gt gt insertObject persistentObject Insert the persistent data associated with lt persistentObject gt into the database For use outside of persis tence contexts This method does not check the dependency lattice and thus depends on the user to make sure that objects are stored in the right order MicFwPersistenceManagerRdb gt gt insertObject persistentObject Insert the persistent data associated with lt persistentObject gt into the database For use outside of persis tence contexts
383. not be copied However if the target Locale Entity has all Locales the copied keys for these Locales are created with empty contents This is necessary because a key must always exist for all Locales of a Locale Entity It is not necessary to enter data for all Locales but a key exists either for all Locales or for no Locales 7 3 1 1 9 5 Insert keys from view Data together with their Aspect already entered in a view can be inserted as keys into the selected Locale Entity It s assumed that the Aspect name follows Application Framework naming convention Depending on the Locale Category only those widget Aspects for which it is normally meaningful to enter MLS Data in such a category are entered as keys These data may have to be processed further but rep resent a good starting point 7 3 1 1 10 Values of the Chosen Key This list displays the MLS Data which have been entered for the selected key These data can be either strings or formats The Menu items 7 3 1 1 10 1 Edit format Application Framework User s Guide 7 Multi Language Support MLS MA 250 7 3 The MLS Data Editor MYND This Menu item is accessible only for those Locales which include formats An exception in this respect are accelerator keys which end with ACC An editor also exists for this case In this case the system opens a mask in which the information for the format can be entered With accept changes the format is copied to the selected loca
384. notherObject Compare the value equivalence of two objects Answer true if equal false otherwise This implementation uses low level read operations on the objects i e instVarNamed and thus bypasses the transaction mechanism The state compared is the one that existed when the objects were loaded MicFwPersistentObject gt gt persistenceCompareTo loadedObject Application Framework User s Guide MA 300 Appendix A API MYND Compare the receiver to lt loadedObject gt which was just loaded from the persistence medium and deter mined to be of the same identity as the receiver If the objects are different signal a MicFwPsCompare Conflict MicFwPersistentObject gt gt persistenceCopyFrom loadedObject Copy all persistence relevant data from lt loadedObject gt which was just loaded from the persistence medium and determined to be of the same identity as the receiver but different persistent data Copy all relevant data into the receiver The default implementation lets the presistence manager handle the job MicFwAbstractPersistenceManagerRdb gt gt persistenceCopyTo oneObject from anotherObject Copy the persistent data from lt anotherObject gt to lt oneObject gt The copy is done using basic accessors and thus affects the basic state of the object copied to Any changes inside the current transaction are still kept and will be commited if not discarded This method only needs to be reimplemented if any persistent object th
385. ns Browser for monitoring the user transactions during the ongoing application the Object Net Browser or Object Net Explorer for declaring the object net work and the Framework Logger for evaluating the past actions triggered by the Framework 1 4 5 Interfaces In addition to the seamless link to Mynd Persistence Framework and the open interfaces to subsystems such as authorization and validation separate Adapters can also be created to interface external products Brokers are inserted at all central management points within Application Framework for special cases or company specific extensions these can be used for replacing entire subsystems of the Framework by cus tomized solutions Application Framework User s Guide 1 Concepts MA 42 1 4 Mynd Frameworks Architecture MYND 1 4 6 Services Services are designed in a plug in manner They only have to be present if they are needed You may add the appropriate services step by step during the progress of your project Refer to the appropriate chapters in this manual for a detailed description of available services like Authorization Validation or Multi Lan guage Support 1 4 7 Interaction Adapter Further interaction Adapters in addition to the standard user interface of OS 2 and Windows NT 95 are implemented and can easily be used by the developer without any detailed knowledge These include the following Drag amp Drop protocol e Creating Menus Notebook Pages Forms
386. ns to person list Or you reimplement the default behavior which highlights every object if some object s are dragged over defaultShowTouchedValueOf anAspect true by default Application Framework User s Guide aA 4 Advanced Programming Reference MYND 4 12 Drag amp Drop 193 Application Framework User s Guide 4 Advanced Programming Reference 194 4 12 Drag amp Drop ons M YN D Tools Application Framework User s Guide 5 Tools 195 196 Application Framework User s Guide 5 Tools ots M YN D 5 1 Overview This section provides detailed information about the following Application Framework tools e The Domain Processes Browser provides complete functionality for working with domain processes e The Connectors Browser provides static and dynamic information for any existing connections Such information is important for analysis and debugging The Framework Logger can log any types of messages and thus aid in debugging The Online Debugger provides detailed information for debugging The Visual Age Composition Editor is not an Application Framwork tool however how the CE is used to enter connection information for parts is described The following tools are not actually part of the Application Framework however they are used quite often when working with Application Framework tools The Object Model Browser supports analysis and modification of object models
387. ntent of this Control is aCollection The selection of this Control is aCollection If connectionName is omitted or declared as VOID_ The Default Base Connection will be used 3 5 22 1 2 Supported variations 3 5 22 1 2 1 All parts of partName specified connectionNameContents_ accessorMethodContents_ connectionNameSelection accessorMethodSelection_ displayMethodItem_ 3 5 22 1 2 2 displayMethod not specified connectionNameContents_ accessorMethodContents_ connectionNameSelection accessorMethods ction_ VOID_ 3 5 22 1 2 3 connectionNameContents displayMethod not specified VOID accessorMethodContents_ connectionNameSelection accessorMethods ction_ VOID_ 3 5 22 1 2 4 connectionNameContents connectionNameSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ accessorMethodSelection_ VOID 3 5 22 1 2 5 connectionNameContents connectionNameSelection accessorMethodSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ VOID VOID 3 5 22 2 Supported Subaspects e BackgroundColor CgRGBColor e Editable Boolean e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide 3 Programming Reference MA 128 3 5 View Parts 3 5 23 Container Details Tree 3 5 23 1 partName 3 5 23 1 1 Syntax connectionNameContents_ accesso
388. ntentAspectOfAGroupControl gt Child PaneConnectionMode defaultChildPaneCon nectionModeValueOf anAspect Services MicFwViewPort canStartinteractionForAspect anAspect Services MicFwViewPort childViewPortBaseClass Services MicFwViewPort contextAtConnectionNamed aSymbol Application Framework User s Guide 4 Advanced Programming Reference 168 4 4 Viewport ons M YN D Type Implementor Message Services MicFwViewPort converter Services MicFwViewPort deferUpdatelnAllViewsWhile aBlock Services MicFwViewPort deferViewUpdateWhile aBlock Services MicFwViewPort enterlInteractionForAspect anAspect coming FromAspect lastAspect of lastViewPort Services MicFwViewPort getLocaleNamed name ofType type fromCon textAtConnectionNamed aSymbol Services MicFwViewPort isInterestedInChangesOf anAspect Services MicFwViewPort isInterestedInUpdatesOf anAspect Services MicFwViewPort itemViewPortBaseClassForAspect anAspect Services MicFwViewPort leavelnteractionForAspect anAspect going ToAspect nextAspect of nextViewPort Services MicFwViewPort localize aLocale MLS Services MicFwViewPort localizeAllConnectionsTo aLocale Services MicFwViewPort localizeConnectionNamed aString to aLocale Services MicFwViewPort resolveKey aMicMlsKey forLocale aLocale Services MicFwViewPort returnContextNamed aContextClassSymbol Services MicFwViewPort readAccessRejecte
389. ntrol as argument CAU TION This feature is still under development so API may change MicFwModelObject class gt gt writeDuringReadignored Answer if changes should be ignored during a traced read MicFwDomainProcess gt gt writeModelAtConnection aSymbol value aModel Write lt aModel gt into the Connection named lt aSymbol gt MicFwPersistenceContext gt gt writePersistentChanges Attempt to commit the current transaction level Let all interested parties prepare for the commit if neces sary aboutToCommit If the method answers true proceed Go to the next lower transaction level Answer the new transaction level aA Application Framework User s Guide MYND Appendix A API 311 Application Framework User s Guide MA 312 Appendix A API MYN ote D Appendix B Trouble Shooting Guide Application Framework User s Guide MA 314 Appendix B Trouble Shooting Guide MYN This section recommends trouble shooting approaches to solving common problems when using the Frameworks TS 1 Application TS 1 1 Prerequisite that want to assign to an application is not available from the list of prerequisites The required configuration map must be loaded For example in order to assign MicFwPersistenceOdbc as a prerequisite for an application the configuration map micPersistenceOdbc Runtime and micPersis tenceOdbc Development must be loaded TS 2 DB2 TS 2 1 DB2 hangs up when trying to display the Sample Cont
390. nu The Application Framework offers dynamic support for standard Menus and item Menus Basically every Menu is connected using the appropriate GUI tool to e g a container or a Menu bar In order to be able to control a Menu dynamically i e to determine the current Menu items the Menu must be connected to a Connector This is done by using a two part protocol accessed model_accessor protocol_ lt accessed model gt Connection Name where the Menu is connected lt accessor protocol gt protocol for accessing the Menu item list The Menu is connected via the Viewport implementing the lt accessor protocol gt in the process itself will not show the desired results This method is called at least once the first time the Menu is accessed Depending on the model which is affected by that call the method will be called everytime one of the affected models changes The method must return an MicFwMetaPartCollection which consists of objects where can be any of e MicFwMetaCommand e An instance of this class will hold the definition for a Menu item The instance variables to be set are e accessor This is the accessor for the command method within the respective process or viewport e label This is the string to be displayed as the Menu item label mnemonic Is the underlined character in the menu label which allows the menu action to be per formed e accelerator Defineds the Shortcut to perform the menu action comman
391. o inspect the Framework structure while your application is running and allows you to inspect otherwise invisible information To start the online debugger select from the Transcript menu micFrameworks gt Open online debugger In the online debugger s main menu select Hover manager on Go with the mouse cursor over the witget that you interested and press the scroll button on the keyport After the blink of the cursor press the scroll button Now you can inspect all interested things ot these widget The Online Debugger always works on a single widget and collects all important information available for it The tool has 7 notebook pages which may contain or may not contain information depending on the widget you inspect All non List widgets have information on the first three pages 5 5 1 Online debugger pages 5 5 1 1 Page Basic The basic page contains information about the Domain Object and its Viewport the widget is connected to e ViewPort accessor name The Aspect name the Framework uses to get the content of the widget or the method which is called for a button This name is defined by the widget accessor name entered inside the composition editor e You can inspect the accessor Object used by the Framework e ViewPort e The Viewport which is used for the model this widget is connected to e You can inspect the Viewport class and it currently used instance Model The Domain Object or process the widget is con
392. oProcess Process MicFwViewPort DemoProcess CONN List MicFw view Port MicFiw Pseudo ListModel ae Base MicFw vViewPort DemolnitBase conn Base Mic DemoBase J The Connectors Browser is started in the Menu micFrameworks using the Menu item Browse View Connectors The Connectors Browser has two drop down Menus In the Connectors Menu you can update the content of the browser The MLS contexts Menu is only relevant when using the MLS system The opened Connector appears in the left List with the name DemoView the class name of the view In the right List the Connections are displayed along with information on the models connected These Connec tions are the ones defined in the Domain Processes Browser In the List below information regarding the widgets appears After running the example appears in the Connector column in the left List After selecting the entry the Connections which have been defined in this Connector will appear in the right List with its mod Application Framework User s Guide 2 Tutorial PMS MICADO ee 2 4 Quick Tour of Tools 83 els The type of the models appears in the column Type e One of this Connections is the Default Process Connection as it was pre defined in the Domain Pro cesses Browser The corresponding model displayed in the most right column has no user defined Viewport Thus the name of the Viewport class is which can be seen in the Viewport column This Viewport was defin
393. oView Parttype lt Label gt Partname Label lt name gt conn_nameLabel_ Label lt list gt listLabel_ TextEntryField name_ Listbox conn_listEntries_conn_listEntry_ Button lt ok gt commitAndCloseProcess Button lt abort gt abortClose_ The classes and classes and as a subclass of In order to create the dependency of the class are implemented as subclasses of the as subclasses of and the class to its Domain Object the class method is implemented with the name of the corresponding Domain Object DemoViewPort gt gt portName DemoBaseObject Se DemoView Composition Editor File Edit View Options Tools Help 1 olx Q gt aja E list name LOO o yO a aon initistEntries_conn_listEntty_ selected 2 4 2 2 Declaring Variables and Typing With the Object Net Browser you can declare variables of Domain Object and Domain Process classes A Domain Object is referred to as an instance of a subclass of are instances of subclasses of The Object Net Browser is activated using the Menu micFrameworks Browse Object Net of the System Transcript In the appearing dialog you can filter the list of Domain Object and Domain Process classes If you accept the wildcard all Domain Object classes and Domain Process classes will be shown in the foll
394. odel and send send editting A model holds the editting message message application specific status F and defines the behavior or the object In the Object Oriented community the concept of a Model View Controller MVC is well known and broadly accepted The MVC architecture is designed to provide strict decoupling of the user interface from the model domain Aspects control over the flow of messages between the Graphical User Interface and the model domain e multiple views external to the business model An application being structured this way shows some obvious advantages the responsibilities of objects are well defined and separated from each other resulting in a higher level of object reusability Domain and business models can be used in different applications due to their independence from any view spe cific aspects Mynd s Application Framework is targeted at providing a powerful solution to application developers who want to implement systems using the MVC strategy 1 3 2 Program Structure Systems developed with the Application Framework follow certain architectural concepts by using and refining some given classes to implement domain specific processing logic The following different approaches may be taken Dialog oriented The application is thought of as sequences of windows and dialogs controlled by an interactive user e Data driven similar to the Entity Relationship modeling approach the static struc
395. odel true or false return should be displayed e Model internal data e textual model defaults e g Default content of variable which contains a string of some kind e is static and can be translated e The model itself needs this data to set its default In this case it is a dynamic default string e Dynamic strings with no editing e Data which is from the model e direct indirect textual model contents via external key parameter e g dynamic help text e The key part is static and can be translated An error message xxx File yyy not found must be displayed e Dynamic strings with editing e Data which is from the model e direct textual model contents e g text entry Combo Box List e ls non static and can t be translated and the model must offer Locale information e g code page of original data to display the data in a correct way Information might be lost depending on the storage model see storage model e formatted non textual Date Time objects model contents e g text entry Combo Box List ls non static and can be translated An object must be displayed in a specific format e Appearance of model information e Data related to a model e logical information e g sorting order in a List e The order is static and can be translated e Model information is formatted in some way 7 2 2 2 Storage Storage of non translatable model data is another problem With a storage model for data which can t be translated
396. ods to enable Drag amp Drop for various models defaultAcceptedOperationsValueOf anAspect Answer the default acceptable operations for the receiver The default is no operations MicFwOperations enableNone defaultProvidedOperationsValueOf anAspect Answer the default operations could be started from the receiver Application Framework User s Guide 4 Advanced Programming Reference MA 192 4 12 Drag amp Drop MYND MicFwOperations enableNone The default operations will be set to no operations if we don t specify This means Drag amp Drop is disabled by default 4 12 2 2 Dynamic Permit Deny of Operations If a Drag amp Drop session is started the involved models will be asked each time necessary if the current operation is permitted or not To control this behavior one must implement the following methods within the involved viewports The protocols tested in this order After the first protocol with return a value not equal nil the test ended lt aSourceAspect gt Can lt anOperation gt lt aTargetAspect gt aListOfViewPorts true false lt aSourceAspect gt Can lt anOperation gt aListOfViewPorts true false defaultCan lt anOperation gt aListOfViewPorts valueOf anAspect false Example personsCanCopyPersonList aListOfDraggedViewPorts aListOfDraggedViewPorts size lt 4 Copying from persons to personlist is allowed if we only drag less than 4 viewports of persons If
397. of CENTER BEGINNING and END Example MicFwMetaAspect new accessorString defaultProcess aspect title Aspect positionHint 1 horizontalAlignment CENTER columnWidth 200 yourself 3 Container details column 2 default methods for highly dynamic view The container details column now supports two special default methods which can be used to implement a highly dynamic container details view defaultColumnAttributeNameValueOf anAspect Get the attribute to be displayed depending on the aspect name of the column defaultLabelValueOf anAspect Get the column label to be used depending on the aspect name of the column 4 Connectors Browser partName no longer dispayed In the Connectors Browser in the column paneAccessor The widget partName is no longer displayed the paneAccessor will still be displayed partName is no longer displayed because the partName does not always correspond to the Framework accessor 5 Connectors Browser New menu item Clean up Connectors The Connectors Browser has a new menu item Clean up Connectors Selecting this menu item will cause non existent connectors to be deleted from the Connectors Browser dialog connectors can become non existent for example after a view is closed while using the debugger in the development image etc 6 MicFwModelObject class methods in category overwrite optional The following methods a
398. of an M lt gt N relationship would be the relationship between Person source and Address tar get Person instance variable addresses would reference M cardinality min lt M lt cardinality max Address objects Address instance variable persons would reference N cardinality min lt N lt cardinality max Person objects including the current Person object Mapper To maintain registration of loosely coupled elements within the Framework Mappers are used to set get and remove associations between unique constant names and their corresponding classes which them selves may change or may be reimplemented in your project Mappers are implemented as singletons and can be reached through an easy to use interface as they extend Object with one method per Mapper MicFwTransactionContext Model View Connector Is the object that holds the child process and Base Connections for one process Model View Controller The MVC concept of a Model View Controller defines an architecture intended to yield a strict decoupling of Domain Model Aspects flow control and external views mostly displayed graphically for user interaction Nested transaction levels The transaction levels in a context are nested if more than 1 level exists OBF Object Behavior Framework OBF is a library of classes that when added to your Smalltalk development environment provides a Framework for defining the requirements and restrictions for the behavior of objects
399. of the receiver and all its child processes and begin a new transaction for the receiver and all its child processes MicFwDomainProcess gt gt commitAndBeginAlone Commit the transaction of the receiver and all its child processes and begin a new transaction for the receiver only MicFwDomainProcess gt gt commitAndBeginTouched Commit the transaction of the receiver and all its child processes and begin a new transaction for the receiver and all its child processes which have ever opened a transaction level MicFwDomainProcess gt gt commitAndClose Obsolete Use commitAndCloseProcess MicFwDomainProcess gt gt commitAndCloseProcess Commit the transaction and close the receiver and its associated view If a child process wants to stay open with the parent but can t commit and close itselfs do not not commit and do not close the receiver MicFwDomainProcess gt gt commitAndCloseView Same as commitAndCloseProcess MicFwAbstractPersistenceManagerRdb gt gt commitDatabaseTransaction Commit any pending database transaction Answer true if successful Signal an exception or answer false otherwise Application Framework User s Guide MA 278 Appendix A API MYND MicFwPersistenceManagerRdb gt gt commitDatabaseTransaction Commit any pending database transaction Answer true if successful Signal an exception or answer false otherwise MicFwPersistenceContext gt gt commitimageTransaction Commit the changes of
400. ol This additional set ting is the selector used for obtaining a printable representation of the objects displayed in the List The default value used if nothing is entered in this field is 5 6 1 3 Additional Text Aspect Settings With Controls like Combo Box or Spin Button you can connect the text editor part to a model e The is like a path to the corresponding model and The is an Action or an Attribute at this model e The has the same task as the 3 name part of the name convention of a List Control Application Framework User s Guide y 5 Tools MA 214 5 6 VA Composition Editor MYND The corresponds to the 4 name part of the name convention of a List Control 5 6 1 4 Additional Group Aspect Settings For grouping Controls Group Box Notebook Page Form you can connect set two additional settings The which replace the Default Base Connection for child parts of the group control where the Connection setting is not set e The replace the Connector of itself and its child controls by the Connector of a child process of the origin Connector To do this you set the child Process Connection name here The Drop down List labeled Connection allows you to select a Connection from all the available Connec tions in the context of the part i e from those that can be reached from the Domain Process associated with the domain manager part on the canvas The Drop down List labeled Aspect allows you to choose
401. omain Processes Browser is the location where a developer adds an MLS Context to a Model Con nection When defining a Model Connection inside the Domain Processes Browser the developer can choose from a list of MLS Contexts This list contains all subclasses of Choosing an MLS Context for a Model Connection means creating a new instance of the MLS Context class inside this Model Connection Each instance can be localized independently from one Locale to another If the developer chooses no MLS Context for a Model Connection this doesn t mean that the Model Connection will not contain any MLS Context In this case a MLS Context which belongs to the Model Connection of the default Domain Pro cess or the default Domain Process of the Connector of the parent process of the default Domain Process will be filled in To undo a situation in which the Model Connection gets its own MLS Context instance edit the Model Con nection and choose none from the list The Model Connection is then assigned an MLS Context higher up in the hierarchy 7 2 6 Extension of the Connectors Browser While testing an application a developer can look at the MLS Context of a Model Connection inside the Connectors Browser After selecting a Model Connection the user user can view an MLS Context at dif ferent levels e View mls context inspects the context object e View mls Locale Entities inspects a collection of all Locale Entities which are connected to the MIs
402. omputerDefaults which has the Locale specified by aGermanLocaleDescription aMicMlsKey value 123456 78 ocaleType MicMlsLocaleNumeric ocaleName LocaleNumerics formatKey modelNumberFloat ocalizeFor anEnglishLocaleDescription Application Framework User s Guide 7 Multi Language Support MLS aA 246 7 2 MLS and Application Framework MYND Result The MLS system looks for a format string called modelNumberFloat in a Locale Entity named LocaleNumerics which has the Locale specified by anEnglishLocaleDescription This format string is then used to transform the Float 123456 78 7 2 8 Creating an MisContext The default procedure for creating a new MLS Context is to add a new subclass of This can be done from the MLS Data Editor If the default behavior is acceptable for you you don t need to do more In this case the MLS Context gets its default name from its class name and follow ing Locale Entities can be created and added if you want sit cMlsLocaleNumeric named MlsContext name cMlsLocaleMonetary named MlsContext name cMlsLocaleDate named MlsContext name cMlsLocaleTime named MlsContext name Cc ie el MlsLocaleMessages named MlsContext name MisLocaleStrings named MlsContext name Label MisLocaleStrings named MlsContext name HelpText tcMlsLocaleStrings named MlsContext name HoverHelpText The
403. on Connection Customer customer Connection ZFOoHMomyazoa createClaim Connection FOHAQNMAZAON 1 3 8 Viewport The previous sections presented a survey of the principal structuring of an application by means of Domain Models and Domain Processes Within this section the focus is turned to another aspect of the application to be located somewhere between flow control and presentation The Application Framework offers certain places to keep all functionality dealing with transformation and presentation of any data stored in an arbitrary object net Although this seems to be a very easy concept it can get rather complicated e Data must be accessed and presented from different perspectives and with varying focus on data in an object net e g contract data of a customer data of a contract covering a claim main address of a cus tomer etc e Data must be transformed condensed and re combined Example e the sex of a person as a textual description male female the number of covered claims of a policy holder the kind of event in an insurance case translated in a readable form by means of a code table graphical presentation of the tariff data of a property insurance contract calculated on certain condi tions e Data to be displayed is converted in different ways for various presentation on views e The current state of an object or object net may prevent the user from entering cer
404. onnector attributes Jaya File Connector YA ST Connector STFileConnector Type Connector for ST files Language Smalitalk Environment File Working Directory lt r Remove connector Apply Changes z ial Click Apply Changes to apply any changes simply clicking Close will not apply the changes 5 2 4 Preferences dialog To open the preferences dialog From the main menu Select Options Preferences Application Framework User s Guide 5 Tools MA 206 5 2 Domain Processes Browser MYND 5 2 4 1 Tab Behavior Tab behavior settings define general behavior J Preferences x Behavior Process Hierarchy Transaction Handling I Show context comparison V Allow undefined parent context Process Classes Hierarchy In subclassed domain processes show IV child process connections IV base connections W instance variables Ok Apply Cancel 5 2 4 1 1 Processes Hierarchy settings 5 2 4 1 1 1 Show context comparison If checked Each connection will be marked with a context number The context number is unique for each context The set of contexts numbers are consecutive integers starting with 1 Example In the following diagram For the connecttion referencesTreeProcess No Transaction connection or Trans action child is defined Therefore a separate context does not exist and the context is marked with a hypen Processes Hierarchy Transaction Connection Tran
405. ons Tools Help Member Menu Choice jemMenu Menu Choice2 View Edit 9 i 3 9 n e F A default a h j ee el Done 2 VY r Logon VisFW member d E member MicFwCommander primaryPart Part self Domain Manager 1 Nothing selected 5 6 2 3 Aspect Connections The Aspects of s are represented as connectable features of the corresponding edit parts Depending on their type the GUI parts also have one or two extra features The first which is called mic Contents represents the contents of the part The other named micSelection represents the selection of the part In the example in the above figure the members Aspect of the club is connected to the micContents feature of the Listbox indicating that the Listbox will be filled with the members of the club A detailed description of a complete example will follow in the next chapter Application Framework User s Guide 5 Tools MA 216 5 6 VA Composition Editor Customizing Application Framework User s Guide 6 Customizing 217 218 Application Framework User s Guide 6 Customizing ots M YN D 6 1 Overview This chapter describes the possibilities for changing some of the Application Framework s default behavior or enlarging its functionality in some way The Framework consists of several subsystems and major compon
406. or the lineups under OS 2 5 Leaving a RadioButtonSetEmbeddedPart with ESC does not cause a walkback Application Framework User s Guide MA 14 Release Notes MYND Using the ESC key to leave a RadioButtonSetEmbeddedPart does not cause a walkback MicFwColumnBeginEditEvent gt gt triggerWithCallData aWidget clientData nothing callData aCallbackDataRec 6 Leaving a ComboBoxEmbeddedPart with ESC without a selection does not write the old value to the model Leaving a ComboBoxEmbeddedPart with the ESC key without having made a selection does not write the old value to the model MicFwColumnEndEditEvent gt gt triggerWithCallData aWidget clientData nothing callData data 7 MicFwObjectCollectionControl gt gt isListUpdateChanging optimized MicFwObjectCollectionControl gt gt isListUpdateChanging has been optimized Filling a model list with indexed collections will not cause the list to be reformatted with asOrderedCollection 8 Empty popup menus supported Displaying the contents of an empty MetaPartCollection in a popup menu causes a problem in VA The empty menu is not visible and is never closed Thus no other popup menus can be displayed Using MicA btCwMenuView as the popup menu avoids this problem 9 MicFwDomainProcess gt gt startTransaction V3 5 modifications removed Modifications to MicFwDomainProcess gt gt startTransaction in V3 5 caused compatibility problems The modifications have been removed lt startTransact
407. ork structures see section Dymanic Versus Hidden Static View Components Dymanic Versus Hidden Static View Components The content of all Group Controls i e canvas is an instance of This collection reacts similar to an OrderedCollection so you can use this api to modify the content of the MetapartCollec tion Each type of Group Control deals with other components So the content of each metapart collection dif fers due to the connected view widget 4 8 2 Overview Instance methods Type Implementor Message Metapart Collections MicFwViewPort getMetaControlListForAspect anAspect Metapart Collections MicFwViewPort getMetaControlListForAspect anAspect ifAbsent absenceBlock Metapart Collections MicFwViewPort newMetaControlListForAspect anAspect Metapart Collections MicFwViewPort removeMetaControlListForAspect anAspect Dynamic Group Controls MicFwMetaPart accessorString aString partClassName aSymbol Dynamic Group Controls MicFwMetaPart label aLabel Dynamic Notebooks MicFwMetaPart accessorString aString partClassName aSymbol Dynamic Notebooks MicFwMetaPart icon alcon Dynamic Notebooks MicFwMetaPart label aLabel Dynamic Notebooks MicFwMetaPart positionHint aPositionHint Dynamic Notebooks MicFwMetaPart tabType aSymbol Dynamic Container Details View MicFwMetaAspect aspect aValue
408. orld in two directions e Real Events triggered by the Platform Windows are transformed into abstract instantiated event objects owned by the respective control which generates them Different real events may be mapped to a sin gle Abstract Event class if the nature of the event with respect to the model is the same On the other hand it is possible for the same real event in different real Controls to be mapped onto different Abstract Events Inthe other direction model changes caused by write access to instance variables or by command execution trigger model events These events are propagated by Abstract Events resulting in the update of shadowed real Control e Abstract Commands e Certain events are targeted at actions in Domain Processes Typically actions like pressing Push But tons selecting Menu items or toolbar buttons as well as double clicking on List Controls are mapped into Abstract Events of a special type Command Request Events which hold and activate Abstract Application Framework User s Guide 6 Customizing ew 220 6 2 Internal Design MYND Commands to propagate the request to the corresponding Domain Process Viewport Mode FYiew 6 2 1 1 1 Models DO Domain Object instance of a subclass acts in a Domain Process DP Domain Process instance of a subclass controls a Domain Process 6 2 1 1 2 Delegation Models VP Viewport instance of a subclass transforms Domain Object Aspects for
409. orm to the query expression in aQueryArray The instances will NOT be resolved from the context cache Thus this can be used outside of transaction contexts Answer an OrderedCollection with the requested objects Order by anOrderAr ray MicFwAbstractPersistenceManagerRdb gt gt loadinstancesOf aPersistentClass whereSQL aWhereClause Load instances of lt aPersistentClass gt from the persistence medium that conform to the SQL expression in aWhereClause The instances will NOT be resolved from the context cache Thus this can be used out side of transaction contexts Answer an OrderedCollection with the requested objects aWhereClause can be a String or a MicFwRdbSQLWhereClause MicFwViewPort gt gt localize aLocale MLS Localize the MLS Context hierarchy of the Connection belonging to this Viewport to aLocale MicFwViewPort gt gt localizeConnectionNamed aString to aLocale Localize the mlsContext of a connection named aString to aLocale MicFwRdbForeignKeyDescription gt gt manager Answer the receiver s persistence manager MicFwAbstractPersistenceManagerRdb gt gt mappingFor aClass Answer the classMapping for aClass MicFwAbstractPersistenceManagerRdb gt gt mappingFor aClass ifNone aBlock Answer the classMapping instance for aClass Execute lt aBlock gt if not there MicFwAbstractPersistenceManagerRdb gt gt mappingFor selector inClass aClass Answer the variable mapping for selector in aClass Answer nil if not th
410. ot running If a transaction context is aborted within the TB then the dialog that the context was assigned to cannot be closed Normally contexts should be aborted or committed by clicking a button in the dialog TS 7 Object Net Browser ONB TS 7 1 The changes I made in the ONB did not take effect Always select Class Save after making any changes in the ONB NO changes are automatically saved TS 8 Transaction Browser TB TS 8 1 MicFwTechnicalTransactionContext s are displayed in the TB MicFwTechnicalTransactionContext is a context that is created when you are using certain Frameworks tools such as the Domain Processes Browser These contexts are for internal use only Do not alter these aA Application Framework User s Guide MYND Appendix B Trouble Shooting Guide 315 contexts ie commit abort etc in any way TS 8 2 When entering data in the view no changes can be observed in Transactions Browser s data even though the Domain Process has started a transaction context View Display in the Connectors Browser Displayed in the column of the Base Connection in ques tion is The Connection is empty The Domain Process is responsible for attaching a valid Domain Object to the Connection via the model write accessor TS 8 3 When entering data in the view no instance variable can be seen in the Transac tionsBrowser even though its contents should have changed and the Domain Process has started a Transaction Con
411. our Own Widget 6 4 1 How to Create a Platform Adapter for a New Widget e Check the behavior and the protocol of the widget to be adapted e Ifthe widget is passive but contains other possibly active widgets which are to communicate with Appli cationFramework then its Abstract Window must be a and the Platform Adapter a subclass of e If the widget behaves like a Push Button the Abstract Window is a and the Adapter a subclass of If the widget is some kind of specialized entry field the Abstract Window is a and the Platform Adapter a subclass of e If the widget behaves like a List the Abstract Window is a and the Plat form Adapter a subclass of Furthermore it must be deter mined whether or not the widget can accept a list of objects which are queried for the Aspect to be presented by the widget itself or if the widget needs the presented Aspect to be extracted by the Adapter and passed as a list of strings or numbers So the Adapter may be subclass of Other types of widgets like Combo Boxes or Radio Button Sets with a sub class of Sliders or scrollbars with a subclass of etc are treated in an similar manner It must be con sidered how these widgets are adapted to locate the right place of the new Platform Adapter within the class hierarchy and what kind of Abstract Window corresponds to them After having found the right place in the class hierarchy for the Adapter class the class is created with the
412. ow Events is an event triggered when a Push Button or Menu item in the view is clicked At initialization an Abstract Com mand instance of a subclass of is created according to the accessor name of its window either a generic one which transforms the accessor name into a selector and propagates it to the default Viewport or a specific one which has a predefined execution method and performs some standard request of the window system e g close gt to close a Domain Process and its corresponding view e The method which is called by the Platform Event handler first enforces a model update if there is a widget e g entry field which holds changes not yet propa gated to the corresponding model method Afterwards it executes its Abstract Command is a special Command Request Event bound to a Main Window and trig gered when the Window is activated gets the input focus It holds a is a special Command Request Event bound to a Collection Control and triggered when there is a request for the default Domain Process to perform some action upon the selected item e g double click on a list item It holds a is a special Command Request Event bound to a Main Window and trig gered when the Window is to be closed It holds a which checks to see if the corresponding Domain Process and its children can be closed and if so performs the close if not it aborts the close is a special Command
413. ow in the 7th row of the right pane where a drop down box opens a selection list of the available views No let s do the following 2 4 2 3 1 Connect the Domain Process DemoStartProcess with the child Domain Process DemoProcess To create a child Domain Process click the right mouse button in the middle pane select the item Add child connection from the appearing drop down menu There select the class DemoProcess and click OK in the second row of the right pane change newChildProcessConnection to childProc Conn 2 4 2 3 2 Connect the DemoProcess with the Domain Object classes Demolnit Base and DemoBase In order to connect the Domain Objects to first select the in the left pane In the middle pane click the right mouse push button Select Add base connection from the drop down menu There select the Domain Object In the second row of the right pane change the Con nection name to conn This first Connection is automatically the Default Base Connection for The Default Process Connection is defined by the edited Domain Process itself and cannot be changed The Default Base Connection can be declared After declaring the second Base Connection with the name Application Framework User s Guide E 2 Tutorial PMS MICADDO 80 2 4 Quick Tour of Tools and the Domain Model this Connection becomes the Default Base Connection by selecting Set as default base from the drop down menu of the middle pane 2
414. owing dialog box The browser is opened by double clicking on the selected class select Domain Processes pms MICADO Application Framework User s Guide 2 Tutorial 2 4 Quick Tour of Tools 79 Add a variable named to the class by selecting from the Menu Variable Add Instance Variable The variable is added to the class in the same manner The instance variables appear in the right pane The marked variable can be typed by clicking the right mouse button and selecting the Menu item Set Type in the Popup Menu The object type for this instance variable is selected through the now opened Type Editor The instance variable receives Float as the valid object type and set the validate flag Type the variable to an OrderedCollection After typing the instance variables are validated in the Application Framework by activating the option Val idate Type via the check box Finally the transact flag should be set for every attribute The settings are made persistent via the Menu Class Save all Changes i e the declared instance vari ables the corresponding access methods and the class method will be gener ated 2 4 2 3 Declaring Views Connections and Transactions With the Domain Processes Browser the following tasks can be handled Connecting the Domain Process with its Child Process Connecting the Domain Object Classes Connecting Domain Processes with Views e Setting a Transaction Context To start the Dom
415. pect gt MicFwViewPort gt gt defaultChildPaneConnectionModeValueOf anAspect MicFwDomainProcess gt gt defaultClose Obsolete MicFwViewPort gt gt defaultCopy aList onto aViewportOrNil valueOf anAspect Default operation done if a drop copy operation should be performed by the receiver The default is do nothing MicFwViewPort gt gt defaultEditableValueOf aDispatcherAspect Answer the default editable value for the lt dispatcherAspect gt This is taken from the model that was read finally to retrieve the contents of lt dispatcherAspect gt MicFwViewPort gt gt defaultEditableValueOf aDispatcherAspect Answer the default editable value for the lt aDispatcherAspect gt This is taken from the model that was read finally to retrieve the contents of lt aDispatcherAspect gt MicFwViewPort gt gt defaultEmbeddedPartValueOf dispatcherAspect Answer the default enabled value for the lt dispatcherAspect gt aA Application Framework User s Guide MYND Appendix A API 281 MicFwDomainProcess class gt gt defaultHierarchicalPersistentTransactionPolicyClass Return the class for the default hierarchical persistent transaction policy for instances of the receiver MicFwDomainProcess class gt gt defaultHierarchicalTransactionPolicyClass Return the class for the default hierarchical transaction policy for instances of the receiver MicFwDomainProcess class gt gt defaultinheritedTransactionPolicyClass Return the defa
416. pendent process or as a subordinate part of a bigger whole depending on the context 1 3 4 Domain Object Domain models with a main purpose of keeping corporate data are a fundamental part of all applica tions All Domain Objects to be connected to views by the Application Framework must be subclassed directly or indirectly from the framework class Domain objects implicitly inherit the whole potential of the abstract daiat class MicFwPersistentObject which serves as the fundamental domain class for application classes whose instances must be stored persistently by the Persistence Framework see also PersFw In other words the concepts of relation ship transactions und persistence can be reused in Domain Objects without restriction Example In the customer service department of a company customers are referred to clerks for help Both group members are persons with an identical subset of Aspects like first and surname one or more addresses etc The classes representing them may be organized according to the following small object model MicFwDomainObject Person e Address Customer Clerk Application Framework User s Guide 1 Concepts MA 30 1 3 Mynd Frameworks Concepts MYND 1 3 5 Attaching Domain Models 1 3 5 1 Attaching One Domain Model The simplest but in most cases not sufficient configuration is display of only one Domain Mode
417. play label of save ViewPort implements saveLabel iitsContext includes key save no in its lables no yi yes label from Localized data Answer j Composition Editor To make this generic mechanism work properly you have to follow some conventions The key in the MLS Data must be named like the Aspect name of the Control it offers data for It makes no difference to the Adapter if a Label a Hover Help text or a help text has to be shown Remember that the general mechanism of the framework looks for special extensions to the Aspect name like Labels Hov erHelpText and HelpText when searching a method which is responsible e The naming convention for format keys which specify a special numeric monetary time or date format is as follows e The key is built from the aspect name concatenated with the name of the class the returned object belongs to e Doing this you can specify multiple formats for one control depending on the model answer Example Key Format baseNumeric S used of localize and delocalize baseNumericl S used for delocalize baseNumeric2 S used for delocalize An object which can be transformed by a Locale object is always shown in the formatted form Entity of a context e g a Date unless the Viewport method over Application Framework User s Guide 7 Multi Language Support MLS 244 7 2 MLS a
418. ple an Aspect name like contents e lt anOperation gt is one of the following Strings Copy Move or Link In concatenated methods like lt anAspect gt lt anOperation gt lt anotherAspect gt each Part in lt gt starts with an uppercase letter except the first one Example personsMovePersonList 4 12 2 1 Enabling Drag amp Drop To enable Drag amp Drop from a view widget one of the following methods must be implemented in the View port of the connected model lt anAspect gt AcceptableOperations Valid drop operations performed on the receiver MicFwOperations enableNon nableCopy enableLink enableMov lt anAspect gt ProvidedOperations valid drag operations could be started from the receiver MicFwOperations enableNon nableCopy enableLink enableMov The operation named defines the valid drop operations on the receiver and the method names the possible operations which could be started Each method must return an instance of the class which contains the possible operations see above The Aspect should be the Aspect on the view The following example methods show how to describe the behavior of a the model with the Aspect con tents The model can start move operations and accept copy and move operations from other models contentsAcceptableOperations MivFwOperations enableCopy enableMov contentsProvidedOperations MicFwOperations enableMove Or you may reimplement the default meth
419. ponsibleObject gt can be a CgPixMap or an Abticon Example for a button in a tool bar MicFwGraphicsDescriptorMapper default use aCgPixMap for pixMapA default use aCgPixMap for pixMapB pixLabel MicFwAbstractLabel new disabledGraphicsDescriptor pixMapA enabledGraphicsDescriptor pixMapB labelType 1 XmPIXMAP MicFwGraphicsDescriptorMapper default use anAbtIcon for abtIconA default use anAbtIcon for abtIconB iconLabel MicFwAbstractLabel new disabledGraphicsDescriptor abtIconA enabledGraphicsDescriptor abtIconB labelType 3 XmICON Such a Label object can be used for example in a toolbar The label that corresponds the status enabled disabled of the menu item will be automatically displayed 4 8 3 6 Dynamic Notebooks Notebooks can have a Model Accessor means you have to name the Notebook widget in GUI e g pages_ which allows the Control of dynamically adding and removing Notebook Pages This accessor which is placed in a Viewport e g the Viewport of your defaultProcess of your view must return an metapart collection of instances of class MicFwMetaPart You can add dynamic pages to a notebook by following this List name your Notebook lt connection gt _ lt accessor gt _ implement a method lt accessor gt in the viewport of lt connection gt which returns a metapart collection MicFwMetaPart gt gt accessorString aString partClassName aSymbol
420. port The column displays the object using this aspect ViewPortA gt gt columnl aspectXy Subaspects for enabling and editting can be implemented in ViewPort gt gt lt aColumnAspect gt Editable ViewPort gt gt lt aColumnAspect gt Label Example ViewPortA gt gt columnlEditable true ViewPortA gt gt columniLabel ColumnLabel A column is edittable if e the subaspect eg lt column1Editable gt returns true or e the edittable subaspect is not implemented The column requests the object in the focused cell for the embedded part The desired embedded part for the cell will returned from another subaspect This name of the subaspect is lt aColumnAspect gt Embedded Part e g column1EmbeddedPart The subsaspect is implemented in If no subaspect is defined the default embedded part TEXT will be used ViewPortB gt gt columnlEmbeddedPart MicFwEmbeddedMetaPart new accessorString defaultItem name type TEX initiallySelected true yourself The embedded part is connected to the cell only while the cell has the focus If the cell looses the focus the part is disconnected The construction of the accessors is similar to that of normal controls with the exception of a reserved accessor part defaultltem defaultltem is reserved like defaultProcess The accessor part default Item corresponds to the item of the selected row Thus the selection is already made and must not be obtaine
421. pping viewPort gt MicFwViewPortRe questBrokerDispatcher to be deleted Version 3 5 1 Dynamic child processes New methods for declaring instantiating controlling The Framework offers a new way of declaring instantiating and controlling dynamic child processes The developer can declare a multiple process connection within the domain processes browser This connec tion is used as template to define the parameters for the new dynamic child process For each multiple pro cess connection a MicFwMultipleProcessController is instantiated Parameters for the multiple process connection Name of the connection This name is the name of the multiple process controller instance which is used to start and managed the new dynamic child processes The multiple process controller instance can be accessed via the domain process using the method multipleProcessControllerNamed aSym bol e Prefix This prefix string is used for the connection name of the new dynamic child processes If no pre fix is defined the system creates a default name e Class of the new dynamic child processes e Viewport class used for the child process connection of the new dynamic child process e Base class An instance of this class is used to initialize the new child process This instance can be used to identify and access the new dynamic child process This class is also used to identify the multi ple process controller when using the startDynamicProcessUsingObject
422. presenta tion and passes commands to the model 6 2 1 1 3 Model View Connector and Connections Model View Connector instance of MicFwModelViewConnector performs routing between models and view controls e MC Model Connection instance of plugged into the Connector connects models and corresponding delegation models 6 2 1 1 4 Internal Data Transfer AV Abstract Value instance of packs Model Aspect and status information 6 2 1 1 5 Abstract Events and Commands AC Abstract Command instance of a subclass performs command execu tion in the corresponding Viewport e CRE Command Request Event instance of a subclass holds an Abstract Command forwards a command request to the Viewport e CUE Control Update Event instance of updates a Window upon model changes e OUE Object Update Event instance of propagates modifications of an Object Aspect to the model 6 2 1 1 6 Abstract Windows and View ACtl Abstract Control instance of a subclass shadows a platform widget holds Abstract Events AVw Abstract View instance of shadows the Platform View MWC Main Window Control instance of an Abstract Control for the Plat form Main Window shell or top pane 6 2 1 1 7 Platform Adapter Classes MWA Main Window Adapter instance of a subclass VA View Adapter instance of a subclass WA Window Widget Pane or Part Adapter instance of a subclass Application Framework User
423. pter 221 222 223 224 226 229 DOA E E E 327 Platform Event ccccccceeeeeees 224 226 227 platform independent cccsesseeeceeeees 228 Platform VieW ccceeeeeeeccceceeeseeeees 222 226 plugable component eee eeesesteeeeeeees 219 PM Notebook eeeceesscceceeeeeeessessnaeees 142 POPUP MeN ceeeeessessteeceeeeeeessestnaeees 132 DOMADIE sess ese err EE 26 328 potName saiecexaseaccossssieceassaviccaedone 87 205 316 Preferences menu item esses 201 O E E E E 203 present and access data ccccceceeeeeees 34 primitive objects sscccnscnisedetesessesasenadeseanedeanstaas 20 primitive TYPO eee eeeeeeececsteeeceteeeeeeeeeees 230 Process Class menu cccceeeeeseesereees 199 Process Classes Hierarchy 0 0008 202 Process Classes Hierarchy settings 207 Process hierarchy ccsccceeessteeeeeees 89 215 Processes Hierarchy settings 5 207 PFOCESSING cecccessesensecececeeeseesenteeeeeeeens 328 public interface wstuactaasisiaiatiniuussciiensteailes 230 PUSH BUTION cis crecncectseddnperteeeeniasgenaesteensd 106 Q QUI CUIING eesse R 225 Application Framework User s Guide Index 345 R Radio Button Set cceecceccecceeee aeons 108 214 Range Control ccccecsccececeeessesenteeeeeeeens 223 read ACCESS OM rorarii A EA 199 read tr CEasirsossrreiserniseias iiis 331 readMode
424. query expres sion in aQueryArray Resolve loaded objects from the internal cache This can only be executed inside an active transaction context Answer an OrderedCollection with the requested objects MicFwPersistenceManager gt gt getInstancesOf aPersistentClass where aQueryArray orderBy anOrderArray Load instances of aPersistentClass from the persistence medium that conform to the query expression aQueryArray Resolve loaded objects from the internal cache Answer an OrderedCollection with the requested objects Order by anOrderArray MicFwAbstractPersistenceManagerRdb gt gt getinstancesOf aPersistentClass whereSQL aWhereClause Load instances of aPersistentClass from the persistence medium that conform to the SQL expression in aWhereClause Resolve loaded objects from the internal cache Answer an OrderedCollection with the requested objects aWhereClause can be a String or a MicFwRdbSQLWhereClause MicFwViewPort gt gt getLocaleNamed name ofType type fromContextAtConnectionNamed aSymbol Return a locale entity from the mlsContext of the connection named aString MicFwViewPort gt gt getMetaControlListForAspect anAspect Return the MetaControl list registered for lt anAspect gt If there is none return nil MicFwViewPort gt gt getMetaControlListForAspect anAspect ifAbsent absenceBlock Return the MetaControl list registered for lt anAspect gt If there is none evaluate lt absenceBlock gt and Application Fram
425. r MicFwAbstractPersistenceManagerRdb gt gt handleCompareConflict cached with loaded A compare conflict has occured Handle the problem accordingly Alternatives e Refresh the state of the cached object with the state of the loaded object self refresh cached with loaded cached Copy the state of the loaded object into the cached object and answer the cached object self persistenceCopyTo cached from loadedObject cached e Return the cached object without synchronizing default A cached MicFwPersistenceManagerRdb gt gt handleDeleteFailed deleteConflict The delete conflict deleteConflict occured This can happen when the objects optimistic columns have changed or when the object has been deleted Handle the conflict accordingly This is the default imple mentation Implemented for backward compatibility signal the notification to be handled by the application MicFwPersistenceManagerRdb gt gt handlelntegrity Violation integrityViolation Handle the integrity violation integrityViolation This is the default implementation Do nothing causes a non resumable IntegrityError to be signaled aA Application Framework User s Guide MYND Appendix A API 289 Alternatives e integrityViolation repeat e integrityViolation skip deprecated can cause inconsistencies between image objects and database state e self abortDatabaseTransaction The integrityViolation might have been raised during
426. r and which even may be implemented in several Domain Processes Example Pressing the OK button in an edit view results in storing the entered contract of insurance on one hand and relating it to the selected policy holder as well on the other hand At the same time the insurance data should be transmitted to the host and should be printed on an attached printer There are special Domain Processes in the system that provide these functions The model navigation API MicFwViewPort gt gt model MicFwViewPort gt gt modelAtDefaultBaseConnection MicFwViewPort gt gt modelAtDefaultProcessConnection Example As an example consider an election studio with members and election results The Member Viewport enables access to a small object net shown below In the viewport model answers the associated Domain Object For example if the state name is to be dis played in a text field named state_ then the method state in the member Viewport looks like this state Application Framework User s Guide 3 Programming Reference MA 100 3 4 Viewport MYND self model electionResult state REMARK You should avoid to navigate to models of other Connectors which is possible using the advanced API Even this technical possibility exists each process should have all the information in its own Connections which are necessary to perform all its tasks kRonrae BRON A Member Address poroza pan Election Federal Result Sta
427. r Processing gt activated 17 10 36 14 05 98 Saving the image Ha MicFwSample Order Processing gt open view Severities are used to give hints on the impacts of a displayed message Primitive for monitoring low level Application Framework activities Info for monitoring purposes e Warning an unexpected situation or result has been encountered e Error an error has occurred FatalError a fatal error has occurred An arbitrary number of categories may be used for classification see next section Protocol Protocol The display of messages can be filtered by activating or deactivating severities and categories done from the Menu One special category is which collects information on missing accessor methods accesses relying on the or similar things It is recommended that you turn this category off until performance tuning becomes an issue 5 4 2 Protocol Every object in the system understands the following message Object gt gt log severity withString The arguments are category arbitrary symbol e severity one of the symbols described in section Operational Area Operational Area e text string to be displayed The short form self log aString is equivalent to self log self class name asSymbol severity Info withString aString To avoid creating huge log messages being ignored by an inactive logger another protocol is available to support a trace block evaluated later
428. r a message number 1 in the currently valid context aMicMlsKey value model Result The MLS system looks for a string with the key model in the currently valid context The MLS sys tem will use label strings when the is returned from a Label method in a viewport or it is a model return The MLS system will use help text strings when the is returned from a HelpText method in a viewport The MLS system will use Hover Help text strings when the is returned from a HoverHelpText method in a viewport aMicMlsKey value 1 ocaleType MicMlsLocaleMessages ocaleName Contextl Result The MLS system looks for a message number 1 in a Locale Entity named Context1 in the cur rently valid context aMicMlsKey value 1 connectionName computer Result The MLS system looks for a message number 1 in the context of a Model Connection named com puter inside the current Connector If you want to access a Locale Entity outside a MLS Context which is needed when setting model defaults for example you should also use this In this case you must specify all the information which is required value localeType and a localeName Now you can use the API localizeFor aLocale to convert this key aMicMlsKey value defaultName ocaleType MicMlsLocaleStrings ocaleName ComputerDefaults ocalizeFor aGermanLocaleDescription Result The MLS system looks for a string with the key defaultName in a Locale Entity named C
429. r changes Model Save to VA You re ready to start the application again Executing theMember theMember MicExampleClubMember new theMember name Sample firstName Joe dateOfBirth Date today initialWeight 189 5 theMember inspect MicExampleMemberProcess new clubMember theMember openView MicExampleClubMemberView will open the now familiar Window again Go to the Initial weight entry field and enter something that is not a Float like xxx You will see the entry error in the entry field If you press the OK button in the inspect window you will see that the former value will not be changed To prevent errors it s practical to check whether or not the user s entry for the weight is inside a plausible range This is where another Framework mechanism is very useful Validation can be declared for each attribute of a Domain class on the basis of the value of one argument block The argument passed to that block is the new value The block has to return true when the value is acceptable and false otherwise Before you implement the method you have to load the configuration map micApplication Service Vali dation Runtime Example Suppose we want to limit the values for initialWeight to a range from 70 to 500 pounds The method for declaring this is a class method in initializeValidationTable super initializeValidationTable self validateWrite initialWeight using value value notNil
430. rMethodContents_ connectionNameSelection_ accessorMethodsS ction_ displayMethodItem_ The default presentation method is The content of this Control is aCollection The selection of this Control is aCollection If the Connection Name is omitted or declared as VOID_ the Default Base Connection will be used 3 5 23 1 2 Supported Variations 3 5 23 1 2 1 All parts of partName specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction displayMethodItem_ 3 5 23 1 2 2 displayMethod not specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ VOID_ 3 5 23 1 2 3 connectionNameContents displayMethod not specified VOID accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ VOID_ 3 5 23 1 2 4 connectionNameContents connectionNameSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ accessorMethodSelection_ VOID_ 3 5 23 1 2 5 connectionNameContents connectionNameSelection accessorMethodSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ VOID_ VOID 3 5 23 2 Supported Subaspects e BackgroundColor CgRGBColor e Editable Boolean e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide aA 3 Pro
431. rOdbc gt gt named aString Selects a POM with name aString as the persistence manager MicFwPersistenceManager class gt gt named aString Get the instance of the recieiver that is associated with lt aString gt the name can also be a name of a sub class pom MicFwPersistenceManager class gt gt named aString ifAbsent aBlock Get the instance of the recieiver that is associated with lt aString gt the name can also be a name of a sub class pom or the result of evaluating lt aBlock gt MicFwDomainProcess gt gt namelnParent aA Application Framework User s Guide MYND Appendix A API 297 Answer the connection name of the connection in the parent process which holds the receiver MicFwViewPort gt gt newMetaControlListForAspect anAspect Create and return a new empty MetaControl list registered for lt anAspect gt MicFwPersistenceManagerOdbc gt gt newPersistenceContext Creates a new persistent context MicFwDomainObject gt gt newPersistent Creates a persistent instance of the DO MicFwPersistentObject class gt gt newPersistent Create an instance of the receiver The instance is immediately persistence aware This method can only be called inside a running persistent transaction context An exception will be signaled if this is not adhered to MicFwAbstractWindowingPolicy gt gt newPlatformViewFor anAbstractViewClass Create and return a new Platform View Has to be reimplemented in each subclass MicFwA
432. rString baseList theEntireList baseSelection theSelection firstName VOID VOID type COMBOBOX yourself columnlEmbeddedPart MicFwEmbeddedMetaPart new accessorString defaultItem entireList defaultItem theSelection VOID type RADIOBUTTONS yourself columnlEmbeddedPart MicFwEmbeddedMetaPart new accessorString defaultItem entireList defaultItem theSelection VOID type DROPDOWNLIST yourself columnlEmbeddedPart MicFwEmbeddedMetaPart new accessorString type NULL yourself As shown in the examples there are six types of embedded parts TEXT gt Entry field TOGGLEBUTTON gt Toggle button COMBOBOX gt Combo box RADIOBUTTONS gt Radio button set DROPDOWNLIST gt Drop down list NULL gt an non editable embedded part The structure of the accessors is the same as for normal widgets However there is a reserved accessor name part defaultltem which has a specific meaning in the same manner as defaultProcess The accessor name part defaultltem corresponds to the item of the selected row thus making it unneces sary to go back through the selection again For example you can see in the first embedded part that the name of the selected item is requested gt defaultltem name 3 5 1 3 Controlling a view part using subaspect methods Sub aspects methods consisting of the connectionName of the part and and the name of a support
433. ractView MicFwAbstractWindowingPolicy gt gt viewClass MicFwAbstractWindowingPolicy gt gt viewClass aClassHint 4 3 3 14 MicFwStandardWindowingPolicy Default policy for Domain Processes Simply return a new VA view instance 4 3 3 15 MicFwViewCachingWindowingPolicy A simple view caching windowing policy Provides some additional functionality to maintain previous Cached Views MicFwViewCachingWindowingPolicy class gt gt clearCache MicFwViewCachingWindowingPolicy gt gt resetViewForCache 4 3 3 15 0 1 Related Classes Methods MicFwDomainProcess class gt gt defaultWindowingPolicyClass 4 3 3 16 Transaction Policy The transaction policy controls and represents the transactional behavior of the Domain Process instance Therefore exists various specialized classes as shown in the class hierachy below Object MicFwAbstractTransactionPolicy MicFwNullTransactionPolicy MicFwStandardTransactionPolic MicFwAbstractPersistentTransactionPolicy MicFwOldPersistentTransactionPolicy MicFwHierarchicalOldPersistentTransactionPolicy icFwHierarchicalStandardTransactionPolicy icFwInheritedTransactionPolicy icFwTechnicalStandardTransactionPolicy The is set for processes with no transactional behavior The other classes represent the supported transaction mode within the framework Transaction policies took over the complete control of the transactional behavior i e commit abort acti vate Therefore a process could never direct perform these op
434. raction Other kinds of interaction may be external or third party components connected to the application by certain communication protocols For example a spreadsheet application may be controlled from a main application with objects connected to it and updated when certain events occur amp Customer olx Customer No P234 92500 N Elton Joh iis Customer Contracts Application 12351 HH 843Z Household 3546 11 B 6477 Building Customer No P234 92500 NI Contract Contract No 3546 11 B 64 l Branch Db iisas a E E E N Em Ge Report Ol x Contract Contract No 3546 11 B 6477 lt gt Day of Event Dec 31 1996 M After JS F bb A short circuit caused a a fire in the kitchen Framework zi Request The Application Framework decouples models and views from each other making the application models independent from views and thus more reusable On the other hand decoupling makes it necessary to synchronize both sides of the architecture to provide a consistent state of information both for the user and the internal object space Connections between the model and views established on Abstract Events and Controls managed keeping both sides updated e if something happens in the view e g the user enters text or presses a Push Button the connected model gets updated or an operation within the model is started e if an Aspect of the Domain Model object changes all views to which
435. re now in category overwrite optional MicFwModelObject class gt gt authorize MicFwModelObject class gt gt isAuthorizationActive MicFwModelObject class gt gt isGlobalAuthorizationActive aA Application Framework User s Guide MYND Release Notes 17 lass gt gt isValidationActive lass gt gt validate lass gt gt validateExec lass gt gt authorizeExec icFwModelObject icFwModelObject icFwModelObject icFwModelObject icFwModelObject MicFwModelObject 7 Hierarchy list can display a Collection of String s A hierarchy list can now display a Collection of String s This is very useful for example when displaying the last few levels of a tree Person Address street city 8 Visual part Container Details Columns can be initialized based on type Columns can now be initialized based on type for the visual part Container Details AbtContainerDetails View Initializing colums based on type is defined by selecting the context menu for the Container Details part Initialize Columns Based On A Type 9 MicFwHelpRequestEvent implemented for all Widgets that support the event MicFwHelpRequestEvent generated using F1 is now implemented for all Widgets that support the event 10 Properties dialog for Domain Processes Domain Manager is now available To display the properties dialog for a Domain Manager part Inthe Visual Age Organizer Select Options Preferences The Visu
436. re the entry field gets its content from To separate this two settings you have to use an underscore The first setting is the identifier of the object which provides the content serving attribute The identifier is the base connection name member that we defined in the domain processes browser The second name part is the attribute that provides the content So the entry field has to be named exactly like this two settings separated by an underscore and followed by an underscore For instance the entry field for name must be called member_name_ When you re done save the Window and execute the following code theMember theMember MicExampleClubMember new theMember name Sample firstName Joe dateOfBirth 11 2 62 initialWeight 189 5 MicExampleMemberProcess new clubMember theMember openView MicExampleClubMemberView You will see the Window you just defined displaying a sample member of our fitness club Window olx name Sample firstName Joe date OfBirth 172762 initialWeight 189 5 It s also very interesting to open two Windows on the same model for instance by executing the following code theMember theMember MicExampleClubMember new theMember name Sample firstName Joe dateOfBirth 11 2 62 initialWeight 189 5 MicExampleMemberProcess new clubMember theMember openView MicExampleClubMemberView Appli
437. receiver mode is isolated not uncommitedRead MicFwPersistentObject gt gt isLoaded Answer whether the receiver has been loaded from a persistence medium Object gt gt isMicFwPersistentObject Answer whether the receiver is a persistent object i e can be made persistent on request MicFwRelationship gt gt isMicFwRelationship Answer whether the receiver is a relationship object MicFwRelationship gt gt isNToM Answer whether the receiver describes a N to M relationship MicFwTransactionContext gt gt isolate Set the mode of the receiver to isolate No uncommited changes from other transaction contexts will be visible through this context MicFwDomainProcess gt gt isOpen Obsolete Use isViewOpen MicFwPersistentObject gt gt isPersistenceModified Answer true if the receiver has been modified within the current persistent transaction in a way that will cause a Store operation to the persistence medium on the final transaction commit MicFwPersistentObject gt gt isPersistent Answer the persistent property MicFwPersistentObject gt gt isPersistent Answer the persistent property Object gt gt isPersistent Answer whether the receiver is in a persistent state i e has been made persistent MicFwPersistentObject gt gt isPersistentIn aPersistenceManager Answer whether the receiver is persistent within aPersistenceManager Object gt gt isPersistentIn aPersistenceManager A Application Framework User s
438. rence MA 108 3 5 View Parts MYN 3 5 5 Scale 3 5 5 1 partName 3 5 5 1 1 Syntax connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethodSelection_ If connectionName omitted or declared as VOID_ The Default Base Connection will be used Content of this Control is anInterval Selection of this Control is aNumber 3 5 5 1 2 Supported variations 3 5 5 1 2 1 All parts of partName specified connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethods ction_ 3 5 5 1 2 2 connectionNameContents not specified VOID accessorMethodContents_ connectionNameSelection accessorMethods ction_ 3 5 5 1 2 3 connectionNameContents connectionNameSelection not specified VOID_ accessorMethodContents_ VOID_ accessorMethodSelection_ 3 5 5 2 Supported Subaspects BackgroundColor CgRGBColor e Enabled Boolean e ForegroundColor CgRGBColor e Visible Boolean Application Framework User s Guide aA 3 Programming Reference MYND 3 5 View Parts 109 3 5 6 Slider 3 5 6 1 partName 3 5 6 1 1 Syntax connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethodSelection_ Content of this Control is anlnterval Selection of this Control is aNumber If connectionName omitted or declared as VOID_ The Default Base Connection will be used 3 5 6 1 2 Support
439. rences the same 1 signified by the 1 on the LEFT of 1 lt gt 1 source object or nil The relationship is not primitive because the target object should have a reference to the source object An example of a 1 lt gt 1 relationship would be the relationship between Customer source and Portfolio tar get Customer instance variable portfolio references 1 Portfolio object Portfolio instance variable customer references the 1 Customer object The relationship is not primitive because a Portfolio object should know which object is its Customer 1 lt gt N relationship In 1 lt gt N relationships a source instance variable references N where N is any number with the range max min specified by the cardinality of the relationship target objects There is an instance variable in all of the referenced target objects that reference the 1 source object An example of a 1 lt gt N relationship would be the relationship between Employee source and Customer tar get Employee instance variable ownedCustomers would reference N cardinality min lt N lt cardinality max Customer objects The instance variable ownerEmployee in each referenced Customer object would ref erence the 1 Employee object Abort a context A context is aborted when all version objects within the context are dereferenced ie none of the changes that were transacted while the context was active will actually be implemented and the context ceases to exist See
440. rent context if the parent process changes data and the user should be able to rollback his changes e Example Add a new item to a List e Scenario should make its changes persistent e Its child the should create an Item And the add this new Item to the List To avoid to make the new item persistent when it will not be added to the List you have to define a nested transaction for the e Own Persistence Transaction Context when the respective process changing data and no process in the parent Process hierarchy does Example Add a new item to a List Scenario should make its changes persistent Its child the should create an Item And the first edit the new Item and add this new Item to the list if it is valid and the user does not cancel the dialog To avoid to make the new item persistent when it will not be added to the list you have to define a nested transaction for the The should not get an own trans action level because the abort of this process should abort the creation of the Item as well 1 3 14 1 2 1 Connection Transaction Behavior In a third scenario you want to override the child behavior for the case that the respective process runs as a Child of a special parent Then you define a special transaction behavior for the process at its parent pro cess Hint If a Connection Transaction Behavior is defined the child transaction behavior won t be used in this connection Taking this into account the best wa
441. riables or even relationships Normally special Viewport classes are derived from the corresponding framework classes to add applica tion specific transformations and accessing logic FOHAMZZOA 1 3 12 Model Connections In some cases several independent Domain Objects may be connected to a Connector For Example ir a Je a Insured property k _ Create Reque WOHemMZZOA In order to be able to access each of the connected objects in a logical way e g by the role it plays in the context each connected object respective Viewport is managed by a named Model Connection within the Connector which gives access to the objects by a declared name customer Connection Insured Property property Connection Honna wmzzoa edit Connection Application Framework User s Guide aA 1 Concepts MYND 1 3 Mynd Frameworks Concepts 37 Like Connectors the Connections are almost hidden from the application programmer because of gener ated Model Accessors methods provided automatically by the Domain Processes Browser which traverse the Connector and corresponding Connection to gain access to the connected Domain Object or Domain Process Nevertheless the Connection Names must at least be known by the view designers in order to map each Control to a dedicated Connection by name unless the default Connection is to be used 1 3
442. rms and the mnemonic extension Domain Processes Browser Internal fixes Connection accessor methods now use symbols obsolete accessor methods are deleted automatically The file which contains to the path to the MLS directory has changed its name It s now called mls mls instead of micado mls A new storage system based on the Persistence Framework was created which allows the storage of MLS Data in a relational data base A POM for SQL anywhere is included Old MLS Data can t be used anymore and must be converted from csv files in the new format once again The old format can t be read by the new system It s now possible to load only the required keys of a Locale Entity into memory instead of loading a Locale with its entire data which was the only possibility in the previous version The Domain Processes Browser now offers to declare a context and its supercontext for a Model Con nection There s a new group of contexts called Master Contexts which are held as global by the Locale Man ager The new group of Locales allows the user to use delegated keys which are actually resolved in a Mas ter Context Each csv file now contains the codepage in which it was created The Excel template files now contain the new format There is no restriction about the number of possible Locales in one csv file anymore New Locale Categories named and in order to display strings which are assembled from static string parts non localized object parts
443. rn value Use lt rule gt Block or Message to authorize each read access to lt aspect gt lt value gt is returned if access is prohibited MicFwModelObject class gt gt authorizeReadUsing rule Use lt rule gt Block or Message to authorize each read access to object itself If the access is prohibited realValue newProhibited will be returned MicFwModelObject class gt gt authorizeWrite aspect using rule MicFwModelObject class gt gt authorizeWriteUsing rule Use lt rule gt Block or Message to authorize each write access to object itself or to lt aspect gt MicFwPersistentObject gt gt becomeAllLoaded Activate persistence for the receiver within the current persistence context and set the loaded flag so that aA Application Framework User s Guide MYND Appendix A API 275 the receiver will not be inserted on the next transaction commit Do the same for all objects referenced through persistent relationships NOTE this call is only valid inside an active persistence transaction context MicFwPersistentObject gt gt becomeAlliNewPersistent Activate persistence for the receiver within the current persistence context Do the same for all objects ref erenced through persistent relationships This call is only valid inside an active persistent transaction context MicFwPersistentObject gt gt becomeAIlIPersistent Activate persistence for the receiver within the current persistence context Do the sam
444. rocessName_ 3 5 38 1 2 2 baseConnectionName not specified connectionName_ accessorMethod_ VOID_ baseDefaultProcessName_ 3 5 38 1 2 3 baseConnectionName baseDefaultProcessName not specified connectionName_ accessorMethod_ VOID_ VOID_ 3 5 38 1 2 4 connectionName baseConnectionName baseDefaultProcessName not specified VOID_ accessorMethod_ VOID_ VOID_ 3 5 38 1 2 5 connectionName baseConnectionName not specified VOID_ accessorMethod_ VOID_ baseDefaultProcessName 3 5 38 1 2 6 connectionName accessorMethod baseConnectionName not specified VOID_ VOID_ VOID_ baseDefaultProcessName 3 5 38 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean e ForegroundColor CgRGBColor Label PM Notebook String e TabLabel String e TabType PM Notebook Symbol major minor Visible Boolean e LabelBackgroundColor only OS 2 CgRGBColor Application Framework User s Guide 3 Programming Reference MA 144 3 5 View Parts MYN 4 Advanced Programming Reference Application Framework User s Guide aA 4 Advanced Programming Reference MYND 146 Application Framework User s Guide 4 Advanced Programming Reference ons M YN D 4 1 Introduction In this chapter the advanced techniques classes and their protocols to be used regularly by application developers are described This comprises more aspects of the approach when designing
445. rsssee 42 visual programming ssssssesseseeeeseeesssresseee 42 Visual Programming Adapter ee 42 visual representation ccceeserereeseeees 41 VisualAge Composition Editor 0 21 W widget sabe cnsdcaraethcasestsenersaaeeiacs 222 226 234 Widget Adapter 221 226 WIDGGTENIOM snc onaiteacsisssieareagoaedasweserners 322 WINKOW oe ceccccccseeccceeeesceceeeesceseenees 138 222 Window Adaptet ccccceeeeeeees 221 226 Window Implementation ceeeeeeeees 226 Window System Adapter 226 Windowing Policy scccscsisscesasnccensassantesassicensanes 19 Windows Notebook esesssssesssesesssseeresssesee 143 WOTKFIOW oneseseseseserererererererererererererererererereree 328 workflow oriented eseeseserererererrrerererrreree 29 Working directory of connector 206 Wrapping esera tea useuiccussuahencieede 20 Write ACCESS ce eeeeeeeeeeeeeeeee ees 20 148 220 write ACCESSOF cece ees 87 199 316 writeDuringReadlgnored 149 157 311 Application Framework User s Guide Index 347
446. rue C false icon iconic false inputMethodEditor true inputType XmSBCSALPHANUMERIC labelFontName SSSR a 2 3 4 9 Run Application with Help System Now run the application again and leave the cursor on the name entry field You should see the following picture Ga Edit Club Me BIIEG name Sampi The name of the member firstName Joe dateOfBirth 20 04 99 initialWeight 189 50 Application Framework User s Guide gt Pp S iICADO 2 Tutorial m Meas 2 3 Beyond Basics 61 Pressing F1 on the same field yields x 5 An Employee need the name of the member to identify him OK 2 3 5 Managing Child Domain Processes Any real application will naturally consist of a multitude of Domain Processes which interact with one another To show how this interaction can take place and to stick to what is said in the introduction to this chapter we will now extend the sample application with another Domain Process This process will manage the list of members of the fitness club and allow for insertion deletion and editing of members What do we need to accomplish this e a Domain Object to represent the club with its list of members e a view to display the List and the associated controls e a Domain Process to control these objects 2 3 5 1 Create Club Domain object Since there will only be a single instance of the club we ll make use of the Singleton pattern and store it in a cl
447. ryAnalyzer of aProjectionDescriptor with the intersect operation MicFwPersistentObject gt gt invalidateRelationships Send invalidate to all persistent relationships of the receiver This causes the relationships to be resolved from the persistence medium the next time they try to get their target s All versions for these relationships are removed from transaction versioning mechanism MicFwRelationship gt gt is1ToN Answer whether the receiver describes a 1 to N relationship MicFwTransactionContext gt gt isActive Answers True if receiver is the single active context MicFwDomainProcess class gt gt isAuthorizationActive Answer true if authorization for instancevariables is switched on for the receiver MicFwPersistenceManager gt gt isConnected Answer whether the receiver is currently connected to a persistence medium MicFwPersistenceManagerOdbc gt gt isConnected Returns true if the POM is connected to the database MicFwPersistenceManagerRdb gt gt isConnected Answer whether the receiver is currently connected to a persistence medium MicFwPersistentObject gt gt isCreated Answer whether the receiver has been scheduled for a database create operation MicFwViewPort class gt gt isDefaultViewPort This method and the method lt portName gt decide whether or not to use for a ViewPort MicFwPersistentObject gt gt isDeleted Answer whether the receiver is to be deleted from the persistence medium on the commit
448. s Application Framework User s Guide aA 4 Advanced Programming Reference MYND 4 8 Group Controls 183 Return a MetapartCollection of meta controls for the dynamic menu items for the dynamically created submenu declared above result result self getMetaControlListForAspect testSubMenulItems ifAbsent self newMetaControlListForAspect testSubMenulItems add MicFwMetaCommand new accessorString subMenuTestCommand1 label first submenu item yourself add MicFwMetaCommand new accessorString subMenuTestCommand2 label second submenu item yourself yourself result For item Menus there is a new selection model There is a method in the Domain Process for accessing the active model Active means either being selected when the context Menu request key is pressed or being cursored with the right mouse button pressed This method is It returns nil if no item is active If an item is active it returns the Domain Object corresponding to the active item Menu Command with a Parameter If you need a menu command with a parameter then use the method lt commandParameter aParameter gt Example MicFwMetaCommand new accessorString testCommand label first test item commandParameter aParameter yourself When the menu item was pushed the sends the message lt testCommand aParameter gt 4 8 3 4 Dynamic Menu Item with Accelerator A menu item can be accessed by pressing a key combinat
449. s The following list shows a few classifications for object collections e Extent collections results of arbitrary retrievals most often retrieved from a database e Relationship collections full blown relationships connected in another Domain Object e Relationship subsets extracted for further processing delete remove edit Support tables all kinds of auxiliary lists providing a choice environment for a single Aspect The following design rules can be followed when using collections whether a selection affects the Domain Models or the process Domain Process Example A view is given showing all contracts of a customer Starting from this one contract is selected and edited in another Domain Process i e a child process In this context the selection is irrelevant for the relationship in the model but serves only as a launcher for new processing Thus the selection should be directed to the Domain Process in the first place A details view for extended display of the selected element most easily attached with its own Connection with the selected Domain Model moved in dynamically in the above example using the accessor method of the Base Connection contract Operating on relationships with the purpose of changing their instance sets adding a new instance delet ing instances normally requires transaction processing Then all operations can be performed directly on the models and are discarded if the user cancels operatio
450. s The boundary to middleware Frameworks is not precisely defined However the major consideration is that a high level of integration is required expandable architecture is provided and that various services can be replaced or downloaded from scratch via a Broker concept Such services include user transac tions internationalization and much more besides For these services too there is a demand for solutions which are available irrespective of the field of application and which can be gradually implemented in the development process Application Framework User s Guide 1 Concepts MA 26 1 1 Introduction MYND 1 2 Frameworks Advantages and Risks Three questions have to be answered before deciding whether a new application component is to be developed with the assistance of available Frameworks or to be developed from scratch 1 2 1 Programming or Declaring Every type of declaration which can replace user defined code increases the systematic nature and man ageability of the application development process Frameworks enable numerous components to be made available in a declarable manner e Relations between objects e Database access e Dialog control e Event processing e Authorisation rules e Further Advantages e Less effort e Fewer faults Simplified maintenance Risks e Higher learning requirement 1 2 2 Use Technical Interfaces or Uniform Abstract Protocols If a company is to be able to use a new
451. s a ame S Eez t m Password i fe mp ee Ok Cancel cor Ok cence user_name_ selected The view includes the following e Entry field with name user_name_ Entry field with name user_password_ e Button with name micExampleLogonProcess_commitAndCloseProcess_ e Button with name micExampleLogonProcess_abortAndCloseProcess _ 2 3 6 7 2 Create logon process Create MicFwDomainProcess subclass MicExampleLogonProcess In the DPB Specify MicExampleLogonProcess child process MicExampleMasterProcess e Specify MicExampleMasterProcess child process MicExampleSession for access to user Specify MicExampleMasterProcess child process MicExampleUser for access to user The session is passed by the parent process The User has to be created by the logon process itself The default view will of course be the we just defined These setting are shown in the following diagram Beles Browser Process class Connection Options R t Gle a s slelele le E Pms micaoa Process Classes Hierarchy i Processes Hierarchy Name Value a MicExampleAuthorizedProcess A default Type CHILD_PROCESS I MicExampleAddNewMemberPt chub Name logon ae ew anan Class MicExampleL ogonProcess L MicExampleMemberProcess ed Mosmo ie noblea MLS context Uses a lt none gt MicExampleLogonProcess session MLS supercontext_ Uses a lt none gt Defa
452. s Browser can be used to display information on important kinds of instances created by the application at runtime Connectors Connections Viewports etc Only opened Connectors which have corresponding opened views are displayed Connectors Browser Jol x Connectors MLS contexts Connector En OSShell mainitindow Tite Fitness Club Mic Fw Mainvvindow Control AbtShell View Mic Fi CommandRequestControl AbtPushButton view OSButton new Member New MicFwCommandRequestControl AbtPushButton view 0S Button deleteMember Delete MicFwCommandRegquestControl AbtPushButtoniew 0S Button close Done MicFwDynamicGroupControl AbtGroupBoxview 0SGroupBox MicFwCommandRequestControl AbtPushButton iew 0S Button deutsch Deutsch Mic Fw CommandRequestControl AbtPush Button view OSButton english English lu Py The browser is best inspected from left to right first the top part and then the lower part for Control details Starting with a Connector selected from the top left List its Connections and attached Viewports and mod els appear in the top right Unnamed Connectors are displayed by the names of their view classes or if there is no view opened for the Connector displayed in brackets Connections are displayed by their assigned names The Default Process Connection and all other unnamed Connections inherit the class names of their models Moreover the following pieces of inform
453. s gt is called In lt defaultExceptionReturnValueForCommand Type aCommandClass gt can the return value of the command be defined For example changing to a notebook page in response to an exception can be enabled or disabled New methods in micAPl override optional e MicFwDomainProcess gt gt micException anException occurredDuringReadOf anAbstractValue e MicFwDomainProcess gt gt micException anException e MicFwDomainProcess gt gt doPerformAsynchBlock aBlock inException anException e MicFwDomainProcess gt gt defaultExceptionReturnValueForCommandType aCommandClass New methods in micAPI services e MicFwAbstractDomainProcessContext class gt gt systemlsRuntime aBoolean MicFwAbstractDomainProcessContext class gt gt systemlsRuntime Methods moved to miclInternal Expert override e MicFwDomainProcess gt gt domainProcessContextClass e MicFwDomainProcess class gt gt defaultDomainProcessContextClass 13 resetMappings and load remove code for ToolCenter modified MicFwViewPorts gt gt resetMappings and the load remove code for the ToolCenter has been modified If a registered Broker is defined under customViewPort aA Application Framework User s Guide MYND Release Notes 15 The Broker remains if the ToolCenter is loaded The Broker will be registered under viewPort if the Tools are unloaded Loading of application MicFwViewPorts no longer causes the ma
454. s prefix After rebooting the application from the workspace the List is filled correctly Se Window o ourName ourList Henry abort When viewing the Connectors Browser which had to be updated first Menu Connectors gt Update entries will no longer appear in the List below after selecting the Connection even though the List has Application Framework User s Guide 2 Tutorial PMS MICADO 84 2 4 Quick Tour of Tools been assigned to the Connection The reason for this is that the Lists are handled differently than other Controls if the selection of a List is connected to a Model Aspect then the List is related to the selection Connection If you select the Connection conn you can discover your List Control at the Control list below The List Control is displaying the expected information Ge Connectors Browser _ oOo x Connectors MLS contexts Connection Type _ ViewPort lodel DemoProcess Process MicFwiew Port DemoProcess CONN Uist Mic FwView Port Mic Fw Pseudo Listiiodel init Mic Fwview Port DemoinitBase Jemc Por oBase Accessor conn name conn nameLabel OSComposite init listEntries conn listEntry Henry One click in the List of the application does not invoke the string to appear in the entry field Rather a Float with the value 0 0 displays Window Beles ourName 0 00 ourList The selection however
455. s to the aA Application Framework User s Guide MYND Appendix C Frequently asked questions 323 VPBroker are then forwarded via a Dispatcher If acustom ViewPortBroker that is not compatible with MicFwViewPortRequestBroker is to be used then the MicFwViewPortRequestBrokerDispatcher must be used All requests will then be forwarded via the MicFwViewPortRequestBrokerDispatcher to the customerVP Broker or the technicalVP Broker The technicalVP Broker is normally MicFwCachingViewPortRe questBroker The following code shows how the custom VPBroker should be registered in the Broker mapping registerForDevelopment self broker use ACustomVPBroker for customViewPort self broker use MicFwCachingViewPortRequestBroker for technicalViewPort self broker use MicFwViewPortRequestBrokerDispatcher for viewPort During runtime with device components a ViewPortRequestBroker must be available via the mapping viewPort The ViewPortBroker can also be a custom broker registerForRuntime self broker use ACustomVPBroker for viewPort Overwriting the Dispatcher or the customer viewport when loading the application MicFwViewPorts can cause problems The Dispatcher is therefore only available in development this is not critical for perfor mance For more information about the VPBroker see ViewPort RequestBroker page 175 Application Framework User s Guide MA 324 Appendix C Frequently asked questions MYND
456. saction Property MicFwDomainProcess mlsContext Closing MicFwDomainProcess canClose closelnfo Closing MicFwDomainProcess closeProcess Closing MicFwDomainProcess closeView Closing MicFwDomainProcess viewClosed 3 3 3 Method descriptions 3 3 3 1 Declaring First of all you have to implement your process classes as direct or indirect subclasses of MicFwDomain Process After this you can declare all base and child Process Connections via the Domain Processes Browser You can determine how Domain Processes of the receiver class will open their views by default The method as MYND Application Framework User s Guide 3 Programming Reference 3 3 Domain Process 97 MicFwDomainProcess gt gt modality MicFwDomainProcess class gt gt modality 3 3 3 2 Initialising MicFwDomainProcess gt gt initializeInvolvedBaseConnections MicFwDomainProcess gt gt initializeChildProcessConnections 3 3 3 3 Opening These methods open a view of the view class passed as argument or of the default view class argument nil or no argument MicFwDomainProcess gt gt openView MicFwDomainProcess gt gt openView aViewClass 3 3 3 4 Services MicFwDomainProcess gt gt startInteractionForAspect anAspect MicFwDomainProcess gt gt startiInteractionForAspect anAspect inConnection Named connectionName 3 3 3 5 Transaction Behavior The behavior of the Domain Objects and processes explained abo
457. saction handling Child 2 newMultipleChildProcessConnection 17 preferencesProcess off Transaction child Transaction handling Hone or referencesTreeProcess 5 2 4 1 2 Process Classes Hierarchy settings 5 2 4 1 2 1 child process connections If checked Child process connections will be shown in the Process Classes Hierarchy column 5 2 4 1 2 2 base connections If checked Base connections will be shown in the Process Classes Hierarchy column 5 2 4 1 2 3 instance variables If checked Instance variables will be shown in the Process Classes Hierarchy column 5 2 4 1 3 Transaction handling 5 2 4 1 3 1 Allow undefined parent context If checked A child connection can have a defined context without the parent connection having a defined context Example In the following diagram preferencesProcess has a defined context although it is a child connection whose parent has no defined context Processes Hierarchy A 6 MicFwConnectorProcess La EY newMultipleChildProcessConnection A 17 preferencesProcess A referencesTreeProcess Application Framework User s Guide aA 5 Tools MYND 5 2 Domain Processes Browser 207 5 2 4 2 Tab Filter Tab Filter settings define the startup adjustments for the DPB Startup adjustments define the options that are available when adding connections viewports default views and MLS classes Startup adjustments only take effe
458. se from the inherrits from list Definition Class name MicExampleClubMember Inherits from MicFwDomainObject x Relationship Initialization W initialize lazy Cancel Now you have to specify the Application It is the fitness club application you have made a short time before fes f Smalltalk specification Application MicExampleFitnessClubApplication Browse Cancel To add attributes click the right mouse button when pointing at the right pane A context menu appears Remove variable Make virtual variable Show inherited variable we can add the attributes instance variables As each instance variable should be transacted select the instance variables one by one or all in one and check the box named Transact To save the changes you made Model Save to VA amp Object Model Explorer on none desig Class Variable Options New model Open model Validate model dateOfBirth firstName Discard all changes initialWeight name Saye model Save to file Close Name name Application Framework User s Guide 2 Tutorial PMS MICADO 50 2 2 Getting Started Your Object Model Explorer should now look like shown in the picture below 0 lox Model Class Variable Options ele te vy ale mls elas 2 s ee Oum mp bMembe Transacted Validated Type v String
459. sed to control whether the GroupControl is visible or hidden The MetaParts in the MetaPartCollection will be displayed as Menu Items Buttons Forms or Notebook pages depending on the MetaPart class The MetaParts will be known to VA as children of the group con trol widget allowing for example a Notebook to have dynamic pages 3 5 1 2 1 3 baseConnectionName For parts widgets within the Group Control The base connection is taken for an inner widget if the base is not specified in the name of the widget This base connection name overrules the default mechanism of the framework which would be the inser tion of defaultBase For example if a Group Control contains an entry field named number_ ie with no base connection specified the base connection will be specified by baseConnectionName This is the equivalent of an entry field with the name baseConnectionName_number_ This is useful for example when a Form should be used several times on a view but the data for the Forms is accessed via different base connections In this case the base connection name for the widgets in the Form is not specified but is rather specified by the third part of the name of the Form 3 5 1 2 1 4 baseDefaultProcessName A connection specification of the process for the group control The group control is connected to the con nector of this specified process Because of this all child processes and base connections of the process are accessibl
460. spectControl Containerltem Slider RadioButton SpinButton e QObjectAspectEditorControl Entry Field Text Control e GroupControl GroupPane Composite e DynamicControl Controls which allow components to be added dynamically at runtime e DynamicMenuControl Menu e ObjectBookControl Notebook other book like ones e PageControl Notebook page e MainWindowControl ApplicationWindow TopPane e OQObjectCollectionControl ListBox Table ColumnarListBox Container e ObjectChoiceControl DropDownList e ObjectRangeControl Slider SpinButton 6 2 1 2 2 Technical Details of Abstract Controls All Abstract Controls are instances of subclasses of At initialization an Abstract Window is created for each platform component window together with its corresponding Platform Adapter and connected Afterwards the Abstract Window gets the component name of the Platform Window from the Platform Adapter This name is checked for syntactical accordance to a Model Accessor name and if it matches an accessor name i e the Window is wanted to communicate with the framework models it is converted into a Model Accessor object Moreover the Abstract Window creates Abstract Events for the Platform Events which are to be hooked to ApplicationFramework and for the model resp Viewport events which are to cause view updates After creation and registration of the framework structures an ini tial update of the Window with the corresponding model contents is performed Final
461. sri eSEE AE REEE E EE vila AE EROE NOE E ENE 201 DPB Process Classes Hierarchy COIUMN cccccceeeeeeeeceeeeeeeeeeeeeeeaaeeeeeeeaaeeeeeeeaaaeeeseeeaeeeeeeenaeeeeeeee 203 Connection selected in the DPB Process Classes Hierarchy column ceccecceeeeeeeneeeeeeeeeeeees 203 Figure 99 Resizing the DPB Process Classes Hierarchy column cccceeeeeeeeneeeeeeeeneeeeeeeeaaaeeeeeeeaaeeeeeeeaaas 203 Figure 100 Connections in the DPB Processes Hierarchy COIUMIN ceecs cece ee cece ceeeeeeeeaee sees eeeeaeeeeenes 203 Figure 101 Defining the transaction properties 2 ecceeeeeeeeeeeeeeeeeeeeeeeeeeeaaeeeeeceaaeeeeeeeaaaeeeeeeeaeeeeeeeaaeeeseaaas 204 Figure 102 Default process connection class cannot be redefined ec eeeceeeceeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeneeees 205 Figure 103 DPB Status Dal slccicceececccuedevenc ch E E diecddeasastiadens duns OIA AOA 205 Figure 104 Connector Manager dialog ececeeeeeeeeeeeeeeeeeeeeeeeteeeeeeeeeeeaeeeeeeeaaeeeeeeeaaaeeeeeeeaaeeeeeneaaeaeeeeeseaaas 206 Figure 105 Connector Editor dialog eeeeeccceeeeenneeceeeenneeeeeeeaaeeeeeeeaaaeeeeeeeaaeeeeeeeaaaeeeseseaaeeeeeeeaaaeeeseeeaeeeeeseaaas 206 Figure 106 Preferences dialog Tab Behavior eeecccceeeeesneeeeeeenneeeeeeeeeeaaeeeeeeeaaaeeeeeseaaeeeeeeeaaaeeeeeeeaeeeeeseaaas 207 Figure 107 Connection without Context defined oe eee ceeceeeeenneeeeeeenneeeeeeeaaeeeeeeeaaaeeeeeeeaaeeeeeeeaaaeeeeeeeaeeeeeneaaas 207 F
462. ss and a domain object which permits the framework user to identify the model aspect of a data shown visual part only by the aspect accessor see later Your task is to define a relationship to the domain object member class 2 2 4 2 1 Declaring the connection to the domain object A connection to the domain object is called base connection Such a connection can be declared by the selection of menu choice Add base connection of the menu Connection 3 Domain Processe Browser Process class alte aj Process Classes Hierarcl Application Framework User s Guide 2 Tutorial PMS MICADO 52 2 2 Getting Started A List of domain object classes appears Here you have to set a type for the connection meens you have to define which instances are accepted by the system for this connection Select the entry for your member class from the list A n Req iojx Choose a Domain Object class MicExampleClubMember a MicExampleFitnessClub MicFwBaseObject ofl Cancel After closing the dialog the center list shows a new connection which is a child node of the connection for our member process At the right list you can to change the name of the connection to the domain object club member from newDefaultBaseConnection to clubMember The name of a connection is used by the Framework later in order to reach the domain object which is located at this connection from the view You should ensure to write the name in lo
463. ssociation or aggregation relationships it is gener ally recommended that you implement one or more Viewport classes which provide navigation through the object net One of the objects is the one primarily attached to the view displaying Aspects of itself and its related objects The Viewport should be named and designed accordingly In the example above many views would be most interested in the customer s Aspects The Viewport to be designed for this class must give access to the customer s addresses and contracts The following pic Application Framework User s Guide aA 1 Concepts MYND 1 3 Mynd Frameworks Concepts 31 ture illustrates the placement and role of the Viewport customer Connection FOHAQNMZAON 1 3 5 3 Attaching Several Domain Models Several independent Domain Models may be attached to one Model View Connector by their own nor mally named Connections Attaching of several Domain Models is necessary if the Domain Models are executed in one process or under the control of one Main Process JOZ newClaim O Connection ko 1 3 5 4 Attaching Collections The handling of collections is probably one of the most demanding design issues when developing appli cations Collections occur under various circumstances from different types of sources and for different purposes in the flow of an application Moreover there is often a need to handle selections in different way
464. sssssiissssississssssssessessses 203 Make selected base to default base toolbar icon 202 Make selected default base to base toolbar icon 202 managePendingEvent ccccccceeeeee 224 Manipulator sscistes cisncacils Gulsutunieduasetusestsnatinssiteges 18 WADDEF ccscevscorarmrrcnaes 219 230 232 233 329 mapping objects ee eeeeesesteceeeeeeeeeeeees 219 Master Context ccccccccessessseseeceeeeeeeenees 19 Max INStANCES cceececccececeeseeeseeeeseeeees 204 MENU irrino i A a 222 Menu Cascade cccccccceceseesessseeeeseeeees 134 Menu Choice o 0 ccc cc cccccccccceesesesseeeeees 133 Menu TGS de facaceeanecassecesvaaveaadeassteatvenenceeus 135 MENG sveveccacsedeccectuvs cocettvevedextvcudeabeeedbeneyes 183 Metapart Collections cceeee 181 182 Mic Fw Framed Toolbar View 0 137 Mic Fw Toolbar View o e 136 Mic Standard Status Bar Part 118 Mic Status Bar Part 0 0 0 ececcecccee esas ee eee 117 micado MS anerian EA 19 MICAP LD EE EE 219 MICCONTENTS enisiecnaiicnna ia 90 216 MicFwAbstractChainableEvaluator 225 MicFwAbstractCommand 221 224 225 MicFwAbstractCommandRequestBroker 231 MicFwAbstractCommands cccccc0e 231 MicFwAbstractControlRequestBroker 231 MicFwAbstractEventi cccscessseeseeeee 231 MicFwAbstractValue 221 222 225 MicFwAbstractView
465. st we have to create a new application to hold the code we will be creating here Open the VisualAge Organizer and create an application named i Set the prerequisites of the new application to include it may be necessary to activate the full Menus in the VisualAge Organizer first this is done by selecting Full Menus from the Options Menu Now create a visual part named Place the Controls needed for the Fitness Club master Window onto the window without paying attention to the name the system will use default Application Framework User s Guide 2 Tutorial PMS MICADO 90 2 5 Connect to models using Non Visual Parts names like You will end up with a screen looking like this MicExampleMasterViewVisual Composition Editor ol x View Edit Delete Done Logon Visual Push Buttont selected 1 Next choose a Domain Manager part si from the micado Frameworks section of the parts catalog and place it next to the Window Double click it and select MicExampleMasterProcess from the Drop down List in the settings dialog To help identify the part you may also want to rename it to something like Mas ter Now tear off the following attributes one by one logon club member and default These represent the Viewports of the associated child processes and Domain Objects respectively Now your screen should look like this
466. start with Tutorial page 45 to learn the basics of the Framework e Continue Programming Reference page 93 e Continue with Customizing page 217 e Finish Creating Runtime Executables for Distribution page 261 For the implementer of a smaller application Start with Concepts page 23 e Optionally read Concepts page 23 e Continue with Programming Reference page 93 e Finish with Creating Runtime Executables for Distribution page 261 For the implementer of a complex application Start with Concepts page 23 e Optionally read Concepts page 23 e Continue with Programming Reference page 93 e Continue with Customizing page 217 e Finish with Creating Runtime Executables for Distribution page 261 Mynd on the Web Visit the Mynd web site at HTTP WWW MYND DE Terms and Symbols of the Manual To help you interpret the information in our printed manuals e Italic indicates a Bold emphasizes a word or phrase A Application Framework User s Guide MYND Documentation overview 11 e Italic indicates and e Monospace indicates passages or Smalltalk code The following symbols are used for the most important Application Framework entities g Domain Domain 2 Object Process S O e Application Framework User s Guide MA 12 Documentation overview MYN Release Notes Version 5 0 1 Mnemonic bug fixed Assume that a child
467. stractPersistenceManagerRdb gt gt sqlDescriptorFor anSQLStatement Application Framework User s Guide MA 306 Appendix A API MYND Answer a sql statement descriptor object that can be used to directly interface to SQL Subclasses will determine whcih actual class of descriptor is used MicFwPersistenceManagerRdb gt gt sqlDescriptorFor anSQLStatement Answer a sql statement descriptor object that can be used to directly interface to SQL Subclasses will determine whcih actual class of descriptor is used MicFwAbstractPersistenceManagerRdb gt gt sqlDescriptorFor anSQLStatement withParameters anArray Answer a sql statement descriptor object that can be used to directly interface to SQL MicFwPersistenceManagerRdb gt gt sqlDescriptorFor anSQLStatement withParameters anArray Answer a sql statement descriptor object that can be used to directly interface to SQL Subclasses will determine whcih actual class of descriptor is used MicFwDomainProcess class gt gt start Obsolete Start the receiver and answer the created instance MicFwDomainProcess gt gt startingChildProcess aChildProcess Called in the parent process when a dynamically created child process is started The default implementa tion calls the starting hook see above for the new child process MicFwViewPort gt gt startInteraction aConnection Obsolete Use enterlnteractionForAspect comingFromAspect of instead MicFwViewPort gt gt startInteraction
468. t e Create MicFwDomainObject gt gt MicExampleAuthorizedDomainObject e Create MicExampleAuthorizedDomainObject gt gt session Type as e transacted primitive gt 1 relationship to a MicExampleSession e cardinality 0 1 e Redefine parent class MicExampleAuthorizedDomainObject gt gt MicExampleClub e Redefine parent class MicExampleAuthorizedDomainObject gt gt MicExampleClubMember 2 3 6 6 Create MicFwDomainProcess gt gt MicExampleAuthorizedProcess Any process that e edits a member e has a child process that edits the member must initialize the child process or club member with a user This includes several processes therfore a new parent process will be created Create MicFwDomainProcess gt gt MicExampleAuthorizedProcess e Redefine parent class MicExampleAuthorizedProcess gt gt MicExampleMasterProcess e Redefine parent class MicExampleAuthorizedProcess gt gt MicExampleAddNewMemberProcess e Redefine parent class MicExampleAuthorizedProcess gt gt MicExampleMemberProcess In DPB Create MicExampleAuthorizedProcess base connection lt session gt to MicExampleSes Application Framework User s Guide PMS MICADO 2 Tutorial 2 3 Beyond Basics 71 sion as shown in the following diagram s Domain Processes Browser started on MicExampleAuthorizedProcess Browser Process class Connection Options Rj ale aj cle slalas Process Classes Hierarchy PIE MicExampleaAuthorizedProcess fees MicExampleAddNew
469. t gt gt permitWriteDuringReadWhile code which cases the exception instead of the direct read access e Primitive Objects like Strings and Symbols need no wrapping into generic domain objects any longer when they are used in lists etc Therefore the method is obsolete 4 Tools for the Migration With the Transcript Menu item micFrameworks gt Domain Processes Tools gt Migrate Accessor Methods you can launch a Tool that supports you with the migration of Connection Names from strings to symbols All Framework generated read and write accessors in your Domain Processes are recompiled automati cally In a further step the Tool pops up a MethodsBrowser with all senders of or and displays the corresponding methods Modifications of these methods must take place then however manually i e all strings must be replaced by symbols Application Framework User s Guide MA 20 Release Notes MYND Installing the Application Framework What You Need The Mynd Application Framework runs with IBM VisualAge for Smalltalk 4 x under Microsoft Windows 32bit IBM OS 2 and MVS Before you can use Application Framework you must have VisualAge installed on your system Additionally it requires Mynd Object Behavior Framework It cooperates optionally with Mynd Persistence Framework Please refer to the related documentation on installing and using these parts of the Mynd Frameworks family Application Framework includes the complete support for d
470. t Frameworks FAQ 1 Connections FAQ 1 1 How do I connect a dynamic container widget ie a Form or a Notebook Page to the Framework The accessor name of container widgets has 4 parts The first two parts are used to get the content of the container or set Subaspects like lt accessorName gt visible or lt accessorName gt enabled So if you want to set the visible state of a Form you have to use the second part of the forms accessor name If you write a method to set the content of such widget this method must return a which contains see Metapart Collections Now for the last two parts of the accessor name They are used to connect the widgets inside the container to a special default Base or default Process Connection It s important to understand that all the Connection Names must be seen relativ to the surrounding con tainer If you connect a Form A to a child process A and connect a Form B inside Form A to a child process B process B must be a child process of process A A Form should be reusable and because of this widgets inside the Form shouldn t access Connections directly You should always try to use defaultBase defaultProcess or a capitalized dummy name like VOID As mentioned above you can use the third and fourth part of the accessor name of the surround ing Form to exchange the VOID names with the Connection Names you want to FAQ 2 Domain Processes FAQ 2 1 How can a child process can prevent the clos
471. t a Model Aspect and would not find these contents this would result in an error message 7 5 1 5 Translate the MLS Keys into Another Language The second language in this instance German is now to be entered Every key of the Locale Entity in which we have just inserted the English translations is selected and the Locale german germany is selected in the List Values of the chosen mls key The German translation is now entered in the lower entry field All entries are saved immediately and methods are compiled 7 5 1 6 Implementing the Language Switch Functionality is now placed behind the buttons For this purpose four methods are written in the germanLocale MicMlsLocale language german territory germany This method returns a Locale description object which is used in the MLS system for describing a Locale englishLocale MicMlsLocale language english territory united kingdom Supplies the corresponding English Locale switchToEnglish self localize self englishLocale This method changes the Locale of the context hierarchy to which the button is connected to English In this case this is and the StandardMasteContext Application Framework User s Guide aA 7 Multi Language Support MLS MYND 7 5 Examples 255 switchToGerman self localize self germanLocale As above but all data are subsequently in German The process can now be started and the view can be switched between Germa
472. t is the reaction time of the application for the user Using static views opens as well many tuning mechanisms provided by the framework One of these is the use of Cached Views see chapter Cached Views Cached Views 4 8 1 1 Using Static Group Controls The Application Framework provides a mechanism for connecting Group Controls like Forms Group Boxes and Notebook Pages in the same way All these Controls are connected via a four part Model Accessor name lt accessed model gt _ lt aspect gt _ lt default base gt _ lt default process gt _ lt accessed model gt Connection Name of the model accessed for getting the content of the control lt aspect gt protocol for accessing the content and controlling the behavior e lt default base gt name of the Base Connection to be accessed by the child controls as default e lt default process gt name of the child Process Connection to be accessed by the child controls as default Hasita Asauov EITT sae Han CCa S Cod Via the declared Aspect lt aspect gt you can control the Group Control with the Viewport methods for Application Framework User s Guide 4 Advanced Programming Reference aA 180 4 8 Group Controls MYND enabling visiblity etc The Aspect can be also used to set the content of the Group Control see Using Dynamic Group Controls Using Dynamic Group Controls to implement a dynamic behavior Declaring a lt default process gt will includ
473. t to a new Locale would then change the appearance of the entire view hierarchy Each instance of an MLS Context can be switched independently from one Locale to another but there is one default Locale for each MLS Context it is switched to when being created Because of this you have to make sure that an MLS Context is switched to the Locale you want which may be not the default one before you finally open the view You may reimplement method initializeMLS Context in your Viewport in order to do this before the view is opened As we have said the Adapter tries to convert data which comes from a model or looks for MLS keys if no other data can be found for a Control The order for getting data for a Control is illustrated with the following three examples You want a Text Control static or editable to display the Aspect named distributorName Display contents of distributorName viewPort or Model implemen distributorName IsContext includes key distributorName in its label yes ves Les no 4 Localized data Answer localized Application Framework User s Guide aA 7 Multi Language Support MLS MYND 7 2 MLS and Application Framework 243 You want the Text Control distrioutorName to display a HoverHelp Display hoverhelp of distributorName ViewPort or Model implemen distributorName You want the Button Control save to display a Label Dis
474. t using aRule ifProhibitedReturn value Authorize read access to lt anAspect gt of a Domain Object based on the result of evaluating lt aRule gt If the access is denied return lt value gt e authorizeWriteUsing aRule same as above for write access AuthorizeWrite anAspect using aRule same as above for write access 2 3 6 8 2 Implementing attribute authorisation rules We said that only a user who has a name which is spelled with more than two letters should be able to read data at all A User can write if he can read and has a password that is same as his name if you read it reverse A User is permitted to change the initialWeight of a member if he is the coach The attributes are that his name is JOE and that he has the right to modify To make it easier to handle later on we implement some method canRead at our User MicExampleUser gt gt canRead Application Framework User s Guide 2 Tutorial PMS MicADD 74 2 3 Beyond Basics self name size gt 2 MicExampleUser gt gt canModify self name self password reverse amp self canRead MicExampleUser gt gt isCoach self canModify amp self name JOE Because this behavior is the same for all authorized Domain Object classes in the example we can define it in class initializeAuthorizationTable allow read access to all of the domain object s aspects only for authorized users super initializeAuthorizationTable self aut
475. tImplementationOf aRealPaneClass Public Answer the implementing class of lt aRealPaneClass gt To allow inherit ance reuse lt aRealPaneClass gt may be implemented like any of its superclasses abstractControlFor aRealPane Public Answer an abstract control derived from the class of lt aRealPane gt Us lt aRealPane gt to connect the abstract control to the rest of the world 6 3 1 1 3 MicFwAbstractEventRequestBroker takes requests by the framework to handle the mapping between con crete events triggered by the user interface and the corresponding Abstract Event supported by the abstract Model View Controller The underlying subsystem is Its interface consists of abstractEventFor aRealEvent in aRealWindow Public Answer the corresponding abstract event 6 3 1 1 4 MicFwViewPortRequestBroker takes requests by the framework to handle the mapping between Domain Objects resp Domain Processes and their Viewports The underlying subsystem is Its basic interface methods are MicFwViewPortRequestBroker gt gt openViewPortForModel aModel inConnec tion aConnection MicFwViewPortRequestBroker gt gt openViewPortForModelClassNamed aSymbol inConnection aConnection MicFwViewPortRequestBroker gt gt viewPortClassForConnection aModelConnec tion 6 3 1 1 5 MicFwCachingViewPortRequestBroker x Application Framework User s Guide aA 6 Customizing MYND 6 3 Substituting S
476. tain pieces of data or activating certain operations the corresponding controls presented on a view must be disabled then e Rules of validation can be defined on a field level to allow only correct user input within text entry fields e Change operations may or may not be enclosed in transactions which can be committed or aborted Summarizing all kinds of transformations fall into this category which are designed to retrieve or store data navigating through a connected object net or e filtering and combining it or calculating derived values which have no representation in the model or converting data into a possibly completely different external representation The delegation model of the Application Framework is intended to take over these responsibilities The class implements the basic default behavior needed by the framework s Model View Con nector to handle delegated functionality of connected Domain Objects and Domain Processes as described above in a generic way Subclasses of the viewport class can be designed to implement the application specific delegations The Framework class does two basic jobs e it serves as a generic Viewport class to be used for all connected Domain Models and Domain Pro cesses which don t have their own viewport class assigned e it serves as the domain class for application specific viewport classes they must be derived from it directly or indirectly 1 3 8 1 Declaring a Viewport When openi
477. tandard MDI Drag amp Drop Java Applet Web Adagter g p pple el N Platform Adeoter Windows NT Windows 95 OS 2 MVS teraction gt Li Scaling lt ee AI RecerdFile DDE CGI HTTP Laptop Server 1 4 2 Abstractions and Adapters The Mynd implementation of the MVC abstracts all its core elements and inserts appropriate Adapters for operation on all supported platforms All listed elements and Adapters are an integral component of Appli cation Framework and are automatically allocated and used by it The application programmer does not need to have detailed technical knowledge The system is broken down into an abstract and an adapted part for the following 1 4 2 1 Abstract View An Abstract View simplifies the structuring of external accesses for the Framework as such access can only be routed through real windows It is irrelevant whether actual access is routed via an Adapter for standard windows cascaded windows notebook pages modal dialogs HTML pages or even protocol based data interchange of a windowless application 1 4 2 2 Abstract Control An Abstract Control simplifies external access to the Framework as such access can only take place via real Control There are only a small number of genuinely different Abstract Controls see command exam ple in the MVC chapter The actual access attempts are handled with real Control via an appropriate Adapter 1 4 2 3 Abstract Event The entire event con
478. tart mode 4 lt Use own context _ v Use parent context _ x Isolate mode 4 member Persistence context X Transaction context 4 Hierarchical mode Transaction Child a Transaction handling Hone l LJ od LJ Zila Process class 7e O Main Process Default base opii A i Child process Base MicExampleMasterProcess with default base connection lt club gt and without default view name J Activated t Undefined X Non Aetivated 1 Not editable 2 3 5 4 3 Transaction of child process Be aware that your main transaction behavior which we defined for the member process as the application starter will not be taken when it is started by an other process This is the situation here So we have to defined a transaction behavior at the child process connection where the member process Application Framework User s Guide 2 Tutorial PMS MICADO 64 2 3 Beyond Basics is defined at If you closed the Domain Processes Browser please open the Domain Processes Browser on your master proces again select the child process connection and define the transaction behav ior as see below o x Browser Process class Connection Options R fi al ele E Ze F Pms micaca Process Classes Hierarchy Processes Hierarchy Hame Value a default Type CHILD_PROCESS MicExampleMemberProcess club Name me
479. te a control name state _ 3 4 2 2 Controlling Subaspects The basic Subaspects of a Control can be set by using the following methods MicFwViewPort gt gt lt aspectName gt BackgroundColor MicFwViewPort gt gt lt aspectName gt Checked MicFwViewPort gt gt lt aspectName gt Editable MicFwViewPort gt gt lt aspectName gt Enabled MicFwViewPort gt gt lt aspectName gt ForegroundColor MicFwViewPort gt gt lt aspectName gt HelpText MicFwViewPort gt gt lt aspectName gt HoverHelpText MicFwViewPort gt gt lt aspectName gt Label MicFwViewPort gt gt lt aspectName gt Readable MicFwViewPort gt gt lt aspectName gt Visible 3 4 2 3 Services MicFwViewPort gt gt isInterestedInChangesOf anAspect MicFwViewPort gt gt isInterestedInUpdatesOf anAspect MicFwViewPort gt gt localize aLocale MLS Application Framework User s Guide aA 3 Programming Reference MYND 3 4 Viewport 101 3 5 View Parts 3 5 1 Introduction 3 5 1 1 Controlling parts in views The views of an application are normally developed by means of graphical tools like Composition Editor Window Builder or PARTS Workbench tools from different providers The result from this process is a set of views with a variety of Controls stored in proprietary structures and formats Aside from exceptional cir cumstances the developer is strongly discouraged from using any of the non portable features provided by a GUI tool to do any
480. te Viewport for a passed Domain Object call self broker use MyViewPortRequestBroker for viewPort To remove the Broker you call self broker remove viewPort The framework will use the registered Broker automatically to retrieve Viewports instead of using the default mechanism provided by the original product release This sample shows how Brokers are used by the framework to allow modifications of implemented algorithms or the behavior of entire subsystems even at a high abstraction level and in central places within its design 6 3 1 1 Implemented Brokers The current release of the framework implements five Brokers to allow modifications to default behavior or subsystem usage 6 3 1 1 1 MicFwAbstractCommandRequestBroker takes requests by the framework to handle the mapping between concrete commands sent by the user interface and the corresponding Abstract Commands supported by the abstract Model View Controller or the application The underlying subsystem is Its interface consists of abstractCommandFor aCommandName Public Answer the AbstractCommand that corresponds to lt aCommandName gt 6 3 1 1 2 MicFwAbstractControlRequestBroker takes requests by the framework to handle the mapping between real Controls panes or fields embedded in views by the user interface and the corresponding Abstract Control supported by the abstract Model View Controller The underlying subsystem is Its interface consists of ge
481. te information about the typing of an instance vari able Typing The term typing defines the assignment of types normally basic classes like Integer or String to instance variables Since Smalltalk is an untyped language the PMS MICADO Object Behavior and Persis tence Frameworks introduce typing in order to support storing of objects into typed relational databases UML Unified Markup Language Graphical notation for OO analysis and design uncommitedRead context If an ObjectVersion exists for aSourceObject gt gt aSOVariable ie aSOVariable is transacted and anUncommittedTargetObject was assigned to aSOVariable while aContext1 was active If aContext2 is an active uncommitedRead context and getter message sOVariable is sent to aSourceObject the object returned will be anUncommittedTargetObject See Isolated context Note The message is spelled uncommitedReaa Uncommitted target In a VersionObject A getter message to a source object will return the uncommitted target Application Framework User s Guide MA 330 Appendix D Glossary MYND object referenced by the variable if the active context read mode is uncommitedReadisolate AND the active context does not have a lock on the source object variable AND the active context is not a child context of the context that has the lock OR if the source object s variable is locked by the active context See Committed Target Validation of ExtendedDescription Validation of
482. technology it is frequently necessary to redevelop the application from scratch An architecture which provides uniform and abstract interfaces so that the interfaces can be adapted via Adapters enables such migrations to become manageable e Databases e Software distribution configuration e Communication infrastructure e GUI elements user guidance Platform implementation language e Further Advantages e Lower learning requirement e Greater independence e Simplified migration Risks Dependence on Adapter delivery or development Risk minimising e Customer manufacturer partnership e Early planning 1 2 3 Develop or Use and Expand Existing Architecture It is very difficult to develop a new application architecture If an architecture which is future oriented and open for further expansion is available in house development will not be necessary in many cases e Technical design of the object model e Persistence of objects e Software distribution Event control e Dialog control e Interfaces to services such as authorisation multilanguage capability e Further Advantages e Higher degree of reutilization Application Framework User s Guide aA 1 Concepts MYND 1 2 Frameworks Advantages and Risks 27 e Modular tasks Risks e Higher learning requirement e Dependent on manufacturer Risk minimising e Seminars e Manufacturer is also a user Application Framework User s Guide 1 Concepts 2
483. tem view and controller side of the MVC Viewports communicate with Abstract Controls via Abstract Events On the other hand the window system the view controller layer is divided into an abstract platform inde pendent side and the Platform View The platform independent Abstract Window System is formed by the Abstract View instance of which holds the Abstract Controls instances of sub classes of and the Abstract Events instances of subclasses of which communicate with the Viewports The technical interfaces to native windows and Controls in the host Smalltalk or Java environment are completely encapsulated in a set of classes which form the Platform Adapter Communication between models Viewports and Connectors on the one side and the Platform Windows and Controls via their corresponding Adapters on the other side is accomplished in an unique way by the Abstract Window System and is equivalent on all platforms The main functions of the Abstract Window System layers are e Abstract Controls e Shadowing real native controls The variety of details brought in by real Controls is reduced consider ably by a smaller hierarchy of Abstract Controls Real controls with similar functionality in an abstract sense are mapped to the same Abstract Control class e g single Aspect Controls Choice Controls List Controls Abstract Events The Abstract Events manage the communication between the window system and model w
484. text View Display in the Connectors Browser In the column in the List below no entry corre sponding to the name of the instance variable can be seen for the Connection in question The name of the widget was not entered in the GUI Builder e g the of VisualAge according to the conventions with underlining following and was therefore not registered when starting the Domain Process TS 8 4 When leaving the entry field the Debugger appears with the message lt Class gt does not understand lt Accessorname gt In the Transactions Browser the instance vari able cannot be seen even though its contents should have changed and the Domain Pro cess has started a Transaction Context View Display in the Connectors Browser For the Connection in question a Domain Process is assigned and all accessors are registered The name of the widget does not correspond to a method or instance variable of the Domain Object Either an incorrect Domain Object was placed in the Connection or the name of the widget was incorrectly speci fied TS 9 Transactions TS 9 1 Changes to variable are not transacted If a variable has not been specified as a transacted variable by checking the checkbox Transacted in the ONB then changes to the varible will not be transacted TS 10 ViewPort TS 10 1 No objects are set in the List The widget name does not comply with the list convention Either the name of the Connection for the list entry is not corr
485. the application as well as additional details of the framework s API Ideally the reader will be skilled enough after reading this chapter to deal with advanced techniques like dynamic Processes late model access and Cached Views API information in this section Advanced API methods are described in this section in detail A subset of methods are listed in a table with the listed methods described in more detail following the table The table format is typically similar to the following Type Implementor Method Advanced API method type Declaring Initializing MicFwClass advancedApiMethod Services etc Base method type described in the non advanced pro MicFwClass baseApiMethod gramming reference earlier in this document Details about the methods listed in the table include the information from the API appendix in the following format MicFwClass gt gt method Application Framework User s Guide aA 4 Advanced Programming Reference MYND 4 1 Introduction 147 4 2 Domain Object 4 2 1 Overview Class methods Implementor Message MicFwModelObject permitWriteDuringReadWhile aBlock MicFwModelObject permitWriteDuringReadWhile aBlock Due to the fact that read access to Framework model is traced by the Viewports for the automated update mechanism certain restrictions have to be observed So there should be no write access to model aspects during a traced read be
486. the cache is deleted The value of the cached keys in this case is therefore not zero 7 3 1 1 12 3 Refresh Browser All browser data are re initialized in this way 7 3 1 1 12 4 Convert csv files Data in csv files can be transferred to the current unicode based storage system 7 3 1 1 12 5 Initialize file based system A file based system is opened and data can now be read or written No data are changed when the sys tem is opened For initialization of a file based system a file mls mls in the current VA directory is required which points to the directory in which the MLS directory structure exists 7 3 1 1 12 6 Initialize library based system An ENVY class based system is opened 7 3 1 1 12 7 Initialize db based system A database based system is opened This means that an attempt is made to establish a Connection with an appropriately prepared database 7 3 1 1 12 8 View keys with empty values lt gt View all keys This setting defines whether all keys data are to be generally displayed or whether a mask is to be imposed over the data displaying only objects containing empty entries This option is designed for search ing for translation omissions where a key for a Locale has been defined but no data have been entered 7 3 1 1 13 Options 7 3 1 1 13 1 Set target for locales In a class based system it is possible to specify the application in which the new classes are to be defined In a file or database bas
487. the current transaction level without notification of the owner persistence man ager This causes the changes to be committed into the objects but not into the database MicFwTransactionContext gt gt commitToTop Commit all transaction levels of receiver and then commit all child contexts of receiver MicFwTransactionContext gt gt commitTransaction Attempt to commit the current transaction level Let all interested parties prepare for the commit if neces sary aboutToCommit If the method answers true proceed Go to the next lower transaction level MicFwDomainProcess gt gt commitTransactionByDefault When the view is closed without specifying if to COMMIT or ABORT e g system close this method decides if an open transaction is to be committed true or aborted false by default MicFwTransactedObject gt gt commitVersion aMicFwObjectVersion inContext aTransactionContext Notify the receiver about a commit of aMicFwObjectVersion in context aTransactionContext Trigger the commit event on a final commit The commit has already been completed and aTransactionCon text s transactionLevel is already decremented MicFwTransactedObject gt gt commitVersion aMicFwObjectVersion inContext aTransactionContext inRelationship aMicF wRelationship Commit the receiver s relationship aMicFwRelationship to the version contained in aMicFwObjectVer sion MicFwPersistenceManagerESQL gt gt connectDataSource Connect to
488. the flag which enforces how the transaction is to be closed MicFwViewCachingWindowingPolicy gt gt resetViewForCache Override to reset the view to be cached into its initial state MicFwAbstractPersistenceManagerRdb gt gt resolveFromCache aPersistentObject Try to find an object that is key equal to lt aPersistentObject gt from the POMs object cache MicFwViewPort gt gt resolveKey aMicMlsKey forLocale aLocale Resolve a mlsKey using its information for aLocale MicFwAbstractPersistenceManagerRdb gt gt aA Application Framework User s Guide MYND Appendix A API 305 resolveNetFromCache aCollection Resolve the object net whose root objects are in aCollection from the cache and rebuild the relation ships MicFwAbstractPersistenceManagerRdb gt gt resolveRootFromCache anObject Resolve the object net whose root object are is anObject from the cache and rebuild the relationships MicFwViewPort gt gt returnContextNamed aContextClassSymbol Return a context instance named aContextName MicFwTransactionContext class gt gt running Answer the currently running transaction context or nil if none This is an alternative to MicFwTransaction Manager global runningContext MicFwTransactionManager class gt gt runningContexts Return the running contex or nil MicFwRabiIntegrity Violation gt gt secondObject Answer the second object that caused the error MicFwDomainProcess gt gt selectAspect anAspect Obsolete Bring its
489. the parts generi cally added by the Application Framework white While you implemented the Domain Process and the view the Framework generates a Viewport and a Connection to connect them Application Framework User s Guide 2 Tutorial PMS MICADO on 56 2 2 Getting Started 2 3 Beyond Basics 2 3 1 Overview Define transaction l eT Overriding default Manage child processes Enable authorization Define modality 2 3 2 Transactional Behavior Of course we want to do something useful with our Domain Process Let s add two buttons to our view to allow the user to either commit the changes he made to a member or to cancel them These buttons will be called OK commit button and Cancel abort button The resulting Window looks like the figure below Make sure you ve named the OK button MicExampleMemberProcess_ok_ and the Cancel button MicExampleMemberProcess_cancel_ Now pressing one of the buttons will result in either commit or abort being sent to the Domain Process as a Smalltalk message o x File Edit View Layout Connections Options Help UltraTools Toos Layout at Posi Links Pans blekk BAAN name firstName date0fBirth initialWeight e fests Duplicate the curently selected parts 1E1833
490. ther platform in a multi platform environment e g O B have different codes in IBM code page 437 and ANSI Unicode has been selected as the character set All externalized data is stored in Unicode and converted into the used character set of a target platform when required For this purpose there are some files which contain tables for converting native character sets to Unicode Storage in Unicode takes place automatically just like conversion into a native character set It should be noted that Unicode is a character set and not a font This means that no characters will be lost during conversion but the display thereof depends on the font used on a platform 7 1 2 5 Storage of Localized Data Localized data messages texts date and time formats can be stored into various sources We pro vide support for flat files Smalltalk classes and optional storage a relational data base micApplication Service Multi Language Persitence Interface is required for this storage model A POM for SQL any where is included The responsible layer for managing localized data is generic i e independent of the storage form which is used It is possible to switch between various forms of storage i e you can store your localized data from the Smalltalk classes in files and vice versa 7 1 2 6 Locale Names Not all territory and language identifiers can be used The and classes check the validity of a Locale 7 1 2 7 Maintaini
491. thing else than the pure layout like drawing event action links between parts and the like These things contradict the architecture induced by the Application Framework and make the growing application hard to maintain and extend and they are widely covered in a more general fashion by the framework 3 5 1 2 Controlling a view part using partName Naming Convention A naming convention is introduced to make connecting the GUI elements with models as easy as possible During opening a view a Control contained in the view is connected to a model if and only if the the Con trols name ends with an underscore In this case the name of the Control defines the Connection s and selectors to be used for communication with connected Domain Objects and processes or their viewports 3 5 1 2 1 Components of a part name The exact structure of the partName for a component depends on the component type The following pos sible components exist 3 5 1 2 1 1 connectionName The connection to a View Port and a model that implements the methods specified by the second part of the name accessorMethod 3 5 1 2 1 2 accessorMethod This part of the name has 2 functions e Accessor method for the content of the group control The accessor method must return a MicFwMeta PartCollection which is the dynamic contents of the group control e Specify the subaspects for the Group Control A subaspect example would be the method acces sorMethodVisible which can be u
492. this default behavior which is why it can be overwritten wher ever in many cases In this example we ll demonstrate how to change the default behavior of Action Controls buttons in this case with respect to authorization The default behavior as you have noticed in the last section is to dis appear when the user has no right to perform the associated command This may not be desirable for all applications 2 3 7 1 Change default display behavior for authorized actions You may decide that you d rather just disable the Controls in question instead of making them disappear Let s do this for the fitness club example The place to convert domain behavior into display behavior is the Viewport The Viewport we need is the Viewports are being sent a message to determine whether or not a Control associated with a specific Aspect of the underlying Domain Process will be visible This message can be reimplemented to provide application specific behavior In our case we want to stop the Controls from disappearing so we ll always have to keep them visible The implementation for this message consequently is defaultVisibleValueOf dispatcherAspect we want controls to be visible no matter if access to them is allowed or not true Application Framework User s Guide 2 Tutorial PMS MICADO 76 2 3 Beyond Basics However we want the Controls to be disabled when access is prohibited The mechanism for enabling disabli
493. thod returns the model of the Viewport In this case it is the object from the class This class does not have the method implemented instead it has the class which object is linked to the Connection The method has to be changed the following way Application Framework User s Guide PMS MICADO 2 Tutorial ee 2 4 Quick Tour of Tools 85 name aString mod self model name aString mod self modelAtConnection init mod listEntries includes aString ifFalse mod listEntries mod listEntries add aString yourself The attempt to exit the application by pressing the button is unsuccessful the view stays open even though the widget name for the button is which itself is implemented in the framework Viewing the Connectors Browser after selecting the Connection in the right List one can see that there is no accessor for the with the text This widget is conse quently not connected The result after reviewing the widget names is that the name does not have the mandatory underscore The change of the widget name in leads to the closing of the view after resetting the application As a final step the button needs to be tested After clicking the abort button a walkback immediately occurs with the message a method named lt abortClose gt was missed in class DemoProcess The Framework Logger comments on the error with the remark The Connectors Browser at the Default Process Connection rev
494. tializeChildProcessConnections Initializing MicFwDomainProcess startingChildProcess aChildProcess Starting MicFwDomainProcess childProcessesAreStarting Starting MicFwDomainProcess connectorActivated Starting MicFwDomainProcess prepareChildForInteraction aChildPro cess Starting MicFwDomainProcess start Opening MicFwDomainProcess openView Opening MicFwDomainProcess openView aViewClass Opening MicFwDomainProcess openView aViewClass withParentPro cess aDomainProcess Opening MicFwDomainProcess openViewWithParentProcess aDomain Process Services MicFwDomainProcess activateConnectorWithRefresh Services MicFwDomainProcess addPresetChoiceConnectionNamed aSymbol Services MicFwDomainProcess addPresetHierarchyListConnec tionNamed aSymbol Services MicFwDomainProcess addPresetListConnectionNamed aSym bol Services MicFwDomainProcess canStartInteractionForAspect anAspect Services MicFwDomainProcess canStartInteractionForAspect anAspect inConnectionNamed connectionName Services MicFwDomainProcess currentChoice Services MicFwDomainProcess deferUpdatelnAllViewsWhile aBlock Services MicFwDomainProcess deferViewUpdateWhile aBlock Services MicFwDomainProcess hierarchicalPersistentTransac tionPolicyClass e Application Framework User s Guide 4 Advanced Programming Reference 4 3 Domain Process 151 Type Implementor Message Ser
495. tifierSQL gt gt whereSQL sqlString Compatibility from where set the sql clause for the receiver MicFwAbstractDomainProcessContext gt gt windowingPolicy Get the windowing policy MicFwDomainProcess gt gt windowingPolicy Return the windowing policy object MicFwAbstractDomainProcessContext gt gt windowingPolicy aWindowingPolicy Set the windowing policy MicFwDomainProcess gt gt windowingPolicyClass See lt defaultWindowingPolicyClass gt Application Framework User s Guide MA 310 Appendix A API MYND MicFwRdbForeignKeyDescription gt gt with aSelector Answer an instance of the receiver that will query the SQLClausefor relationship resolution by sending aSelector to the source object of the relationship at runtime MicFwRdbDynamicRelSpec class gt gt with aSelector Answer an instance of the receiver that will query the SQLClause for relationship resolution by sending aSelector to the source object of the relationship at runtime MicFwViewPort gt gt writeAccessRejectedForAspect anAspect vetoValue aProhibitedModel These method is called when read write access to a model has been rejected lt aProhibitedModel gt is afterwards passed to the Abstract Control as result of the model access Certain properties can be set in lt aProhibitedModel gt to control the behavior of the Control Actually setting a property WINDOWACTION to a one argument block will cause the block to be evaluated with the Abstract Co
496. tion lt aConName gt See Process Context MicFwViewPort gt gt defaultProhibitedValueOf aDispatcherAspect Answer the default prohibited value for the lt aDispatcherAspect gt This is a value signaling that lt aDis patcherAspect gt is prohibited to see MicFwViewPort gt gt defaultProvidedOperationsValueOf anAspect Answer the default processable actions of the receiver the default no action Processable actions are drag operations form the receiver Actions enableCopy enableMove enableLink MicFwViewPort gt gt defaultProvidedOperationsValueOf anAspect Answer the default processable actions of the receiver The default is no action Processable actions are drag operations from the receiver Actions enableCopy enableMove enableLink MicFwViewPort gt gt defaultReadableValueOf aDispatcherAspect Answer the default readable value for the lt aDispatcherAspect gt This is taken from the model that was read finally to retrieve the contents of lt aDispatcherAspect gt MicFwViewPort gt gt Application Framework User s Guide MA 282 Appendix A API MYND defaultShowTouchedValueOf anAspect By default show a touched Aspect during a Drag amp Drop session MicFwDomainProcess class gt gt defaultTransactionPolicyClass Return the class for the default transaction policy for instances of the receiver MicFwDomainProcess class gt gt defaultTransactionPolicyFor aChildProcess asChildOf aParentProc
497. tion Usage Kernel MicFwViewPorts Models amp Viewports Kernel MicFwWindowSystemAdapter Window Adapter Kernel MicVaWorkArounds Some Fixes in Va Interaction MicFwDragAndDrop FrameworkEx Drag amp Drop tensions Interaction MicFwVisualProgrammingAdapter CompEd for visual Framework pro gramming Interaction MicFwPartsEsVa if using some specialized parts Interaction MicVAMemonics if using Memonics lack in VA micado extension Services MicFwAuthorization Authorization Services MicFwValidation Validation Services MicMlsFrameworksAdapter MLS Application Framework User s Guide 8 Creating Runtime Executables for Distribution 8 2 Organization of Application Framework 265 a 8 3 The VA Packager An integrated tool of the Visual Age for Smalltalk environment is used for the creation of a runtime exe cutable This tool called the packager can be accessed throug different Menu options but offers under all conditions a similar functionality creation of a runtime executable It can be reached through VA Organizer The way of starting the packager on the organizer is the way of creating a runtime exe cutable mostly acccording to VA s philosophy of usage First you highlight the application that contains the startup class and then you have to select the Menu item Application gt Make Executable e You will see a dialog where you have to define the StartView and the application s prerequisites VA will st
498. tion to keep track of the basis functionality and add sophisticated or enhanded services later The Framework offers the following services e Authorisation e Validation e Multi Language e VA Enhancements e Development Tools Tools like the DomainProcess Browser This logical structure is mirrored in the technical structure of the ENVY Configuration Map the table below shows the names and contents of the configuration maps leading micApplication is dismissed The configuration maps are separated into Runtime and Development Besides this we can define a general rule for the separation of Runtime and Development applications Runtime Applications as part of the Application Frameworks are all applications wnose names do not end with Examle D oder Tools In a Runtime Executable you only need applications from the Runtime configuration maps When prepar ing your runtime image you should only load the Fw services you really use within your application Most services have initialization parts within their loaded code and store new broker entries or other set tings globally If you load a service you don t really need you might package a global setting into your runtime image that might lead to a walkback during execution Map Name Contents Runtime Devel Examples Examples for the Framework X Framework Development Framework development core X Framework Runtime Framework Kernel Interaction Drag amp
499. tionNameContents_ accessorMethodContents_ connectionNameSe ection_ accessorMethods ction displayMethodItem_ 3 5 20 1 2 2 displayMethod not specified connectionNameContents_ accessorMethodContents_ connectionNameSe ection_ accessorMethods ction VOID_ 3 5 20 1 2 3 connectionNameContents displayMethod not specified VOID accessorMethodContents_ connectionNameSe ection_ accessorMethods ction VOID_ 3 5 20 1 2 4 connectionNameContents connectionNameSelection displayMethod not specified VOID accessorMethodContents_ VOID_ accessorMethodSel VOID_ ction_ 3 5 20 1 2 5 connectionNameContents connectionNameSelection accessorMethodSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ VOID_ VOID 3 5 20 2 Supported Subaspects e BackgroundColor CgRGBColor e Editable Boolean e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide 3 Programming Reference 126 3 5 View Parts one M YN D 3 5 21 Container Icon Tree 3 5 21 1 partName 3 5 21 1 1 Syntax connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethodsS ction_ displayMethodItem_ The default presentation method is The content of this Control is aCollection The selection of this Control is aCollection
500. tire application to commit or abort Normally when a main process closes a Closelnfo object with CloseMode of DEFAULLT is sent to the child processes This informs the child processes to close with the default commit abort setting returned by sending the message commmitTransactionByDefault to self This method is implemented by the MicFwDomainProcess class to return true The child processes can override this method in which case the child process commits or aborts according to the internal settings in the child process You have a problem if one childs performs a commit by default while the other one performs an abort but aA Application Framework User s Guide MYND Appendix C Frequently asked questions 321 the user wants to enforce an abort for the entire application The solution to the upper problem is to change the close mode of close info which is handed down to all child processes to COMMIT or ABORT according to the user input When this is done the child is supposed to abort or commit accordingly ignoring its default behaviour Example Create a method in the main process similar to the following valid values are DEFAULT COMMIT closeRequested aCloseInfo self userWantsToAbort ifTrue aCloseInfo closeMode ABORT lt userWantsToAbort gt is a method that verifies the status of the process and whose return value deter mines with which mode abort or commit the process should be closed This method
501. to the Platform Adapter of the List which either passes them to the platform List if the List can handle objects or it extracts the representation string from each Viewport and passes a string list Moreover it creates a special Abstract Event to pass a selected model to the default Domain Process in a command which for example may open some child process upon the chosen model object subclasses to add some enhancements to facilitate treatment of single selections as required by Combo Boxes and Radio Button Sets is the Abstract Window which shadows List Controls like Scrollbars or Sliders where the list is a numeric interval and the selection is a value from this interval In comparison to object Collection Controls it has a simplified protocol which does not create special Connections at runtime but manages the update of the characteristic parameters for a Range Control 6 2 1 3 Abstract View incl Internal Interface When a real View is created an Abstract View begins to exist in its shadow The lifetime of the Abstract View is determined exactly by the lifetime of the real View The Abstract View s purpose is to manage the Abstract Controls corresponding one to one to the real Controls in the view Moreover the Abstract View performs coordination between the abstract and platform layer when opening activating and closing the view It communicates with the real Platform View using a Platform Adapter Important Methods of the A
502. trol between model and view is carried out with Abstract Events for both directions irrespective of the technology and the special characteristics of the platforms event handling The genu inely possible events are linked with the corresponding Abstract Events via the Adapter for every Control contained in the view Processing of events from the model is completely abstract as any changes are for warded exclusively via the Abstract Controls and only these result in an update on the view via their Adapter 1 4 2 4 Abstract Command Abstraction for every type of command means that various generally valid functionalities can be imple Application Framework User s Guide aA 1 Concepts MYND 1 4 Mynd Frameworks Architecture 41 mented in a uniform and reusable manner These include macros forward queue recover transfer to other processes undo redo rollback rollforward 1 4 3 Refined Model View Controller Mynd Application Framework refined the traditional MVC mechanism to include standard declarable struc tures The application developer uses the tools supplied in order to make the declarations 1 4 3 1 Domain Object Domain objects describe that part of the MVC model which corresponds to business terms The behavior and structure are primarily defined in this respect The appropriate tool object net browser from the Object Behavior Framework is used for this purpose and mapping to the database is described with STOPF from
503. ts MicFwViewPort defaultProvidedOperationsValueOf anAspect Controlling Sub aspects MicFwViewPort lt anAspect gt Readable Controlling Sub aspects MicFwViewPort defaultReadableValueOf aDispatcherAspect Controlling Sub aspects MicFwViewPort lt anAspect gt MetaControlListUpdate aMetaCon trolList Controlling Sub aspects MicFwViewPort defaultUpdateOfMetaControlList aMetaControl List forAspect anAspect Controlling Sub aspects MicFwViewPort lt anAspect gt Visible Controlling Sub aspects MicFwViewPort defaultVisibleValueOf aDispatcherAspect Controlling Sub aspects MicFwViewPort graphicsPresentation Controlling Sub aspects MicFwViewPort readOnlyAspect anAspect Controlling Sub aspects MicFwViewPort wantsCachedReadOf aDispatcherAspect Controlling Sub aspects MicFwViewPort wantsImmediate ViewUpdateOf anAspect Aspect Value Con version MicFwViewPort getMetaControlListForAspect anAspect Aspect Value Con version MicFwViewPort getMetaControlListForAspect anAspect ifAb sent absenceBlock Aspect Value Con version MicFwViewPort listHierarchyParentViewPort Aspect Value Con version MicFwViewPort newMetaControlListForAspect anAspect Aspect Value Con MicFwViewPort removeMetaControlListForAspect anAspect version Services MicFwViewPort lt anCo
504. ts This method does not check the dependency lattice and thus depends on the user to make sure that objects are deleted in the right order Questionable in cases where object is not identified Application Framework User s Guide MA 284 Appendix A API MYND by direct mappings i e identifying relationships MicFwAbstractPersistenceManagerRdb gt gt deleteObjectOptimistic persistentObject Delete the persistent data associated with lt persistentObject gt from the database For use outside of per sistence contexts This method does not check the dependency lattice and thus depends on the user to make sure that objects are deleted in the right order Questionable in cases where object is not identified by direct mappings i e identifying relationships MicFwPersistenceManagerRdb gt gt deleteObjectOptimistic persistentObject Delete the persistent data associated with lt persistentObject gt from the database For use outside of per sistence contexts This method does not check the dependency lattice and thus depends on the user to make sure that objects are deleted in the right order Questionable in cases where object is not identified by direct mappings i e identifying relationships MicFwAbstractPersistenceManagerRdb gt gt deleteReferencesOf aPsNRelationship Delete the relationship references associated with aPsNRelationship from the database Do not delete persistent objects MicFwAbstractPersistenceManagerRdb gt gt de
505. ts display nothing instead of and When viewing the Framework Logger five different Warnings appear in addition to the Severity lnfo The associated text reveals that the acces sors and were not found when starting the Domain Pro cess for the corresponding widgets Framework Logger ol x Logger M Logger active I Log to file Timestamp Text Severity Category Warning DemolnitBase 14 02 47 10 03 97 missing method BaseObject DemolnitBase gt gt name Warning DemolnitBase 14 02 50 10 03 97 missing method BaseObject DemolnitBase gt gt listLabel Warming DemoBase 14 02 52 10 03 97 missing method BaseObject DemoBase gt gt nameLabel Waring DemoBase issing method BaseObject DemoBase gt gt listEntries DemoBase _ 14 02 nissing method BaseObject DemoBase gt gt listE ntry 54 10 03 97 missing method BaseDbject DemoBase gt gt listenty After rebooting the application from the workspace the List is filled correctly amp Connectors Browser L o1 x Connectors MLS contexts Connector Demo Startview Li Pane 08 Control Accessor Text MicFwObjectAspectEditor Control AbtTextview OSTextEdit name MicFw ObjectAspectControl AbtLabelview OS Static conn nameLabel MicFwObjectAspectControl AbtLabelview OS Static listLabel MicFwObjectCollectionControl AbtListview SComposite conn listEniries conn listEntry Empty Connection Type ViewPort Dem
506. ts which prop agate changes or requests from the user interface to the model world This difference is not entirely reflected by the class hierarchy but it is important for the Platform Adapters Abstract events which dis Application Framework User s Guide aA 6 Customizing MYND 6 2 Internal Design 223 patch user requests to the models are hooked to Platform Events events triggered by the Platform Win dows at initialization time They may have platform specific extensions methods which conform to the syntax needed by the Platform Windows for callbacks or event handlers or which may transform the way the event is triggered by the platform into the way the event is needed in the Application Framework Abstract events which cause an update of the view upon changes in the model world are entirely platform independent they call their corresponding Abstract Window for the update which uses its Platform Adapter The following list shows part of the event hierarchy MicFwAbstractWindowEvent MicFwAbstractControlEvent MicFwCommandRequestEvent Button click Menu select MicFwCloseRequestEvent System Menu close MicFwActivateRequestEvent Window activation MicFwGenericAbstractEvent not configured MicFwObjectAspectEvent MicFwControlUpdateEvent Update Instance variable MicFwObjectUpdateEvent Update single Aspect Control MicFwObjectSelectEvent List select 6 2 1 4 1 Description of Abstract Wind
507. ture of Domain Mod els classes representing corporate data and the relationships among them are defined first Workflow oriented the focus is set on the modeling of large compound or atomic Domain Processes Regardless of which approach is chosen in a project the Application Framework helps from the beginning in separating different types of objects and functionality intuitively identifying Domain Models and pro cesses as the core logic of the domain delegation models for interfacing models to presentation layers etc The level of refinement with respect to data management persistence transaction logic and exploita Application Framework User s Guide aA 1 Concepts MYND 1 3 Mynd Frameworks Concepts 29 tion of sophisticated views or Controls can grow continuously with the application according to the require ments given 1 3 3 Elements of the Domain The most important result of object oriented analysis is a collection of object models describing the static structure of fundamental Domain Object and process specific classes and their inheritance and associa tion relationships Moreover dynamic models are created to show the behavioral aspects of a system and its classes often illustrated by object state transition diagrams or process models Classes with focus on keeping and maintaining corporate data form a global framework and basis for most applications Examples of this kind of class are Person Customer Contr
508. two windows which are always actual opened As soon as you have brought the VisualAge Organizer into the foreground you choose the menu Applica tions and there the menu choice New gem Parts Tne appia PON You are now requested to enter the name of your new Application MicExampleFitnessClubApplication was entered in the illustration to the right However it is to be recommended to choose another perfix instead of Mic This recommendation also applies to class names You can indeed also load an Applica tion of your colleague only if the application name is not equal to a loaded application Now you can finish the dialog by clicking ok ary alte 2 2 2 2 Entering the prerequisites The Prerequisite is MicFwViewPorts Before you are able to set this prerequisit you have to choose full menus from the options menu erene Vi For entering the Prerquistes you remain in the VisualAge Organizer select your Application and Applica Application Framework User s Guide 2 Tutorial PMS MICADO 48 2 2 Getting Started 2 2 3 tions choose the menu choice Prerequisites ma Tupara fq El o Parts Tot Applicat Open Refresh now Eind Select View Version A Maas Make Executable Load d Changes gt Editions gt Make Consistent Unload Prerequisites A Group Members A dialog box opens itself Click on Change Then choose the entry MicFwViewPorts in t
509. uauledeceainecedetedeitemoucentdes 209 5 4 Framework Logger ici scstuete cc tenssadecvelionindsasasiotaardinuhiinasandesibsecntuentubtanbeainiuadanedecsbecwecuiedend 210 54 1 Operational ArGaec tutteteseissderenne sede E EAE A E E E A ideas 210 SAFO CO a a a T E T T 210 5 5 Online Debh gger ssccierin urnan R a a error 212 5 5 1 Online debugger pag s keosrariiiairrvad iinan k n nin TE E EEEE KELAN DAE TEVERE aE 212 5 6 VA Composition GION sessies naa aea aNs a aG iaa aT i Eaa Eiai 214 5 6 1 Connect to Visual Parts with Part Settings ec eeeceeeeeeeeeneeeeeeeaaeeeeeeeaaeeeeeesaaaeeeeeeeaaeeeeeeeaeeeeeeee 214 5 6 2 Connect to models using Non Visual Parts eccecceeeeeeeeeeeeeeeeeeeeeeaeeeeeeseaeeeeeeeeeeeeeeeseeaeeeeeeeeneeees 215 CUSTOMIZING se ice sccteecscnpaec E deca anv E E 217 LS OVSIVI OW Saee e E E eee eee i pees ete A 219 6 2 Internal Design sated teal eaccetatses ciate aardataca ea aue le sthcicnate atic Bnciodadbedetdot ede aaudeloen 220 6 2 1 Abstract Model View Controller sisisi ninnan EENAA EEEREN ENANA EEE NRR 220 6 22 i EENE AE EA E I NI IE TI E E A N E E AA NAIA 226 6 2 8 Fedure ODI OCIS sacs cinta cde a E TE E E E R A 229 0 24 ExCeptioniHHanlinG isone EENAA EE E ANAE EE 229 6 3 Substituting Subsystems eincciccucnassiunsteanndaboatectstebecdsatcensndausdeaedadenenndgasedccebendenpsascucntens 230 6 3 1 BrOKOTS cc cveidis ok costes ad cx senzene n E E EE EEE TEEN O TOO A E 230 63 2 MAPDOIS iinei
510. ubsystems 231 is provided as subclass of 6 3 2 Mappers To maintain registration of loosely coupled elements within the framework Mappers are used to set get and remove associations between unique constant names and their corresponding classes which them selves may change or be reimplemented in your project Mappers are implemented as singletons and can be reached through an easy to use interface as they extend Object with one method per Mapper Each Mapper has its own working field You will find a complete list of them together with a brief explana tion of their responsibilities in the next section In addition an example will show you how to use the to exchange the default generic Domain Process in order to modify the application wide handling of views that are not opened and controlled via a specific subclass of Domain Process 6 3 2 1 Implemented Mappers The current release of the framework implements four Mappers to allow modifications to default behavior or subsystem usage 6 3 2 1 1 MicFwMapper serves as an abstract superclass for all Mappers Its interface consists of MicFwMapper gt gt use aResponsibleObject for aCategorieSymbol MicFwMapper gt gt remove aCategorieSymbol MicFwMapper gt gt for aCategorieSymbol 6 3 2 1 2 MicFwBrokerMapper maintains the mapping to Brokers Its interface consists of the inherited methods of plus no additional methods It is called via self broker for theBrokerNa
511. uide 4 Advanced Programming Reference 4 3 Domain Process 149 4 3 2 Type Implementor Method Property MicFwDomainProcess isExecAuthorizationActive Property MicFwDomainProcess isExecValidationActive Property MicFwDomainProcess isTechnicalDomainProcess Property MicFwDomainProcess isValidationActive Process Context MicFwDomainProcess processContextEvaluator Process Context MicFwDomainProcess defaultProcessContextFor anInstance asChildOf aParentProcess named con Name MicFwViewCachingWin dowingPolicy MicFwViewCachingWin dowingPolicy clearCache Transaction Policy MicFwDomainProcess defaultTransactionPolicyFor aninstance asChildOf aParentProcess named con Name Transaction Policy MicFwDomainProcess defaultTransactionPolicyClass Trancaction Policy MicFwDomainProcess defaultPersistentTransactionPolicyClass Trancaction Policy MicFwDomainProcess defaultHierarchicalPersistent TransactionPolicyClass Trancaction Policy MicFwDomainProcess defaultHierarchicalTransac tionPolicyClass Trancaction Policy MicFwDomainProcess defaultinheritedTransactionPolicyClass Advanced API Methods MicFwDomainProcess defaultTransactionPolicyFor aninstance asChildOf aParentProcess named con Name Advanced API Methods MicFwDomainProcess defaultWindowingPolicyForChildOf aParentProcess named conName view Class a
512. ult transaction policy for instances of the receiver MicFwViewPort gt gt defaultLateModelAccessValueOf aDispatcherAspect Answer the default late model access value for the lt aDispatcherAspect gt MicFwViewPort gt gt defaultLink aList onto aViewportOrNil valueOf anAspect Default operation done if a drop link operation should be performed by the receiver The default is do noth ing MicFwViewPort gt gt defaultManipulatorValueOf aDispatcherAspect Answer the default manipulator value for the lt aDispatcherAspect gt MicFwViewPort gt gt defaultManipulatorValueOf anAspect Pass a valid manipulator which is evaluated in the Control presenting Aspect lt anAspect gt with the Win dow Adapter as argument MicFwViewPort gt gt defaultMaxSearchLevelValueOf dispatcherAspect Answer the default max level to search for models in a hierarchy MicFwViewPort gt gt defaultMove aList onto aViewportOrNil valueOf anAspect Default operation done if a drop move operation should be performed by the receiver The default is do nothing MicFwDomainProcess class gt gt defaultPersistentTransactionPolicyClass Return the class for the default persistent transaction policy for instances of the receiver MicFwDomainProcess class gt gt defaultProcessContextFor anInstance asChildOf aParentProcess named aConName Return the default process context for a child process lt anlnstance gt as a child of the process lt aParent Process gt in the Connec
513. ult view lt none gt Transaction Connection lt Transaction handling Defined Autostart mode 4 L user member Use own context 4 Use parent context X Isolate mode 4 Persistence context X Transaction context Hierarchical mode 4 a re ole Provess class Ye Getnlt base Main Process Default base J Motivated t Undefined Bot r Child process Base Nonctivated L Not editable MicExampleMasterProcess with default Pease ccna lt club gt and without default view name 2 3 6 7 3 Methods to start logon process The DP needs to be initialized and opened by its parent This requires methods to e Initialize the child process with the parameter this method is domain code and should be implemented at the master process MicExampleMasterProcess gt gt initializeLogon Application Framework User s Guide gt PMS ICADO 2 Tutorial hon MS M 2 3 Beyond Basics 73 self logon session self session yourself Open the view of the logon process should be implemented at the viewport of the master process MicExampleMasterProcessAtDefaultViewPort gt gt openLogon self model initializeLogon openView MicExampleLogonView When the view opens the transactionStarted message is sent by the child process MicExampleLogon Process This method can be overridden to complete the initialization transactionStarted Start the receiver a
514. ultProcessName 3 5 31 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean vA Application Framework User s Guide 3 Programming Reference N D 3 5 View Parts 137 3 5 32 Window 3 5 32 1 partName 3 5 32 1 1 Syntax connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ Content of the Control is aMicFwMetaPartCollection If connectionName omitted or declared as VOID_ The Default Process Connection will be used 3 5 32 1 2 Supported Variations 3 5 32 1 2 1 All parts of partName specified connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ 3 5 32 1 2 2 baseConnectionName not specified connectionName_ accessorMethod_ VOID_ baseDefaultProcessName_ 3 5 32 1 2 3 baseConnectionName baseDefaultProcessName not specified connectionName_ accessorMethod_ VOID_ VOID_ 3 5 32 1 2 4 connectionName baseConnectionName baseDefaultProcessName not specified VOID_ accessorMethod_ VOID_ VOID_ 3 5 32 1 2 5 connectionName baseConnectionName not specified VOID_ accessorMethod_ VOID_ baseDefaultProcessName 3 5 32 1 2 6 connectionName accessorMethod baseConnectionName not specified VOID_ VOID_ VOID_ baseDefaultProcessName 3 5 32 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean e ForegroundColor
515. upported Variations 3 5 37 1 2 1 All parts of partName specified connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ 3 5 37 1 2 2 baseConnectionName not specified connectionName_ accessorMethod_ VOID_ baseDefaultProcessName_ 3 5 37 1 2 3 baseConnectionName baseDefaultProcessName not specified connectionName_ accessorMethod_ VOID_ VOID_ 3 5 37 1 2 4 connectionName baseConnectionName baseDefaultProcessName not specified VOID_ accessorMethod_ VOID_ VOID_ 3 5 37 1 2 5 connectionName baseConnectionName not specified VOID_ accessorMethod_ VOID_ baseDefaultProcessName 3 5 37 1 2 6 connectionName accessorMethod baseConnectionName not specified VOID_ VOID_ VOID_ baseDefaultProcessName 3 5 37 2 Supported Subaspects BackgroundColor CgRGBColor e Enabled Boolean e ForegroundColor CgRGBColor Visible Boolean vA Application Framework User s Guide 3 Programming Reference N D 3 5 View Parts 143 3 5 38 Notebook Page 3 5 38 1 partName 3 5 38 1 1 Syntax connectionName_ accessorMethod_ baseConnectionName_ baseDefaultProcessName_ Content of the Control is aMicFwMetaPartCollection If connectionName omitted or declared as VOID_ The Default Process Connection will be used 3 5 38 1 2 Supported Variations 3 5 38 1 2 1 All parts of partName specified connectionName_ accessorMethod_ baseConnectionName_ baseDefaultP
516. urceAspect Controlling Sub aspects MicFwViewPort defaultCanMove aList valueOf aSourceAspect Controlling Sub aspects MicFwViewPort lt anAspect gt Checked Controlling Sub aspects MicFwViewPort defaultCheckedValueOf dispatcherAspect Controlling Sub aspects MicFwViewPort defaultCopy aList onto aViewportOrNil val ueOf anAspect Controlling Sub aspects MicFwViewPort lt anAspect gt Editable Controlling Sub aspects MicFwViewPort defaultEditableValueOf aDispatcherAspect Controlling Sub aspects MicFwViewPort lt anAspect gt Enabled Controlling Sub aspects MicFwViewPort defaultEnabledValueOf aDispatcherAspect Controlling Sub aspects MicFwViewPort defaultLateModelAccessValueOf dispatch erAspect Controlling Sub aspects MicFwViewPort defaultLink aList onto aViewportOrNil valueOf anAspect Controlling Sub aspects MicFwViewPort lt anAspect gt Manipulator Application Framework User s Guide 4 Advanced Programming Reference 4 4 Viewport 167 Type Implementor Message Controlling Sub aspects MicFwViewPort defaultManipulatorValueOf anAspect Controlling Sub aspects MicFwViewPort defaultMove aList onto aViewportOrNil val ueOf anAspect Controlling Sub aspects MicFwViewPort defaultProhibitedValueOf dispatcherAspect Controlling Sub aspec
517. urther actions Additionally it may define classes that are used more interactively the application has to know a lot about the communication with them The most integrated subsystems implement frameworks the developer must create subclasses and override methods to specialize their behavior to meet the appli cation s requirements To allow subsystems or specific requests to them to be exchanged with an implementation the framework uses Broker classes that offer a thin public interface with the internal knowledge how to delegate the call to the subsystem Only the Broker knows class names or other details of the subsystem so it decouples the request from its implementation If returned elements of the subsystem are then used within the applica tion they have to implement the expected public interface which usually is called a type based coupling in contrast to a class based coupling This is a lot more flexible since clients don t have to hardwire these class names A common Broker concept enables the developer to modify request algorithms or subsystem behavior quite easily To avoid even the hardcoding of calls to the Broker classes the framework maintains each Broker within one single Broker Mapper that provides the developer with a simple interface to register deregister and use the services To register the new Broker that answers Application Framework User s Guide z 6 Customizing MA 230 6 3 Substituting Subsystems MYND an appropria
518. ve can be extended by using the trans actions offered by the Object Behavior and Persistence Framework The declarations for the transaction behavior can be made using the Domain Processes Browser If flagged in the Domain Processes Browser transactions will be started automatically during the opening of the Connector This means if the Domain Process wants to use its own Transaction Context then it will be created Afterwards the framework makes sure that each read and write access will be performed by the Transac tion Context of the Domain Process s a OBFw MicFwDomainProcess gt gt abortAndBegin MicFwDomainProcess gt gt abortAndCloseProcess MicFwDomainProcess gt gt abortAndCloseView MicFwDomainProcess gt gt commitAndBegin MicFwDomainProcess gt gt commitAndCloseProcess Application Framework User s Guide 3 Programming Reference ew s 98 3 3 Domain Process MYND MicFwDomainProcess gt gt commitAndCloseView MicFwDomainProcess gt gt commitTransactionByDefault MicFwDomainProcess gt gt startTransaction 3 3 3 6 Property MicFwDomainProcess gt gt mlsContext 3 3 3 7 Closing In order to close a view and clean up all involved instances like views Connections viewports Domain Objects and Domain Processes the Model View Connector must be closed During closing it is concerned with closing and detaching all the connected objects MicFwDomainProcess gt gt canClose closeInfo MicFwDomainProcess gt gt
519. vices MicFwDomainProcess hierarchicalTransactionPolicyClass Services MicFwDomainProcess inheritedTransactionPolicyClass Services MicFwDomainProcess modelChosen aConnection Services MicFwDomainProcess modelltemChosen aConnection Services MicFwDomainProcess modelSelected aConnection Services MicFwDomainProcess modelViewConnector Services MicFwDomainProcess persistentTransactionPolicyClass Services MicFwDomainProcess startInteractionForAspect anAspect Services MicFwDomainProcess startInteractionForAspect anAspect inCon nectionNamed connectionName Services MicFwDomainProcess transactionPolicyClass Services MicFwDomainProcess parent Services MicFwModelObject permitWriteDuringReadWhile aBlock Services MicFwDomainProcess processContext Services MicFwDomainProcess reactivateConnector Services MicFwDomainProcess reactivateView Services MicFwDomainProcess reactivateViewlnteraction Services MicFwDomainProcess readModelAtConnection aConnection Name Services MicFwDomainProcess refreshAllViews Services MicFwDomainProcess refreshView Services MicFwDomainProcess selectAspect anAspect Services MicFwDomainProcess selectProcess Services MicFwDomainProcess windowingPolicy Services MicFwDomainProcess writeModelAtConnection aSymbol value aModel Transaction Behavior MicFwDomainProcess abortAndBegin Transaction Behavior MicFwDomainProcess abortAndBeginAlone Transaction Behavior MicFwDomainProcess abortAn
520. view is opened from the parent view In the previous version if you clicked on the par ent view surface nothing happened it appeared as if the child retained the focus However the parent actually regained the focus Thus you would assume that the child would process any commands when actually the parent would process any input This was caused by the fact that mnemonics for certain controls were transferred to the parent view This has been fixed 2 Help file call fix In the previous version the event generated when the F1 key was pressed to show help was always trapped by the Application framework help If you did not define a lt HelpText gt subaspect then the Applica tion framework returned the F1 event to VA 3 Update performance In this version when an immediate update lt updateltemPresentation gt for an AbtContainterDetailsView is made only the columns with aspect names for the changed aspect are updated Thus the update optimi zation is not executed for a DeferredUpdate An immediate update is executed when for example the ViewPort method lt wantsImmediate ViewUpdateOf gt returns true 4 Required maps changed The required maps for e micApplication Service Multi Language Persistence Interface Development e micApplication Service Multi Language Persistence Interface Runtime were changed They now reference parts of the Persistence Framework 5 Web Interaction Feature no longer supported The Web Interact
521. wPersistenceManager gt gt deleteldentifier aPersistenceldentifier delete the persistent object described by aPersistenceldentifier MicFwPersistenceManagerRdb gt gt deleteldentifier aPersistenceldentifier delete the persistent object described by aPersistenceldentifier MicFwPersistenceManager gt gt deletelnstancesOf aPersistentClass where aQueryArray Bulk delete all persistent data for lt aPersistentClass gt from the underlying persistence medium That con forms to the query lt aQueryArray gt Image objects are not considered MicFwAbstractPersistenceManagerRdb gt gt deletelnstancesOf aPersistentClass where aQueryExpression Bulk delete all persistent data for lt aPersistentClass gt from the underlying persistencemedium That con forms to the query lt aQueryExpression gt Image objects are not considered MicFwPersistenceManager gt gt deleteObject persistentObject Delete the persistent data associated with lt persistentObject gt from the database For use outside of per sistence contexts This method does not check the dependency lattice and thus depends on the user to make sure that objects are deleted in the right order Questionable in cases where object is not identified by direct mappings i e identifying relationships MicFwPersistenceManagerRdb gt gt deleteObject persistentObject Delete the persistent data associated with lt persistentObject gt from the database For use outside of per sistence contex
522. wer case because the Framework get into trouble if you use upper case for connection names Name Value B Type DEFAULT_BASE Hame clubMember Class MicExampleClubMember Viewport generic gt MLS context none gt MLS supercontext _ lt none gt El E Now you can save your work fim Process class Connection C Refresh environment Browse another net Ctr A 2 2 5 Defining a View Define a Domain Model Define a Domain Process To define a view for the class we ll use the VisualAge Composition Editor Go to the VisualAge Organizer select your Application and choose Parts gt New Now enter the definition for the new part as shown in the figure below a lojx Part class MicExampleClubMember iew Part type Visual part Y Inherits from AbtAppBIdiView v M Open now OK Cancel Help Application Framework User s Guide gt PMS MICADD 2 Tutorial Poe M 2 2 Getting Started 53 Now draw the Window in the Composition Editor ical o x File Edit View Layout Connections Options Help UltraTools Tools if Of 8 ol ta BBE x e e ex firstName date OfBirth initialWeight ciubm jember_name_ selected For each attribute of the Domain Model use one entry field The name of an entry field is used to store two settings which are needed to know whe
523. widget and perform Applica tionFramework specific tasks like event registration for propagation of model changes As a Visual Age example Viewports have a platform specific method which intercepts the Visual Age mechanism for getting a representation of an Object Aspect Therefore Viewports can be passed to the platform list widgets as they are On platforms where the Viewports are called directly by sending them an unary message the Platform Adapter must wrap them with an instance of in order to have the framework specific event registration switched on Application Framework User s Guide 6 Customizing MA 234 6 4 Adding Your Own Widget MYND l Multi Language Support MLS Application Framework User s Guide aA 7 Multi Language Support MLS MYND 235 236 Application Framework User s Guide 7 Multi Language Support MLS ots M YN D 7 1 Language Support Base System 7 1 1 Overview The MLS system enables all Locale language and territory combination specific data of an application to be externalized in a simple manner This can be all forms of Labels or other text as well as formats for date and time and all forms of numeric values The data can be stored in various storage media At present we support ENVY classes sequential files as well as relational databases containers for externalization All data will be stored in unicode a platform independent 16 bit character set Apart from correctly
524. will be used 3 5 15 1 2 Supported variations 3 5 15 1 2 1 All parts of partName specified connectionNameContents_ accessorMethodContents_ connectionNameSe ection_ accessorMethods ction displayMethodItem_ 3 5 15 1 2 2 displayMethod not specified connectionNameContents_ accessorMethodContents_ connectionNameSe ection_ accessorMethods ction VOID 3 5 15 1 2 3 connectionNameContents displayMethod not specified VOID accessorMethodContents_ connectionNameSe accessorMethods ection_ ction VOID 3 5 15 1 2 4 connectionNameContents connectionNameSelection displayMethod not specified VOID accessorMethodContents_ VOID_ accessorMethodSel VOID ction_ 3 5 15 1 2 5 connectionNameContents connectionNameSelection accessorMethodSelection displayMethod not specified VOID_ accessorMethodContents_ VOID_ VOID_ VOID 3 5 15 2 Supported Subaspects e BackgroundColor CgRGBColor e Enabled Boolean ForegroundColor CgRGBColor Visible Boolean Application Framework User s Guide 3 Programming Reference 120 3 5 View Parts one M YN D 3 5 16 Drop down List 3 5 16 1 partName 3 5 16 1 1 Syntax connectionNameContents_ accessorMethodContents_ connectionNameSelection_ accessorMethodSelection_ displayMethodItem_ The default presentation method is The content of
525. within a Domain Process description During runtime it sig nals that the application wants to set a Domain Object into a Connection that is not compatible with the defined involved Domain Object class e MicFwinvalidView Signaled when the class hint passed for the view class in the openView method cannot be resolved to a valid view e MicFwMissingAccessor Signaled when an Aspect requested from a Viewport cannot find a corre sponding accessor neither in the Viewport nor in the model e VetoAction Silent exception internally used to interrupt model access Application Framework User s Guide aA 6 Customizing MYND 6 2 Internal Design 229 6 3 Substituting Subsystems To offer as much flexibility as possible the Application Framework uses some well known patterns to decouple requests from their implementation This is especially useful for developers in extending or even modifying the Framework s default behavior where this is required to meet the application s needs In this section we give you a brief overview of the substituteable subsystems and components and describe how they are connected to the Framework kernel The following sections describe some details and examples on how to implement and register your own components From the programmer s point of view the Framework must support all steps of an evolutionary or spiral development approach The programmer starts implementing essential domain classes their relationships
526. work User s Guide gt 2 3 Beyond Basics 77 2 4 Quick Tour of Tools This chapter provides an overview of the frameworks browsers capabilities in application development and debugging To show this we will develop a short example which has an intentional bug implemented The Object Net Browser and the Domain Processes Browser support application development The Framework Logger the Connectors Browser and the Transactions Browser make debugging easier These browsers allow the developer to monitor the activities of a running application The Connectors Browser displays the runtime result of the declaration with the Domain Processes Browser The Transactions Browser supplies information about the Transaction Contexts during runtime The hier archy of the contexts and changes in the instance variables can be made transparent The Transaction Contexts are also declared with the help of the Domain Processes Browser 2 4 1 The Example We will try to implement the following scenario Atthe beginning a view opens displaying one Push Button e After engaging the control panel a second view with an empty entry field and a List filled with names opens If something is entered in the entry field and the entry field is left then the entry will be added to the List unless it already exists e Ifa line is selected in the List then the selection should appear in the editing field e The actions should run in a transaction and the tr
527. work class MicFwListModelConnection This Connection has an internal technical name however it is possible to manually create an empty List Connection at Connector initialization with the contents selector as Connection Name This preset List Connection will be used by the List Control and can be accessed through its Connection Name The List Connection holds a pseudo model which responds to the methods the List Control con tents the current selection and the currently chosen i e doubleclicked model An example for processing the double click in the default Domain Process modelChosen aListConnection models models aListConnection model selection more processing After executing the sequence above models holds a collection with the selected Domain Object Application Framework User s Guide 4 Advanced Programming Reference MA 190 4 10 List Connections MYND 4 11 Cached Views The present release provide a class which is meant as a simple base class for creating windowing policy classes which meet the special needs e g creation of complex views in background removal of all Cached Views when the application is closed MicFwDomainProcess class gt gt defaultWindowingPolicyClass Alternate windowing policy classes are activated overriding the method as described above For detail of using windowing policies refer to section Windowing Policy Windowing Policy Application Framework User s Gu
528. y make the receiver the currently active transaction context while executing lt aBlock gt Reset to the previously active context afterwards Answer the result of lt aBlock gt MicFwDomainProcess gt gt activateTransactionContextFor aBlock Activate the receiver s Transaction Context if the receiver uses transaction handling MicFwDomainProcess gt gt addChildProcess aDomainProcessClass MicFwDomainProcess gt gt addChildProcess aDomainProcessClass named aSymbol MicFwDomainProcess gt gt addChildProcess aDomainProcessClass named aSymbol withContext aContext withSuper Context aSuperContext Obsolete Add new child processes Use the addNewChildProcess MicFwDomainProcess gt gt addNewChildProcess aDomainProcessClass Add an instance of lt aDomainProcessClass gt to our Connector and let it be a child of the receiver The new process instances will be inserted with the default names MicFwDomainProcess gt gt aA Application Framework User s Guide MYND Appendix A API 273 addNewChildProcess aDomainProcessClass named aSymbol Add an instance of lt aDomainProcessClass gt to our Connector If the Connector contains more than one Domain Process of the the same class use its name lt aSymbol gt to distinguish them Let it be a child of the receiver MicFwDomainProcess gt gt addNewChildProcess aDomainProcessClass named aSymbol withContext aContext withSu perContext aSuperContext Add an instance of lt aDomai
529. y selected process connection Finds other child connections to the same target class 5 2 2 5 Submenu Options BE Domain Process Classes Drbe becom Preferences View Classes MLS Classes Application Framework User s Guide 5 Tools MA 200 5 2 Domain Processes Browser MYND 5 2 2 5 1 Define filter Selecting a submenu brings up a dialog for selecting the filter for one of the following e Domain Process Classes e Domain Object Classes e Viewport Classes e View Classes e MLS Classes 5 2 2 5 2 Toolbar Displays hides toolbar 5 2 2 5 3 Preferences Opens the Preferences dialog see Preferences dialog page 206 5 2 2 6 Submenu Legend About 5 2 2 6 1 Legend Displays the following description of the various symbols used in the DPB Process Class Hierarchy Process Hierarchy la Process Class Main Process Connection 2 Modified Process Class f Modified Main Process Connection 6 Inheritable Child Process Connection Ld Child Process Connection Inheritable Multiple Child Process Connection Modified Child Process Connection e Inheritable Default Base Connection e Multiple Child Process Connection e Inheritable Base Connection Ca Modified Multiple Child Process Connection e Inheritable Variable e Default Base Connection Modified Default Base Connection ah Hees e Base Connection lt lt Actheted Modified Base Connection i Activated and Not Editable x Ho
530. y to avoid trouble is to declare no transactional behavior as chil dren s behavior To override the child transactional behavior the definition should be made at the corre Application Framework User s Guide aA 1 Concepts MYND 1 3 Mynd Frameworks Concepts 39 sponding Connection at the parent process Application Framework User s Guide 1 Concepts 40 1 3 Mynd Frameworks Concepts as M YN D 1 4 Mynd Frameworks Architecture 1 4 1 Overview VisualAge and other object oriented environments usually include a Model View Controller implementa tion However by using it the link to the underlying technology is retained This refers to details of pro gramming as well as implementation of a GUI style guide The fact that for instance pressing a button e selecting a Menu item pressing a toolbar icon pressing a function key mouse double click e Drag amp Drop operations are merely different visual representations of the same Aspect of the application namely the execution of a command is concealed in programming details of the application To explicitly decouple these details from the domain the following layered architecture is defined View Applications DomainObject DomainProcess Port Optional Authari Process S MLS Sin State Rules Cora Facets Ane 4 View Ez Event E Value N S

Download Pdf Manuals

image

Related Search

Related Contents

User Manual GSM Mobile phone Model Q2 CLOUD - Dual-Sim  Tripp Lite Cat6 Gigabit Snagless Molded Patch Cable (RJ45 M/M) - Gray, 2-ft.  User's Guide  CPE INEN 010: Código de práctica. Seguridad en el uso de grúas    Page 1 Page 2 第2号明細表 別 単 位 数 使用機器費 工事費 直接工事  KERAPLAST - Kerakoll  取扱説明書 - ヒビノプロオーディオセールス Div.    User Manual  

Copyright © All rights reserved.
Failed to retrieve file