doc.xml 744 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833
  1. <?xml version='1.0' encoding='utf-8'?>
  2. <!--
  3. Notes -
  4. xsltproc docgen.xsl doc.xml > doc.html
  5. -->
  6. <!DOCTYPE article PUBLIC '-//OASIS//DTD DocBook XML V4.5//EN'
  7. '/home/lee/BridgePoint//tools/docgen/docbook/docbook-xml-4.5/docbookx.dtd' [
  8. ]>
  9. <article>
  10. <title>
  11. BridgePoint xtUML Generated Documentation
  12. </title>
  13. <articleinfo>
  14. <author>
  15. <personname>
  16. <firstname></firstname><surname></surname>
  17. </personname>
  18. </author>
  19. <publisher>
  20. <publishername>xtuml.org</publishername>
  21. </publisher>
  22. </articleinfo>
  23. <toc></toc>
  24. <section>
  25. <title>shlaer-mellor-metamodel</title>
  26. <subtitle>Generated Documentation</subtitle>
  27. <para><literallayout xml:space='preserve' class='monospaced'>Please find below generated documentation for the system named shlaer-mellor-metamodel.</literallayout></para>
  28. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  29. <section>
  30. <title>System-Level Packages</title>
  31. <subtitle></subtitle>
  32. <section>
  33. <title>metamodel</title>
  34. <subtitle>Package</subtitle>
  35. <para><literallayout xml:space='preserve' class='monospaced'>A metamodel is a model of a model. The metamodel provides the rules and
  36. constraints of modeling using a particular paradigm.
  37. The metamodel provides no guidance outside of its subject matter. e.g., the
  38. Shlaer-Mellor metamodel provides rules and constraints for modeling using the
  39. Shlaer-Mellor method, but it doesn&apos;&apos;t provides rules and constraints concerning
  40. the representation of the modeling elements.
  41. This allows the modeling to be done using any notation (graphical or text)
  42. that can unambiguously represent the elements used in the modeling.
  43. It also means that the metamodel also doesn&apos;&apos;t say how the model is to be
  44. used. i.e., how it is transformed to machine language, or how it might be run
  45. in simulation.<figure id='shlaer-mellor-metamodel-metamodel-PackageDiagram-figure'>
  46. <title id='shlaer-mellor-metamodel-metamodel-PackageDiagram-figure-title'>metamodel Package Diagram</title>
  47. <mediaobject><imageobject>
  48. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Package Diagram.png' scalefit='1' width='100%'/>
  49. </imageobject></mediaobject>
  50. </figure>
  51. </literallayout></para>
  52. <section>
  53. <title>Shlaer-Mellor Metamodel</title>
  54. <subtitle>Component</subtitle>
  55. <para><literallayout xml:space='preserve' class='monospaced'>Metamodel for Shlaer-Mellor modeling.
  56. A metamodel is used to describe the rules for constructing a model. It
  57. specifies the construction elements and the constraints on the construction
  58. elements. It is the modeled depiction of the modeling method, often done using
  59. the modeling method.
  60. The metamodel for Shlaer-Mellor modeling has the perspective of a single
  61. domain model. All other domains are viewed only as outgoing bridges requiring
  62. outside servicing. All accesses to the domain are viewed as incoming bridges
  63. that evoke actions within the domain model. Therefore, an instance of metamodel
  64. should only be used for verifying a single domain model at a time.
  65. In any descriptions the following annotations are used for quoted material:
  66. [OOSA:MWD]Object-Oriented Systems Analysis: Modeling the World in Data by
  67. Sally Shlaer and Stephen Mellor
  68. [OL:MWS]Object Lifecycles: Modeling the World in States by Sally Shlaer and
  69. Stephen Mellor.
  70. [OOAData] Data Types in OOA by Sally Shlaer and Stephen Mellor
  71. [miUML] www.miuml.org - miUML open source executable uml - Leon Starr and
  72. Andrew Mangogna
  73. [xtUML] Executable UML: A Foundation for Model-driven Architecture by
  74. Stephen J. Mellor and Marc J. Balcer
  75. [Worm] Bridges and Wormholes by Sally Shlaer and Stephen J. Mellor.<figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-ComponentDiagram-figure'>
  76. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-ComponentDiagram-figure-title'>Shlaer-Mellor Metamodel Component Diagram</title>
  77. <mediaobject><imageobject>
  78. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Component Diagram.png' scalefit='1' width='100%'/>
  79. </imageobject></mediaobject>
  80. </figure>
  81. </literallayout></para>
  82. <section>
  83. <title>Shlaer-Mellor Metamodel Packages</title>
  84. <subtitle></subtitle>
  85. <para><literallayout xml:space='preserve' class='monospaced'>Rendered here are the contained package diagrams.</literallayout></para>
  86. <section>
  87. <title>Data</title>
  88. <subtitle>Package</subtitle>
  89. <para><literallayout xml:space='preserve' class='monospaced'>The subsystem of the model concerned with data usage.<figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Data-PackageDiagram-figure'>
  90. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Data-PackageDiagram-figure-title'>Data Package Diagram</title>
  91. <mediaobject><imageobject>
  92. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Data-Package Diagram.png' scalefit='1' width='100%'/>
  93. </imageobject></mediaobject>
  94. </figure>
  95. </literallayout></para>
  96. <section>
  97. <title>Classes</title>
  98. <subtitle></subtitle>
  99. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  100. <title>Classes</title>
  101. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  102. <thead>
  103. <row>
  104. <entry>
  105. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  106. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  107. </imageobject></mediaobject>
  108. </literallayout></para>
  109. </entry>
  110. <entry>
  111. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  112. </entry>
  113. <entry>
  114. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  115. </entry>
  116. </row>
  117. </thead>
  118. <tbody>
  119. <row>
  120. <entry>
  121. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  122. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  123. </imageobject></mediaobject>
  124. </literallayout></para>
  125. </entry>
  126. <entry>
  127. <para><literallayout xml:space='preserve' class='monospaced'>Empty Set</literallayout></para>
  128. </entry>
  129. <entry>
  130. <para><literallayout xml:space='preserve' class='monospaced'>The empty set value is defined for all types, as all types define a set of
  131. values. e.g., 6 is a member of the set defined by the numeric type. The only
  132. legal operations performed on an empty set are population and comparison to the
  133. empty set.
  134. A variable is a subset of a type set, whether the variable contains one
  135. value or many. When a variable is created without value assignment, it is an
  136. empty subset, and it can be thought of as uninitialized, containing no value,
  137. or null/none in common software language terms.</literallayout></para>
  138. </entry>
  139. </row>
  140. <row>
  141. <entry>
  142. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  143. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  144. </imageobject></mediaobject>
  145. </literallayout></para>
  146. </entry>
  147. <entry>
  148. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  149. </entry>
  150. <entry>
  151. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  152. </entry>
  153. </row>
  154. <row>
  155. <entry>
  156. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  157. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  158. </imageobject></mediaobject>
  159. </literallayout></para>
  160. </entry>
  161. <entry>
  162. <para><literallayout xml:space='preserve' class='monospaced'>Operand</literallayout></para>
  163. </entry>
  164. <entry>
  165. <para><literallayout xml:space='preserve' class='monospaced'>An Operand is a participant in an expression or sub-expression of an equation.
  166. All expressions are evaluated with only two operands, the one on the left-hand
  167. side of the operator and the one on the right-hand side of the operator.</literallayout></para>
  168. </entry>
  169. </row>
  170. <row>
  171. <entry>
  172. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  173. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  174. </imageobject></mediaobject>
  175. </literallayout></para>
  176. </entry>
  177. <entry>
  178. <para><literallayout xml:space='preserve' class='monospaced'>usage_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  179. </entry>
  180. <entry>
  181. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  182. </entry>
  183. </row>
  184. <row>
  185. <entry>
  186. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  187. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  188. </imageobject></mediaobject>
  189. </literallayout></para>
  190. </entry>
  191. <entry>
  192. <para><literallayout xml:space='preserve' class='monospaced'>name:string</literallayout></para>
  193. </entry>
  194. <entry>
  195. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  196. </entry>
  197. </row>
  198. <row>
  199. <entry>
  200. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  201. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  202. </imageobject></mediaobject>
  203. </literallayout></para>
  204. </entry>
  205. <entry>
  206. <para><literallayout xml:space='preserve' class='monospaced'>Right Hand Operand</literallayout></para>
  207. </entry>
  208. <entry>
  209. <para><literallayout xml:space='preserve' class='monospaced'>This is the operand on the right-hand side of the operator.
  210. </literallayout></para>
  211. </entry>
  212. </row>
  213. <row>
  214. <entry>
  215. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  216. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  217. </imageobject></mediaobject>
  218. </literallayout></para>
  219. </entry>
  220. <entry>
  221. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  222. </entry>
  223. <entry>
  224. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  225. </entry>
  226. </row>
  227. <row>
  228. <entry>
  229. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  230. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  231. </imageobject></mediaobject>
  232. </literallayout></para>
  233. </entry>
  234. <entry>
  235. <para><literallayout xml:space='preserve' class='monospaced'>Transient Data</literallayout></para>
  236. </entry>
  237. <entry>
  238. <para><literallayout xml:space='preserve' class='monospaced'>Transient data is data that holds it&apos;&apos;s value only for the span of execution of
  239. a process model.</literallayout></para>
  240. </entry>
  241. </row>
  242. <row>
  243. <entry>
  244. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  245. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  246. </imageobject></mediaobject>
  247. </literallayout></para>
  248. </entry>
  249. <entry>
  250. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  251. </entry>
  252. <entry>
  253. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  254. </entry>
  255. </row>
  256. <row>
  257. <entry>
  258. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  259. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  260. </imageobject></mediaobject>
  261. </literallayout></para>
  262. </entry>
  263. <entry>
  264. <para><literallayout xml:space='preserve' class='monospaced'>name:string</literallayout></para>
  265. </entry>
  266. <entry>
  267. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  268. </entry>
  269. </row>
  270. <row>
  271. <entry>
  272. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  273. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  274. </imageobject></mediaobject>
  275. </literallayout></para>
  276. </entry>
  277. <entry>
  278. <para><literallayout xml:space='preserve' class='monospaced'>Value</literallayout></para>
  279. </entry>
  280. <entry>
  281. <para><literallayout xml:space='preserve' class='monospaced'>Values are typed, read-only data, often held in variables.</literallayout></para>
  282. </entry>
  283. </row>
  284. <row>
  285. <entry>
  286. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  287. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  288. </imageobject></mediaobject>
  289. </literallayout></para>
  290. </entry>
  291. <entry>
  292. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  293. </entry>
  294. <entry>
  295. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  296. </entry>
  297. </row>
  298. <row>
  299. <entry>
  300. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  301. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  302. </imageobject></mediaobject>
  303. </literallayout></para>
  304. </entry>
  305. <entry>
  306. <para><literallayout xml:space='preserve' class='monospaced'>Variable</literallayout></para>
  307. </entry>
  308. <entry>
  309. <para><literallayout xml:space='preserve' class='monospaced'>Variables are typed, modifiable instances of data used to hold values for
  310. further processing.
  311. Variables are the only allowed targets of assignment operations.</literallayout></para>
  312. </entry>
  313. </row>
  314. <row>
  315. <entry>
  316. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  317. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  318. </imageobject></mediaobject>
  319. </literallayout></para>
  320. </entry>
  321. <entry>
  322. <para><literallayout xml:space='preserve' class='monospaced'>value_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  323. </entry>
  324. <entry>
  325. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  326. </entry>
  327. </row>
  328. <row>
  329. <entry>
  330. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  331. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  332. </imageobject></mediaobject>
  333. </literallayout></para>
  334. </entry>
  335. <entry>
  336. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  337. </entry>
  338. <entry>
  339. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  340. </entry>
  341. </row>
  342. <row>
  343. <entry>
  344. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  345. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  346. </imageobject></mediaobject>
  347. </literallayout></para>
  348. </entry>
  349. <entry>
  350. <para><literallayout xml:space='preserve' class='monospaced'>Relationship Instance</literallayout></para>
  351. </entry>
  352. <entry>
  353. <para><literallayout xml:space='preserve' class='monospaced'>A relationship instance is the instantiation of an instance relationship. Just
  354. as object instantiations need to be tracked and handled, so do relationships.
  355. This is limited to instance relationships, as associative relationships are
  356. handled as object instances.
  357. The relationship represents a table containing a row for every instance of
  358. the relationship, and a column for each object participating in the
  359. relationship. When looking at the object model, the relationship represent the
  360. empty table. In the process model, the rows of the table are populated. The
  361. rows of the table, then represent relationship instance values.</literallayout></para>
  362. </entry>
  363. </row>
  364. <row>
  365. <entry>
  366. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  367. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  368. </imageobject></mediaobject>
  369. </literallayout></para>
  370. </entry>
  371. <entry>
  372. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  373. </entry>
  374. <entry>
  375. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  376. </entry>
  377. </row>
  378. <row>
  379. <entry>
  380. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  381. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  382. </imageobject></mediaobject>
  383. </literallayout></para>
  384. </entry>
  385. <entry>
  386. <para><literallayout xml:space='preserve' class='monospaced'>left_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  387. </entry>
  388. <entry>
  389. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  390. </entry>
  391. </row>
  392. <row>
  393. <entry>
  394. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  395. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  396. </imageobject></mediaobject>
  397. </literallayout></para>
  398. </entry>
  399. <entry>
  400. <para><literallayout xml:space='preserve' class='monospaced'>right_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  401. </entry>
  402. <entry>
  403. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  404. </entry>
  405. </row>
  406. <row>
  407. <entry>
  408. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  409. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  410. </imageobject></mediaobject>
  411. </literallayout></para>
  412. </entry>
  413. <entry>
  414. <para><literallayout xml:space='preserve' class='monospaced'>relationship_number:same_as&lt;Base_Attribute&gt;</literallayout></para>
  415. </entry>
  416. <entry>
  417. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  418. </entry>
  419. </row>
  420. <row>
  421. <entry>
  422. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  423. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  424. </imageobject></mediaobject>
  425. </literallayout></para>
  426. </entry>
  427. <entry>
  428. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  429. </entry>
  430. <entry>
  431. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  432. </entry>
  433. </row>
  434. <row>
  435. <entry>
  436. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  437. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  438. </imageobject></mediaobject>
  439. </literallayout></para>
  440. </entry>
  441. <entry>
  442. <para><literallayout xml:space='preserve' class='monospaced'>Parameter Instance</literallayout></para>
  443. </entry>
  444. <entry>
  445. <para><literallayout xml:space='preserve' class='monospaced'>A parameter instance models the usage of a parameter in the process models. If
  446. the parameter is being assigned a value in the process model, then it is
  447. considered an activated parameter instance. If the parameter is being
  448. referenced in the process model, it is considered a placeholder parameter
  449. instance. A placeholder parameter instance will be ininitialized, so its
  450. associated value will be the empty set.</literallayout></para>
  451. </entry>
  452. </row>
  453. <row>
  454. <entry>
  455. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  456. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  457. </imageobject></mediaobject>
  458. </literallayout></para>
  459. </entry>
  460. <entry>
  461. <para><literallayout xml:space='preserve' class='monospaced'>accessorInstance_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  462. </entry>
  463. <entry>
  464. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  465. </entry>
  466. </row>
  467. <row>
  468. <entry>
  469. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  470. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  471. </imageobject></mediaobject>
  472. </literallayout></para>
  473. </entry>
  474. <entry>
  475. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  476. </entry>
  477. <entry>
  478. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  479. </entry>
  480. </row>
  481. <row>
  482. <entry>
  483. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  484. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  485. </imageobject></mediaobject>
  486. </literallayout></para>
  487. </entry>
  488. <entry>
  489. <para><literallayout xml:space='preserve' class='monospaced'>accessor_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  490. </entry>
  491. <entry>
  492. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  493. </entry>
  494. </row>
  495. <row>
  496. <entry>
  497. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  498. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  499. </imageobject></mediaobject>
  500. </literallayout></para>
  501. </entry>
  502. <entry>
  503. <para><literallayout xml:space='preserve' class='monospaced'>parameter_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  504. </entry>
  505. <entry>
  506. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  507. </entry>
  508. </row>
  509. <row>
  510. <entry>
  511. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  512. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  513. </imageobject></mediaobject>
  514. </literallayout></para>
  515. </entry>
  516. <entry>
  517. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  518. </entry>
  519. <entry>
  520. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  521. </entry>
  522. </row>
  523. <row>
  524. <entry>
  525. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  526. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  527. </imageobject></mediaobject>
  528. </literallayout></para>
  529. </entry>
  530. <entry>
  531. <para><literallayout xml:space='preserve' class='monospaced'>Outcome</literallayout></para>
  532. </entry>
  533. <entry>
  534. <para><literallayout xml:space='preserve' class='monospaced'>An outcome is the result of an expression or a call to a synchronous accessor
  535. (function).
  536. </literallayout></para>
  537. </entry>
  538. </row>
  539. <row>
  540. <entry>
  541. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  542. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  543. </imageobject></mediaobject>
  544. </literallayout></para>
  545. </entry>
  546. <entry>
  547. <para><literallayout xml:space='preserve' class='monospaced'>equation_id:integer</literallayout></para>
  548. </entry>
  549. <entry>
  550. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  551. </entry>
  552. </row>
  553. <row>
  554. <entry>
  555. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  556. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  557. </imageobject></mediaobject>
  558. </literallayout></para>
  559. </entry>
  560. <entry>
  561. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  562. </entry>
  563. <entry>
  564. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  565. </entry>
  566. </row>
  567. <row>
  568. <entry>
  569. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  570. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  571. </imageobject></mediaobject>
  572. </literallayout></para>
  573. </entry>
  574. <entry>
  575. <para><literallayout xml:space='preserve' class='monospaced'>operand_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  576. </entry>
  577. <entry>
  578. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  579. </entry>
  580. </row>
  581. <row>
  582. <entry>
  583. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  584. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  585. </imageobject></mediaobject>
  586. </literallayout></para>
  587. </entry>
  588. <entry>
  589. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  590. </entry>
  591. <entry>
  592. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  593. </entry>
  594. </row>
  595. <row>
  596. <entry>
  597. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  598. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  599. </imageobject></mediaobject>
  600. </literallayout></para>
  601. </entry>
  602. <entry>
  603. <para><literallayout xml:space='preserve' class='monospaced'>operation_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  604. </entry>
  605. <entry>
  606. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  607. </entry>
  608. </row>
  609. <row>
  610. <entry>
  611. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  612. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  613. </imageobject></mediaobject>
  614. </literallayout></para>
  615. </entry>
  616. <entry>
  617. <para><literallayout xml:space='preserve' class='monospaced'>expression_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  618. </entry>
  619. <entry>
  620. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  621. </entry>
  622. </row>
  623. <row>
  624. <entry>
  625. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  626. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  627. </imageobject></mediaobject>
  628. </literallayout></para>
  629. </entry>
  630. <entry>
  631. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  632. </entry>
  633. <entry>
  634. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  635. </entry>
  636. </row>
  637. <row>
  638. <entry>
  639. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  640. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  641. </imageobject></mediaobject>
  642. </literallayout></para>
  643. </entry>
  644. <entry>
  645. <para><literallayout xml:space='preserve' class='monospaced'>Method Instantiation</literallayout></para>
  646. </entry>
  647. <entry>
  648. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  649. </entry>
  650. </row>
  651. <row>
  652. <entry>
  653. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  654. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  655. </imageobject></mediaobject>
  656. </literallayout></para>
  657. </entry>
  658. <entry>
  659. <para><literallayout xml:space='preserve' class='monospaced'>object_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  660. </entry>
  661. <entry>
  662. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  663. </entry>
  664. </row>
  665. <row>
  666. <entry>
  667. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  668. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  669. </imageobject></mediaobject>
  670. </literallayout></para>
  671. </entry>
  672. <entry>
  673. <para><literallayout xml:space='preserve' class='monospaced'>method_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  674. </entry>
  675. <entry>
  676. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  677. </entry>
  678. </row>
  679. <row>
  680. <entry>
  681. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  682. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  683. </imageobject></mediaobject>
  684. </literallayout></para>
  685. </entry>
  686. <entry>
  687. <para><literallayout xml:space='preserve' class='monospaced'>Left Hand Operand</literallayout></para>
  688. </entry>
  689. <entry>
  690. <para><literallayout xml:space='preserve' class='monospaced'>This is the operand on the left-hand side of the operator.</literallayout></para>
  691. </entry>
  692. </row>
  693. <row>
  694. <entry>
  695. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  696. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  697. </imageobject></mediaobject>
  698. </literallayout></para>
  699. </entry>
  700. <entry>
  701. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  702. </entry>
  703. <entry>
  704. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  705. </entry>
  706. </row>
  707. <row>
  708. <entry>
  709. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  710. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  711. </imageobject></mediaobject>
  712. </literallayout></para>
  713. </entry>
  714. <entry>
  715. <para><literallayout xml:space='preserve' class='monospaced'>Keyword Instance</literallayout></para>
  716. </entry>
  717. <entry>
  718. <para><literallayout xml:space='preserve' class='monospaced'>A keyword is a special directive to the architecture.</literallayout></para>
  719. </entry>
  720. </row>
  721. <row>
  722. <entry>
  723. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  724. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  725. </imageobject></mediaobject>
  726. </literallayout></para>
  727. </entry>
  728. <entry>
  729. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  730. </entry>
  731. <entry>
  732. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  733. </entry>
  734. </row>
  735. <row>
  736. <entry>
  737. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  738. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  739. </imageobject></mediaobject>
  740. </literallayout></para>
  741. </entry>
  742. <entry>
  743. <para><literallayout xml:space='preserve' class='monospaced'>keyword:string</literallayout></para>
  744. </entry>
  745. <entry>
  746. <para><literallayout xml:space='preserve' class='monospaced'>The name of the action the keyword invokes.</literallayout></para>
  747. </entry>
  748. </row>
  749. <row>
  750. <entry>
  751. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  752. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  753. </imageobject></mediaobject>
  754. </literallayout></para>
  755. </entry>
  756. <entry>
  757. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  758. </entry>
  759. <entry>
  760. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  761. </entry>
  762. </row>
  763. <row>
  764. <entry>
  765. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  766. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  767. </imageobject></mediaobject>
  768. </literallayout></para>
  769. </entry>
  770. <entry>
  771. <para><literallayout xml:space='preserve' class='monospaced'>Externally Specialized Value</literallayout></para>
  772. </entry>
  773. <entry>
  774. <para><literallayout xml:space='preserve' class='monospaced'>The externally specialized value is the standard representation of a value that
  775. belongs to a set defined by commonly known types (e.g., the set of numerics).
  776. As the actual value isn&apos;&apos;t that interesting to the metamodel, the attribute,
  777. value_name, is used to allow process model construction within the constraints
  778. the metamodel. This symbolic representation of the value is akin to the use of
  779. defines in C to represent &quot;magic numbers&quot;.</literallayout></para>
  780. </entry>
  781. </row>
  782. <row>
  783. <entry>
  784. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  785. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  786. </imageobject></mediaobject>
  787. </literallayout></para>
  788. </entry>
  789. <entry>
  790. <para><literallayout xml:space='preserve' class='monospaced'>value_name:string</literallayout></para>
  791. </entry>
  792. <entry>
  793. <para><literallayout xml:space='preserve' class='monospaced'>A symbolic representative for the value. In the case of a symbolic value type,
  794. it could be the actual value.</literallayout></para>
  795. </entry>
  796. </row>
  797. <row>
  798. <entry>
  799. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  800. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  801. </imageobject></mediaobject>
  802. </literallayout></para>
  803. </entry>
  804. <entry>
  805. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  806. </entry>
  807. <entry>
  808. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  809. </entry>
  810. </row>
  811. <row>
  812. <entry>
  813. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  814. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  815. </imageobject></mediaobject>
  816. </literallayout></para>
  817. </entry>
  818. <entry>
  819. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  820. </entry>
  821. <entry>
  822. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  823. </entry>
  824. </row>
  825. <row>
  826. <entry>
  827. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  828. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  829. </imageobject></mediaobject>
  830. </literallayout></para>
  831. </entry>
  832. <entry>
  833. <para><literallayout xml:space='preserve' class='monospaced'>Expression</literallayout></para>
  834. </entry>
  835. <entry>
  836. <para><literallayout xml:space='preserve' class='monospaced'>An expression is a statement containing two operands and an operator.
  837. Expression evaluation in the metamodel is done using Reverse Polish
  838. Notation (RPN). The order of construction involves adding the left-hand
  839. operand, the the right-hand operand, and then the operator. This allows the
  840. metamodel to evaluate the expression and produce an outcome.</literallayout></para>
  841. </entry>
  842. </row>
  843. <row>
  844. <entry>
  845. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  846. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  847. </imageobject></mediaobject>
  848. </literallayout></para>
  849. </entry>
  850. <entry>
  851. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  852. </entry>
  853. <entry>
  854. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  855. </entry>
  856. </row>
  857. <row>
  858. <entry>
  859. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  860. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  861. </imageobject></mediaobject>
  862. </literallayout></para>
  863. </entry>
  864. <entry>
  865. <para><literallayout xml:space='preserve' class='monospaced'>rh_operand_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  866. </entry>
  867. <entry>
  868. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  869. </entry>
  870. </row>
  871. <row>
  872. <entry>
  873. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  874. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  875. </imageobject></mediaobject>
  876. </literallayout></para>
  877. </entry>
  878. <entry>
  879. <para><literallayout xml:space='preserve' class='monospaced'>lh_operand_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  880. </entry>
  881. <entry>
  882. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  883. </entry>
  884. </row>
  885. <row>
  886. <entry>
  887. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  888. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  889. </imageobject></mediaobject>
  890. </literallayout></para>
  891. </entry>
  892. <entry>
  893. <para><literallayout xml:space='preserve' class='monospaced'>operator_type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  894. </entry>
  895. <entry>
  896. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  897. </entry>
  898. </row>
  899. <row>
  900. <entry>
  901. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  902. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  903. </imageobject></mediaobject>
  904. </literallayout></para>
  905. </entry>
  906. <entry>
  907. <para><literallayout xml:space='preserve' class='monospaced'>operator_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  908. </entry>
  909. <entry>
  910. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  911. </entry>
  912. </row>
  913. <row>
  914. <entry>
  915. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  916. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  917. </imageobject></mediaobject>
  918. </literallayout></para>
  919. </entry>
  920. <entry>
  921. <para><literallayout xml:space='preserve' class='monospaced'>equation_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  922. </entry>
  923. <entry>
  924. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  925. </entry>
  926. </row>
  927. <row>
  928. <entry>
  929. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  930. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  931. </imageobject></mediaobject>
  932. </literallayout></para>
  933. </entry>
  934. <entry>
  935. <para><literallayout xml:space='preserve' class='monospaced'>ordinal_position:integer</literallayout></para>
  936. </entry>
  937. <entry>
  938. <para><literallayout xml:space='preserve' class='monospaced'>Indicates the execution order of the expression within the equation.</literallayout></para>
  939. </entry>
  940. </row>
  941. <row>
  942. <entry>
  943. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  944. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  945. </imageobject></mediaobject>
  946. </literallayout></para>
  947. </entry>
  948. <entry>
  949. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  950. </entry>
  951. <entry>
  952. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  953. </entry>
  954. </row>
  955. <row>
  956. <entry>
  957. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  958. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  959. </imageobject></mediaobject>
  960. </literallayout></para>
  961. </entry>
  962. <entry>
  963. <para><literallayout xml:space='preserve' class='monospaced'>Data Usage</literallayout></para>
  964. </entry>
  965. <entry>
  966. <para><literallayout xml:space='preserve' class='monospaced'>Data is used in Shlaer-Mellor via variable or value accesses. Data is always
  967. typed.</literallayout></para>
  968. </entry>
  969. </row>
  970. <row>
  971. <entry>
  972. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  973. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  974. </imageobject></mediaobject>
  975. </literallayout></para>
  976. </entry>
  977. <entry>
  978. <para><literallayout xml:space='preserve' class='monospaced'>reference_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  979. </entry>
  980. <entry>
  981. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  982. </entry>
  983. </row>
  984. <row>
  985. <entry>
  986. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  987. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  988. </imageobject></mediaobject>
  989. </literallayout></para>
  990. </entry>
  991. <entry>
  992. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  993. </entry>
  994. <entry>
  995. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  996. </entry>
  997. </row>
  998. <row>
  999. <entry>
  1000. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1001. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1002. </imageobject></mediaobject>
  1003. </literallayout></para>
  1004. </entry>
  1005. <entry>
  1006. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  1007. </entry>
  1008. <entry>
  1009. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1010. </entry>
  1011. </row>
  1012. <row>
  1013. <entry>
  1014. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1015. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  1016. </imageobject></mediaobject>
  1017. </literallayout></para>
  1018. </entry>
  1019. <entry>
  1020. <para><literallayout xml:space='preserve' class='monospaced'>Attribute Instance</literallayout></para>
  1021. </entry>
  1022. <entry>
  1023. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1024. </entry>
  1025. </row>
  1026. <row>
  1027. <entry>
  1028. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1029. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1030. </imageobject></mediaobject>
  1031. </literallayout></para>
  1032. </entry>
  1033. <entry>
  1034. <para><literallayout xml:space='preserve' class='monospaced'>object_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  1035. </entry>
  1036. <entry>
  1037. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1038. </entry>
  1039. </row>
  1040. <row>
  1041. <entry>
  1042. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1043. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1044. </imageobject></mediaobject>
  1045. </literallayout></para>
  1046. </entry>
  1047. <entry>
  1048. <para><literallayout xml:space='preserve' class='monospaced'>attribute_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  1049. </entry>
  1050. <entry>
  1051. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1052. </entry>
  1053. </row>
  1054. <row>
  1055. <entry>
  1056. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1057. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1058. </imageobject></mediaobject>
  1059. </literallayout></para>
  1060. </entry>
  1061. <entry>
  1062. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  1063. </entry>
  1064. <entry>
  1065. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1066. </entry>
  1067. </row>
  1068. <row>
  1069. <entry>
  1070. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1071. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  1072. </imageobject></mediaobject>
  1073. </literallayout></para>
  1074. </entry>
  1075. <entry>
  1076. <para><literallayout xml:space='preserve' class='monospaced'>Accessor Instance</literallayout></para>
  1077. </entry>
  1078. <entry>
  1079. <para><literallayout xml:space='preserve' class='monospaced'>An accessor instance is instantiated in a process model to represent the
  1080. acccessor at that point of access.
  1081. An instantiation is needed so the accessor can be represented with
  1082. different parameter data sets at different places in the process model or
  1083. within different process models in the domain.</literallayout></para>
  1084. </entry>
  1085. </row>
  1086. <row>
  1087. <entry>
  1088. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1089. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1090. </imageobject></mediaobject>
  1091. </literallayout></para>
  1092. </entry>
  1093. <entry>
  1094. <para><literallayout xml:space='preserve' class='monospaced'>accessor_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  1095. </entry>
  1096. <entry>
  1097. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1098. </entry>
  1099. </row>
  1100. <row>
  1101. <entry>
  1102. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1103. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1104. </imageobject></mediaobject>
  1105. </literallayout></para>
  1106. </entry>
  1107. <entry>
  1108. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  1109. </entry>
  1110. <entry>
  1111. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1112. </entry>
  1113. </row>
  1114. <row>
  1115. <entry>
  1116. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1117. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1118. </imageobject></mediaobject>
  1119. </literallayout></para>
  1120. </entry>
  1121. <entry>
  1122. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  1123. </entry>
  1124. <entry>
  1125. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1126. </entry>
  1127. </row>
  1128. </tbody>
  1129. </tgroup>
  1130. </table>
  1131. </literallayout></para>
  1132. <section>
  1133. <title>Class Activities</title>
  1134. <subtitle></subtitle>
  1135. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  1136. <section>
  1137. <title>Class Operations</title>
  1138. <subtitle></subtitle>
  1139. <section>
  1140. <title>Data:Operand: delete</title>
  1141. <subtitle></subtitle>
  1142. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1143. <para><programlisting>select one out related by self-&gt;OUT[R618];
  1144. if (not empty out)
  1145. unrelate self from out across R618;
  1146. end if;
  1147. select one lho related by self-&gt;LHO[R615];
  1148. if (not empty lho)
  1149. unrelate self from lho across R615;
  1150. select one exp related by lho-&gt;EXP[R616];
  1151. unrelate lho from exp across R616;
  1152. delete object instance lho;
  1153. select one equ related by exp-&gt;EQU[R622];
  1154. equ.delete();
  1155. else
  1156. select one rho related by self-&gt;RHO[R615];
  1157. if (not empty rho)
  1158. unrelate self from rho across R615;
  1159. select one exp related by rho-&gt;EXP[R617];
  1160. unrelate rho from exp across R617;
  1161. delete object instance rho;
  1162. select one equ related by exp-&gt;EQU[R622];
  1163. equ.delete();
  1164. end if;
  1165. end if;
  1166. </programlisting></para>
  1167. </section>
  1168. </section>
  1169. </section>
  1170. <section>
  1171. <title>Class Activities</title>
  1172. <subtitle></subtitle>
  1173. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  1174. <section>
  1175. <title>Class Operations</title>
  1176. <subtitle></subtitle>
  1177. <section>
  1178. <title>Data:Transient Data: delete</title>
  1179. <subtitle></subtitle>
  1180. <para><literallayout xml:space='preserve' class='monospaced'>Delete the transient data instance.
  1181. </literallayout></para>
  1182. <para><programlisting>select one var related by self-&gt;VAR[R626];
  1183. select one val related by var-&gt;VAL[R635];
  1184. unrelate var from val across R635;
  1185. unrelate self from var across R626;
  1186. select one dus related by var-&gt;DUS[R624];
  1187. unrelate var from dus across R624;
  1188. delete object instance var;
  1189. dus.delete();
  1190. delete object instance dus;
  1191. </programlisting></para>
  1192. </section>
  1193. </section>
  1194. </section>
  1195. <section>
  1196. <title>Class Activities</title>
  1197. <subtitle></subtitle>
  1198. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  1199. <section>
  1200. <title>Class Operations</title>
  1201. <subtitle></subtitle>
  1202. <section>
  1203. <title>Data:Relationship Instance: delete</title>
  1204. <subtitle></subtitle>
  1205. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1206. <para><programlisting>select one rref related by self-&gt;RREF[R421];
  1207. unrelate self from rref across R421;
  1208. select one irl related by self-&gt;IRL[R638];
  1209. unrelate self from irl across R638;
  1210. select one rins related by self-&gt;INS[R120.&apos;&apos;&apos;&apos;];
  1211. select one lins related by self-&gt;INS[R120.&apos;&apos;is related to&apos;&apos;];
  1212. if (not empty rins and not empty lins)
  1213. unrelate lins from rins across R120.&apos;&apos;is related to&apos;&apos; using self;
  1214. end if;
  1215. select one val related by self-&gt;VAL[R629];
  1216. unrelate self from val across R629;
  1217. select one dus related by val-&gt;DUS[R624];
  1218. unrelate val from dus across R624;
  1219. delete object instance val;
  1220. dus.delete();
  1221. delete object instance dus;
  1222. </programlisting></para>
  1223. </section>
  1224. </section>
  1225. </section>
  1226. <section>
  1227. <title>Class Activities</title>
  1228. <subtitle></subtitle>
  1229. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  1230. <section>
  1231. <title>Class Operations</title>
  1232. <subtitle></subtitle>
  1233. <section>
  1234. <title>Data:Parameter Instance: delete</title>
  1235. <subtitle></subtitle>
  1236. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1237. <para><programlisting>select one prm related by self-&gt;PRM[R645];
  1238. unrelate self from prm across R645;
  1239. select one ain related by self-&gt;AIN[R647];
  1240. if (not empty ain)
  1241. unrelate self from ain across R647;
  1242. end if;
  1243. select one var related by self-&gt;VAR[R626];
  1244. unrelate self from var across R626;
  1245. select one val related by var-&gt;VAL[R635];
  1246. unrelate var from val across R635;
  1247. select one dus related by var-&gt;DUS[R624];
  1248. unrelate var from dus across R624;
  1249. delete object instance var;
  1250. dus.delete();
  1251. delete object instance dus;
  1252. </programlisting></para>
  1253. </section>
  1254. <section>
  1255. <title>Data:Parameter Instance: addToProcessModel</title>
  1256. <subtitle></subtitle>
  1257. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1258. <para><programlisting>
  1259. select any pro from instances of PRO where ( selected.action_id == param.actionId ) and ( selected.ordinal_position == param.ordinalPosition );
  1260. create object instance ela of ELA;
  1261. select one re related by self-&gt;VAR[R626]-&gt;DUS[R624]-&gt;RE[R514];
  1262. relate re to pro across R502 using ela;
  1263. </programlisting></para>
  1264. </section>
  1265. </section>
  1266. </section>
  1267. <section>
  1268. <title>Class Activities</title>
  1269. <subtitle></subtitle>
  1270. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  1271. <section>
  1272. <title>Class Operations</title>
  1273. <subtitle></subtitle>
  1274. <section>
  1275. <title>Data:Data Usage: delete</title>
  1276. <subtitle></subtitle>
  1277. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1278. <para><programlisting>select one type related by self-&gt;TYPE[R625];
  1279. unrelate self from type across R625;
  1280. select one re related by self-&gt;RE[R514];
  1281. unrelate self from re across R514;
  1282. re.delete();
  1283. delete object instance re;
  1284. select many oprds related by self-&gt;OPRD[R631];
  1285. for each oprd in oprds
  1286. oprd.delete();
  1287. delete object instance oprd;
  1288. end for;
  1289. </programlisting></para>
  1290. </section>
  1291. </section>
  1292. </section>
  1293. <section>
  1294. <title>Class Activities</title>
  1295. <subtitle></subtitle>
  1296. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  1297. <section>
  1298. <title>Class Operations</title>
  1299. <subtitle></subtitle>
  1300. <section>
  1301. <title>Data:Attribute Instance: delete</title>
  1302. <subtitle></subtitle>
  1303. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1304. <para><programlisting>select one nra related by self-&gt;NRA[R642];
  1305. unrelate self from nra across R642;
  1306. select one ins related by self-&gt;INS[R643];
  1307. if (not empty ins)
  1308. unrelate self from ins across R643;
  1309. end if;
  1310. select one var related by self-&gt;VAR[R626];
  1311. unrelate self from var across R626;
  1312. select one val related by var-&gt;VAL[R635];
  1313. unrelate var from val across R635;
  1314. select one dus related by var-&gt;DUS[R624];
  1315. unrelate var from dus across R624;
  1316. delete object instance var;
  1317. dus.delete();
  1318. delete object instance dus;
  1319. </programlisting></para>
  1320. </section>
  1321. </section>
  1322. </section>
  1323. <section>
  1324. <title>Class Activities</title>
  1325. <subtitle></subtitle>
  1326. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  1327. <section>
  1328. <title>Class Operations</title>
  1329. <subtitle></subtitle>
  1330. <section>
  1331. <title>Data:Accessor Instance: delete</title>
  1332. <subtitle></subtitle>
  1333. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1334. <para><programlisting>select many prns related by self-&gt;PRN[R647];
  1335. for each prn in prns
  1336. prn.delete();
  1337. delete object instance prn;
  1338. end for;
  1339. select one ins related by self-&gt;INS[R648];
  1340. if (not empty ins)
  1341. select one min related by self-&gt;MIN[R648];
  1342. unrelate self from ins across R648 using min;
  1343. end if;
  1344. select one val related by self-&gt;VAL[R629];
  1345. unrelate self from val across R629;
  1346. select one dus related by val-&gt;DUS[R624];
  1347. unrelate val from dus across R624;
  1348. delete object instance val;
  1349. dus.delete();
  1350. delete object instance dus;
  1351. </programlisting></para>
  1352. </section>
  1353. <section>
  1354. <title>Data:Accessor Instance: addToProcessModel</title>
  1355. <subtitle></subtitle>
  1356. <para><literallayout xml:space='preserve' class='monospaced'>Adds an instantiated accessor to the specified process model. </literallayout></para>
  1357. <para><programlisting>select one re related by self-&gt;VAL[R629]-&gt;DUS[R624]-&gt;RE[R514];
  1358. select any pro from instances of PRO where (selected.action_id == param.actionId) and (selected.ordinal_position == param.ordinalPosition);
  1359. create object instance ela of ELA;
  1360. relate re to pro across R502 using ela;
  1361. select many prns related by self-&gt;PRN[R647];
  1362. for each prn in prns
  1363. prn.addToProcessModel( actionId:param.actionId, ordinalPosition:param.ordinalPosition );
  1364. end for;
  1365. </programlisting></para>
  1366. </section>
  1367. </section>
  1368. </section>
  1369. </section>
  1370. <section>
  1371. <title>Associations</title>
  1372. <subtitle>Associations</subtitle>
  1373. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  1374. <title>Data</title>
  1375. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  1376. <thead>
  1377. <row>
  1378. <entry>
  1379. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1380. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1381. </imageobject></mediaobject>
  1382. </literallayout></para>
  1383. </entry>
  1384. <entry>
  1385. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  1386. </entry>
  1387. <entry>
  1388. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  1389. </entry>
  1390. </row>
  1391. </thead>
  1392. <tbody>
  1393. <row>
  1394. <entry>
  1395. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1396. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1397. </imageobject></mediaobject>
  1398. </literallayout></para>
  1399. </entry>
  1400. <entry>
  1401. <para><literallayout xml:space='preserve' class='monospaced'>611</literallayout></para>
  1402. </entry>
  1403. <entry>
  1404. <para><literallayout xml:space='preserve' class='monospaced'>An expression results in an outcome. The outcome is the result of an expression.</literallayout></para>
  1405. </entry>
  1406. </row>
  1407. <row>
  1408. <entry>
  1409. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1410. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1411. </imageobject></mediaobject>
  1412. </literallayout></para>
  1413. </entry>
  1414. <entry>
  1415. <para><literallayout xml:space='preserve' class='monospaced'>615</literallayout></para>
  1416. </entry>
  1417. <entry>
  1418. <para><literallayout xml:space='preserve' class='monospaced'>An operand will be considered the left-hand or right-hand operand participating
  1419. in the expression.
  1420. </literallayout></para>
  1421. </entry>
  1422. </row>
  1423. <row>
  1424. <entry>
  1425. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1426. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1427. </imageobject></mediaobject>
  1428. </literallayout></para>
  1429. </entry>
  1430. <entry>
  1431. <para><literallayout xml:space='preserve' class='monospaced'>616</literallayout></para>
  1432. </entry>
  1433. <entry>
  1434. <para><literallayout xml:space='preserve' class='monospaced'>An expression can use a left-hand operand, and a left-hand operand is always
  1435. used in an expression.
  1436. The boolean operator, not, is an example of an expression without a left
  1437. hand operand.</literallayout></para>
  1438. </entry>
  1439. </row>
  1440. <row>
  1441. <entry>
  1442. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1443. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1444. </imageobject></mediaobject>
  1445. </literallayout></para>
  1446. </entry>
  1447. <entry>
  1448. <para><literallayout xml:space='preserve' class='monospaced'>617</literallayout></para>
  1449. </entry>
  1450. <entry>
  1451. <para><literallayout xml:space='preserve' class='monospaced'>An expression uses a right-hand operand, and a right-hand operand is used in an
  1452. expression.
  1453. </literallayout></para>
  1454. </entry>
  1455. </row>
  1456. <row>
  1457. <entry>
  1458. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1459. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1460. </imageobject></mediaobject>
  1461. </literallayout></para>
  1462. </entry>
  1463. <entry>
  1464. <para><literallayout xml:space='preserve' class='monospaced'>618</literallayout></para>
  1465. </entry>
  1466. <entry>
  1467. <para><literallayout xml:space='preserve' class='monospaced'>An outcome results in an operand. This is always true, because assignment is an
  1468. operator, and there is no reason to have an expression without an assignment.
  1469. An operand isn&apos;&apos;t always the result of an outcome.
  1470. Note: in complex equations, there are multiple outcomes and the production of
  1471. temporary operands. e.g., x = (a + 5) * (a - 2), and a = 3:
  1472. LHO1 = x; LHO2 = a; LHO3 = a; TYOP1 = &apos;&apos;+&apos;&apos;; RHO1 = 5; RHO2 = 2; TYOP2 = &apos;&apos;+&apos;&apos;.
  1473. LHO1 = x; OUT1 = 8; LHO4 = 8; OUT2 = 1; RHO3 = 1. TYOP3 = &apos;&apos;*&apos;&apos;;
  1474. LHO1 = x; OUT3 = 8; RHO4 = 8. TYOP4 = &apos;&apos;=&apos;&apos;.
  1475. OUT4 = 8; LHO5 = 8.
  1476. </literallayout></para>
  1477. </entry>
  1478. </row>
  1479. <row>
  1480. <entry>
  1481. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1482. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1483. </imageobject></mediaobject>
  1484. </literallayout></para>
  1485. </entry>
  1486. <entry>
  1487. <para><literallayout xml:space='preserve' class='monospaced'>622</literallayout></para>
  1488. </entry>
  1489. <entry>
  1490. <para><literallayout xml:space='preserve' class='monospaced'>An equation includes one or more expressions. The expressions compose the
  1491. equation.
  1492. Equation evaluation in the metamodel is done using Reverse Polish Notation
  1493. (RPN). The order of construction involves evaluating the left-most expression,
  1494. then evaluating the right-most expression, and then the operator. The metamodel
  1495. uses the ordinal position of the expression to decide evaluation order.</literallayout></para>
  1496. </entry>
  1497. </row>
  1498. <row>
  1499. <entry>
  1500. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1501. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1502. </imageobject></mediaobject>
  1503. </literallayout></para>
  1504. </entry>
  1505. <entry>
  1506. <para><literallayout xml:space='preserve' class='monospaced'>624</literallayout></para>
  1507. </entry>
  1508. <entry>
  1509. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1510. </entry>
  1511. </row>
  1512. <row>
  1513. <entry>
  1514. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1515. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1516. </imageobject></mediaobject>
  1517. </literallayout></para>
  1518. </entry>
  1519. <entry>
  1520. <para><literallayout xml:space='preserve' class='monospaced'>625</literallayout></para>
  1521. </entry>
  1522. <entry>
  1523. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1524. </entry>
  1525. </row>
  1526. <row>
  1527. <entry>
  1528. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1529. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1530. </imageobject></mediaobject>
  1531. </literallayout></para>
  1532. </entry>
  1533. <entry>
  1534. <para><literallayout xml:space='preserve' class='monospaced'>626</literallayout></para>
  1535. </entry>
  1536. <entry>
  1537. <para><literallayout xml:space='preserve' class='monospaced'>The variable data is transient data used by Process Models, attributes of
  1538. object instances, or parameters of accessor instances.</literallayout></para>
  1539. </entry>
  1540. </row>
  1541. <row>
  1542. <entry>
  1543. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1544. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1545. </imageobject></mediaobject>
  1546. </literallayout></para>
  1547. </entry>
  1548. <entry>
  1549. <para><literallayout xml:space='preserve' class='monospaced'>629</literallayout></para>
  1550. </entry>
  1551. <entry>
  1552. <para><literallayout xml:space='preserve' class='monospaced'>The specialization of all values used in Shlaer-Mellor modeling.</literallayout></para>
  1553. </entry>
  1554. </row>
  1555. <row>
  1556. <entry>
  1557. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1558. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1559. </imageobject></mediaobject>
  1560. </literallayout></para>
  1561. </entry>
  1562. <entry>
  1563. <para><literallayout xml:space='preserve' class='monospaced'>631</literallayout></para>
  1564. </entry>
  1565. <entry>
  1566. <para><literallayout xml:space='preserve' class='monospaced'>An operand represents one data usage, and data usage can be represented by many
  1567. operands.
  1568. Even though an equation can be further broken down in a way that&apos;&apos;s not visible
  1569. to the analyst, the break down represents atomic pieces of data usage, so while
  1570. there are many data usages through the break downs in an operand, each
  1571. individual break down is what is modeled by this relationship.
  1572. e.g., x = func(z) + (y * z) breaks down to:
  1573. * value of y times the value of z is assigned to invisible transient variable r.
  1574. * value of z is assigned to parameter of func(), p.
  1575. * return value of func(p) is assigned to invisible transient variable q.
  1576. * value of q plus the value of r is assigned to x.
  1577. 10 data usages(6 values + 4 variables), 10 operands</literallayout></para>
  1578. </entry>
  1579. </row>
  1580. <row>
  1581. <entry>
  1582. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1583. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1584. </imageobject></mediaobject>
  1585. </literallayout></para>
  1586. </entry>
  1587. <entry>
  1588. <para><literallayout xml:space='preserve' class='monospaced'>632</literallayout></para>
  1589. </entry>
  1590. <entry>
  1591. <para><literallayout xml:space='preserve' class='monospaced'>An expression uses a typed operator, but a typed operator can be used in many
  1592. expressions, even in the same equation.</literallayout></para>
  1593. </entry>
  1594. </row>
  1595. <row>
  1596. <entry>
  1597. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1598. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1599. </imageobject></mediaobject>
  1600. </literallayout></para>
  1601. </entry>
  1602. <entry>
  1603. <para><literallayout xml:space='preserve' class='monospaced'>634</literallayout></para>
  1604. </entry>
  1605. <entry>
  1606. <para><literallayout xml:space='preserve' class='monospaced'>The outcome of an expression is typed by the typed operator&apos;&apos;s result type.</literallayout></para>
  1607. </entry>
  1608. </row>
  1609. <row>
  1610. <entry>
  1611. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1612. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1613. </imageobject></mediaobject>
  1614. </literallayout></para>
  1615. </entry>
  1616. <entry>
  1617. <para><literallayout xml:space='preserve' class='monospaced'>635</literallayout></para>
  1618. </entry>
  1619. <entry>
  1620. <para><literallayout xml:space='preserve' class='monospaced'>Values can be assigned to one or more variables at any given time, and a
  1621. variable always has an assigned value. If no explicit assignment has been made,
  1622. then the variable holds the default value for the data type.
  1623. Values exist without variables. Consider the set of numeric values. It
  1624. would be wrong to suggest the numeral one or the decimal one-half don&apos;&apos;t exist
  1625. in the absence of a variable.
  1626. Variables in action language aren&apos;&apos;t created or typed without assignment
  1627. (explicit or implicit), so there&apos;&apos;s no reason to assume an untyped (no default)
  1628. variable would exist per this metamodel.</literallayout></para>
  1629. </entry>
  1630. </row>
  1631. <row>
  1632. <entry>
  1633. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1634. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1635. </imageobject></mediaobject>
  1636. </literallayout></para>
  1637. </entry>
  1638. <entry>
  1639. <para><literallayout xml:space='preserve' class='monospaced'>636</literallayout></para>
  1640. </entry>
  1641. <entry>
  1642. <para><literallayout xml:space='preserve' class='monospaced'>An unspecialized value always belongs to the set defined by a type. A type
  1643. provides the definition for all of it&apos;&apos;s values.
  1644. This relationship requires creation of a value for every type. While this
  1645. seems onerous, the relationship between value and variable implies that a
  1646. default value exists for every type, therefore the values required by this
  1647. relationship compose the set of default values.</literallayout></para>
  1648. </entry>
  1649. </row>
  1650. <row>
  1651. <entry>
  1652. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1653. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1654. </imageobject></mediaobject>
  1655. </literallayout></para>
  1656. </entry>
  1657. <entry>
  1658. <para><literallayout xml:space='preserve' class='monospaced'>638</literallayout></para>
  1659. </entry>
  1660. <entry>
  1661. <para><literallayout xml:space='preserve' class='monospaced'>A relationship instance instantiates one instance relationship, and an instance
  1662. relationship can be instantiated by many relationship instances.</literallayout></para>
  1663. </entry>
  1664. </row>
  1665. <row>
  1666. <entry>
  1667. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1668. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1669. </imageobject></mediaobject>
  1670. </literallayout></para>
  1671. </entry>
  1672. <entry>
  1673. <para><literallayout xml:space='preserve' class='monospaced'>640</literallayout></para>
  1674. </entry>
  1675. <entry>
  1676. <para><literallayout xml:space='preserve' class='monospaced'>A accessor instance instantiates one accessor, and an accessor can be
  1677. instantiated by many accessor instances.
  1678. </literallayout></para>
  1679. </entry>
  1680. </row>
  1681. <row>
  1682. <entry>
  1683. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1684. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1685. </imageobject></mediaobject>
  1686. </literallayout></para>
  1687. </entry>
  1688. <entry>
  1689. <para><literallayout xml:space='preserve' class='monospaced'>642</literallayout></para>
  1690. </entry>
  1691. <entry>
  1692. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1693. </entry>
  1694. </row>
  1695. <row>
  1696. <entry>
  1697. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1698. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1699. </imageobject></mediaobject>
  1700. </literallayout></para>
  1701. </entry>
  1702. <entry>
  1703. <para><literallayout xml:space='preserve' class='monospaced'>643</literallayout></para>
  1704. </entry>
  1705. <entry>
  1706. <para><literallayout xml:space='preserve' class='monospaced'>An object instance owns one or more attribute instances, and an attribute
  1707. instance always belongs to one object instance. </literallayout></para>
  1708. </entry>
  1709. </row>
  1710. <row>
  1711. <entry>
  1712. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1713. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1714. </imageobject></mediaobject>
  1715. </literallayout></para>
  1716. </entry>
  1717. <entry>
  1718. <para><literallayout xml:space='preserve' class='monospaced'>645</literallayout></para>
  1719. </entry>
  1720. <entry>
  1721. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1722. </entry>
  1723. </row>
  1724. <row>
  1725. <entry>
  1726. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1727. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1728. </imageobject></mediaobject>
  1729. </literallayout></para>
  1730. </entry>
  1731. <entry>
  1732. <para><literallayout xml:space='preserve' class='monospaced'>647</literallayout></para>
  1733. </entry>
  1734. <entry>
  1735. <para><literallayout xml:space='preserve' class='monospaced'>A parameter instance belongs to an accessor instance, and an accessor instance
  1736. can have many parameter instances.</literallayout></para>
  1737. </entry>
  1738. </row>
  1739. <row>
  1740. <entry>
  1741. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1742. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  1743. </imageobject></mediaobject>
  1744. </literallayout></para>
  1745. </entry>
  1746. <entry>
  1747. <para><literallayout xml:space='preserve' class='monospaced'>648</literallayout></para>
  1748. </entry>
  1749. <entry>
  1750. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1751. </entry>
  1752. </row>
  1753. </tbody>
  1754. </tgroup>
  1755. </table>
  1756. </literallayout></para>
  1757. </section>
  1758. </section>
  1759. <section>
  1760. <title>Domain</title>
  1761. <subtitle>Package</subtitle>
  1762. <para><literallayout xml:space='preserve' class='monospaced'>The subsystem of the metamodel concerning domains.<figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Domain-PackageDiagram-figure'>
  1763. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Domain-PackageDiagram-figure-title'>Domain Package Diagram</title>
  1764. <mediaobject><imageobject>
  1765. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Domain-Package Diagram.png' scalefit='1' width='100%'/>
  1766. </imageobject></mediaobject>
  1767. </figure>
  1768. </literallayout></para>
  1769. <section>
  1770. <title>Classes</title>
  1771. <subtitle></subtitle>
  1772. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  1773. <title>Classes</title>
  1774. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  1775. <thead>
  1776. <row>
  1777. <entry>
  1778. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1779. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  1780. </imageobject></mediaobject>
  1781. </literallayout></para>
  1782. </entry>
  1783. <entry>
  1784. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  1785. </entry>
  1786. <entry>
  1787. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  1788. </entry>
  1789. </row>
  1790. </thead>
  1791. <tbody>
  1792. <row>
  1793. <entry>
  1794. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1795. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  1796. </imageobject></mediaobject>
  1797. </literallayout></para>
  1798. </entry>
  1799. <entry>
  1800. <para><literallayout xml:space='preserve' class='monospaced'>Domain</literallayout></para>
  1801. </entry>
  1802. <entry>
  1803. <para><literallayout xml:space='preserve' class='monospaced'>&quot;A domain is a separate real, hypothetical, or abstract world inhabited by a
  1804. distinct set of objects that behave according to the rules and policies
  1805. characteristic of the domain.&quot; [OL:MWS]</literallayout></para>
  1806. </entry>
  1807. </row>
  1808. <row>
  1809. <entry>
  1810. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1811. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1812. </imageobject></mediaobject>
  1813. </literallayout></para>
  1814. </entry>
  1815. <entry>
  1816. <para><literallayout xml:space='preserve' class='monospaced'>name:string</literallayout></para>
  1817. </entry>
  1818. <entry>
  1819. <para><literallayout xml:space='preserve' class='monospaced'>The descriptive identifier for the domain.</literallayout></para>
  1820. </entry>
  1821. </row>
  1822. <row>
  1823. <entry>
  1824. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1825. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  1826. </imageobject></mediaobject>
  1827. </literallayout></para>
  1828. </entry>
  1829. <entry>
  1830. <para><literallayout xml:space='preserve' class='monospaced'>External Domain</literallayout></para>
  1831. </entry>
  1832. <entry>
  1833. <para><literallayout xml:space='preserve' class='monospaced'>An external domain is a domain that requires or provides services to the domain
  1834. being modeled. An external domain can be another Shlaer-Mellor modeled domain
  1835. or a realized domain.
  1836. The realized domain can be modeled using some other modeling method, might
  1837. be existing code, or might be an executable. The bridges from a modeled domain
  1838. to a realized domain are defined in the model with respect to the modeled
  1839. domain&apos;&apos;s requirements, and they can require some extra integration logic,
  1840. external to the model, to meet the needs of the realized domain.</literallayout></para>
  1841. </entry>
  1842. </row>
  1843. <row>
  1844. <entry>
  1845. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1846. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1847. </imageobject></mediaobject>
  1848. </literallayout></para>
  1849. </entry>
  1850. <entry>
  1851. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  1852. </entry>
  1853. <entry>
  1854. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1855. </entry>
  1856. </row>
  1857. <row>
  1858. <entry>
  1859. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1860. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  1861. </imageobject></mediaobject>
  1862. </literallayout></para>
  1863. </entry>
  1864. <entry>
  1865. <para><literallayout xml:space='preserve' class='monospaced'>Modeled Domain</literallayout></para>
  1866. </entry>
  1867. <entry>
  1868. <para><literallayout xml:space='preserve' class='monospaced'>A modeled domain is a domain that has been modeled in accordance with the rules
  1869. of the Shlaer-Mellor metamodel.</literallayout></para>
  1870. </entry>
  1871. </row>
  1872. <row>
  1873. <entry>
  1874. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1875. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1876. </imageobject></mediaobject>
  1877. </literallayout></para>
  1878. </entry>
  1879. <entry>
  1880. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  1881. </entry>
  1882. <entry>
  1883. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1884. </entry>
  1885. </row>
  1886. <row>
  1887. <entry>
  1888. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1889. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  1890. </imageobject></mediaobject>
  1891. </literallayout></para>
  1892. </entry>
  1893. <entry>
  1894. <para><literallayout xml:space='preserve' class='monospaced'>Synchronous Bridge</literallayout></para>
  1895. </entry>
  1896. <entry>
  1897. <para><literallayout xml:space='preserve' class='monospaced'>A synchronous bridge always returns data to the caller in a timely fashion.
  1898. Timely should be defined by the domain providing the service.
  1899. A synchronous bridge provided by another domain can launch asynchronous
  1900. actions to obtain the return value, but this domain will be blocked while
  1901. waiting on the actions to complete. The analyst should take this into
  1902. consideration. If the external domain definition of timely doesn&apos;&apos;t match the
  1903. modeled domain definition of timely, then some mechanism must be put in place
  1904. to allow the bridge to be treated as an asynchronous bridge.
  1905. Special considerations:
  1906. A synchronous service is used to access a data value from an external domain.
  1907. NOTE: It is legal for the domain being modeled to call its own synchronous
  1908. service as well.</literallayout></para>
  1909. </entry>
  1910. </row>
  1911. <row>
  1912. <entry>
  1913. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1914. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1915. </imageobject></mediaobject>
  1916. </literallayout></para>
  1917. </entry>
  1918. <entry>
  1919. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  1920. </entry>
  1921. <entry>
  1922. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1923. </entry>
  1924. </row>
  1925. <row>
  1926. <entry>
  1927. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1928. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1929. </imageobject></mediaobject>
  1930. </literallayout></para>
  1931. </entry>
  1932. <entry>
  1933. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  1934. </entry>
  1935. <entry>
  1936. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1937. </entry>
  1938. </row>
  1939. <row>
  1940. <entry>
  1941. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1942. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  1943. </imageobject></mediaobject>
  1944. </literallayout></para>
  1945. </entry>
  1946. <entry>
  1947. <para><literallayout xml:space='preserve' class='monospaced'>Outgoing Bridge</literallayout></para>
  1948. </entry>
  1949. <entry>
  1950. <para><literallayout xml:space='preserve' class='monospaced'>An outgoing bridge is the requirement the domain being modeled places on an
  1951. external domain for services. A synchronous, outgoing bridge is expected to
  1952. return data from the external domain. An asynchronous, outgoing bridge is
  1953. expected to invoke some action in the external domain.</literallayout></para>
  1954. </entry>
  1955. </row>
  1956. <row>
  1957. <entry>
  1958. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1959. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1960. </imageobject></mediaobject>
  1961. </literallayout></para>
  1962. </entry>
  1963. <entry>
  1964. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  1965. </entry>
  1966. <entry>
  1967. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1968. </entry>
  1969. </row>
  1970. <row>
  1971. <entry>
  1972. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1973. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1974. </imageobject></mediaobject>
  1975. </literallayout></para>
  1976. </entry>
  1977. <entry>
  1978. <para><literallayout xml:space='preserve' class='monospaced'>ee_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  1979. </entry>
  1980. <entry>
  1981. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1982. </entry>
  1983. </row>
  1984. <row>
  1985. <entry>
  1986. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  1987. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  1988. </imageobject></mediaobject>
  1989. </literallayout></para>
  1990. </entry>
  1991. <entry>
  1992. <para><literallayout xml:space='preserve' class='monospaced'>domain_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  1993. </entry>
  1994. <entry>
  1995. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  1996. </entry>
  1997. </row>
  1998. <row>
  1999. <entry>
  2000. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2001. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2002. </imageobject></mediaobject>
  2003. </literallayout></para>
  2004. </entry>
  2005. <entry>
  2006. <para><literallayout xml:space='preserve' class='monospaced'>Incoming Bridge</literallayout></para>
  2007. </entry>
  2008. <entry>
  2009. <para><literallayout xml:space='preserve' class='monospaced'>An incoming bridge represents a service provided by the domain being modeled.
  2010. A synchronous, incoming bridge returns data to the external domain in a timely
  2011. fashion. An asynchronous, incoming bridge doesn&apos;&apos;t return data the the external
  2012. domain.
  2013. An incoming bridge might also be referred to as a &quot;domain function&quot;.
  2014. Although incoming bridges are intended for external access, they can also
  2015. be called internally by the domain being modeled.</literallayout></para>
  2016. </entry>
  2017. </row>
  2018. <row>
  2019. <entry>
  2020. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2021. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2022. </imageobject></mediaobject>
  2023. </literallayout></para>
  2024. </entry>
  2025. <entry>
  2026. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2027. </entry>
  2028. <entry>
  2029. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2030. </entry>
  2031. </row>
  2032. <row>
  2033. <entry>
  2034. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2035. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2036. </imageobject></mediaobject>
  2037. </literallayout></para>
  2038. </entry>
  2039. <entry>
  2040. <para><literallayout xml:space='preserve' class='monospaced'>domain_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2041. </entry>
  2042. <entry>
  2043. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2044. </entry>
  2045. </row>
  2046. <row>
  2047. <entry>
  2048. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2049. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2050. </imageobject></mediaobject>
  2051. </literallayout></para>
  2052. </entry>
  2053. <entry>
  2054. <para><literallayout xml:space='preserve' class='monospaced'>Bridge</literallayout></para>
  2055. </entry>
  2056. <entry>
  2057. <para><literallayout xml:space='preserve' class='monospaced'>&quot;During analysis, a bridge between two domains represents a set of assumptions
  2058. (from the client&apos;&apos;s perspective) and a set of requirements (from the server&apos;&apos;s).
  2059. * The client thinks of a bridge as a set of capabilities that it assumes will
  2060. be provided by another domain. The client does not care which domain pro-
  2061. vides the capabilities.
  2062. * The server thinks of the bridge as a set of requirements. The server does
  2063. not care which domain needs the service, and therefore makes no assumptions
  2064. about the client.&quot;
  2065. [OL:MWS]
  2066. Bridges can contain both synchronous and asynchronous processes. The following
  2067. is a list of assumptions, on bridging domains, taken from [OL:MWS]:
  2068. * OOA Mechanisms: &quot;The application and service domains assume that the mecha-
  2069. nisms of OOA (data storage, event transmission, and the like) are provided
  2070. in some form.&quot; This means the other domains have a way of persisting shared
  2071. data, handling events directed at them, synchronizing time, etc. This is
  2072. the same as client and server computing machines.
  2073. * Instant Data Attributes: &quot;The application domain assumes that sensor-based
  2074. attributes such as Cooking Tank.Actual Temperature have up-to-date values.&quot;
  2075. The action of such a bridge will be considered part of the atomicity in the
  2076. process model that calls it. Access will work as if it is from a data store.
  2077. * Counterparts: &quot;Although an object in one domain doesn&apos;&apos;t require the exist-
  2078. ence of an object in another, an instance of object in one domain may have
  2079. as a counterpart an instance of an object in another domain. For example, a
  2080. train (in the Railroad Management domain) may have a counterpoint train
  2081. icon in the User Interface domain.&quot;</literallayout></para>
  2082. </entry>
  2083. </row>
  2084. <row>
  2085. <entry>
  2086. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2087. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2088. </imageobject></mediaobject>
  2089. </literallayout></para>
  2090. </entry>
  2091. <entry>
  2092. <para><literallayout xml:space='preserve' class='monospaced'>bridge_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2093. </entry>
  2094. <entry>
  2095. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2096. </entry>
  2097. </row>
  2098. <row>
  2099. <entry>
  2100. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2101. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2102. </imageobject></mediaobject>
  2103. </literallayout></para>
  2104. </entry>
  2105. <entry>
  2106. <para><literallayout xml:space='preserve' class='monospaced'>Asynchronous Bridge</literallayout></para>
  2107. </entry>
  2108. <entry>
  2109. <para><literallayout xml:space='preserve' class='monospaced'>An asynchronous bridge returns no data and only invokes action in the servicing
  2110. domain.
  2111. Special considerations:
  2112. A Transfer Vector provides an external domain with the information needed to
  2113. invoke an event on an instance within the domain being modeled. This means that
  2114. the transfer vector must include the instance reference and event reference. It
  2115. is up to the Architecture to determine how this information is handled, but the
  2116. external domain should treat the transfer vector information as a composite.
  2117. i.e., the external domain will not be able to access the instance or event
  2118. references directly.
  2119. &quot;The analyst can think of the transfer vector as a partial event (an event
  2120. label and an instance identifier only) that will be filled out with supplemental
  2121. data (if such is defined for the base event) and returned to Home as a complete
  2122. event at some future time. ...
  2123. When Away receives a transfer vector from Home, Away regards the transfer vector
  2124. as a data element of type &apos;&apos;transfer vector.&apos;&apos; Away must save the transfer vector
  2125. for later use. This is done by attributing the transfer vector to an object that
  2126. acts as a surrogate for the thread of control in the sending domain. ...
  2127. When it is time for Away to provide the asynchronous notification to Home, Away
  2128. invokes an asynchronous return wormhole, supplying as input data:
  2129. • the previously saved transfer vector
  2130. • any additional data elements to be returned to the calling domain (Home).
  2131. These will be combined with the transfer vector as supplemental data items to
  2132. form the event expected by Home.
  2133. The asynchronous return wormhole acts as a way to &quot;return via transfer vector&quot;
  2134. back to the Home domain.&quot; [Worm]</literallayout></para>
  2135. </entry>
  2136. </row>
  2137. <row>
  2138. <entry>
  2139. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2140. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2141. </imageobject></mediaobject>
  2142. </literallayout></para>
  2143. </entry>
  2144. <entry>
  2145. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2146. </entry>
  2147. <entry>
  2148. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2149. </entry>
  2150. </row>
  2151. <row>
  2152. <entry>
  2153. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2154. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2155. </imageobject></mediaobject>
  2156. </literallayout></para>
  2157. </entry>
  2158. <entry>
  2159. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2160. </entry>
  2161. <entry>
  2162. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2163. </entry>
  2164. </row>
  2165. </tbody>
  2166. </tgroup>
  2167. </table>
  2168. </literallayout></para>
  2169. </section>
  2170. <section>
  2171. <title>Associations</title>
  2172. <subtitle>Associations</subtitle>
  2173. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  2174. <title>Domain</title>
  2175. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  2176. <thead>
  2177. <row>
  2178. <entry>
  2179. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2180. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  2181. </imageobject></mediaobject>
  2182. </literallayout></para>
  2183. </entry>
  2184. <entry>
  2185. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  2186. </entry>
  2187. <entry>
  2188. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  2189. </entry>
  2190. </row>
  2191. </thead>
  2192. <tbody>
  2193. <row>
  2194. <entry>
  2195. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2196. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  2197. </imageobject></mediaobject>
  2198. </literallayout></para>
  2199. </entry>
  2200. <entry>
  2201. <para><literallayout xml:space='preserve' class='monospaced'>1</literallayout></para>
  2202. </entry>
  2203. <entry>
  2204. <para><literallayout xml:space='preserve' class='monospaced'>A domain is either a modeled domain or a realized domain.</literallayout></para>
  2205. </entry>
  2206. </row>
  2207. <row>
  2208. <entry>
  2209. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2210. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  2211. </imageobject></mediaobject>
  2212. </literallayout></para>
  2213. </entry>
  2214. <entry>
  2215. <para><literallayout xml:space='preserve' class='monospaced'>3</literallayout></para>
  2216. </entry>
  2217. <entry>
  2218. <para><literallayout xml:space='preserve' class='monospaced'>A bridge is expected to synchronously return data, or asynchronously invoke
  2219. action.</literallayout></para>
  2220. </entry>
  2221. </row>
  2222. <row>
  2223. <entry>
  2224. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2225. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  2226. </imageobject></mediaobject>
  2227. </literallayout></para>
  2228. </entry>
  2229. <entry>
  2230. <para><literallayout xml:space='preserve' class='monospaced'>4</literallayout></para>
  2231. </entry>
  2232. <entry>
  2233. <para><literallayout xml:space='preserve' class='monospaced'>A bridge is either incoming (handled internally) or outgoing (handled
  2234. externally).</literallayout></para>
  2235. </entry>
  2236. </row>
  2237. <row>
  2238. <entry>
  2239. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2240. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  2241. </imageobject></mediaobject>
  2242. </literallayout></para>
  2243. </entry>
  2244. <entry>
  2245. <para><literallayout xml:space='preserve' class='monospaced'>5</literallayout></para>
  2246. </entry>
  2247. <entry>
  2248. <para><literallayout xml:space='preserve' class='monospaced'>In the context of the domain being modeled, the modeled domain might require
  2249. services from external domains. An external domain specified in the model will
  2250. provide services to only the modeled domain.
  2251. In reality, the external domain would provide services to other domains,
  2252. modeled and non-modeled, but in the context of the domain being modeled, it is
  2253. the only domain requiring services.
  2254. Even though a 1:M relationship doesn&apos;&apos;t require an associative object,
  2255. making the outgoing bridge an associative object constrains outgoing bridges to
  2256. be explicitly associated with the client-server relationship between two
  2257. domains.</literallayout></para>
  2258. </entry>
  2259. </row>
  2260. <row>
  2261. <entry>
  2262. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2263. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  2264. </imageobject></mediaobject>
  2265. </literallayout></para>
  2266. </entry>
  2267. <entry>
  2268. <para><literallayout xml:space='preserve' class='monospaced'>6</literallayout></para>
  2269. </entry>
  2270. <entry>
  2271. <para><literallayout xml:space='preserve' class='monospaced'>An incoming bridge models the services provided by the modeled domain.</literallayout></para>
  2272. </entry>
  2273. </row>
  2274. </tbody>
  2275. </tgroup>
  2276. </table>
  2277. </literallayout></para>
  2278. </section>
  2279. </section>
  2280. <section>
  2281. <title>Dynamics</title>
  2282. <subtitle>Package</subtitle>
  2283. <para><literallayout xml:space='preserve' class='monospaced'>The subsystem of the metamodel concerned with object and relationship dynamics.<figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Dynamics-PackageDiagram-figure'>
  2284. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Dynamics-PackageDiagram-figure-title'>Dynamics Package Diagram</title>
  2285. <mediaobject><imageobject>
  2286. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Dynamics-Package Diagram.png' scalefit='1' width='100%'/>
  2287. </imageobject></mediaobject>
  2288. </figure>
  2289. </literallayout></para>
  2290. <section>
  2291. <title>Classes</title>
  2292. <subtitle></subtitle>
  2293. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  2294. <title>Classes</title>
  2295. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  2296. <thead>
  2297. <row>
  2298. <entry>
  2299. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2300. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2301. </imageobject></mediaobject>
  2302. </literallayout></para>
  2303. </entry>
  2304. <entry>
  2305. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  2306. </entry>
  2307. <entry>
  2308. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  2309. </entry>
  2310. </row>
  2311. </thead>
  2312. <tbody>
  2313. <row>
  2314. <entry>
  2315. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2316. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2317. </imageobject></mediaobject>
  2318. </literallayout></para>
  2319. </entry>
  2320. <entry>
  2321. <para><literallayout xml:space='preserve' class='monospaced'>State Model Segment</literallayout></para>
  2322. </entry>
  2323. <entry>
  2324. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2325. </entry>
  2326. </row>
  2327. <row>
  2328. <entry>
  2329. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2330. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2331. </imageobject></mediaobject>
  2332. </literallayout></para>
  2333. </entry>
  2334. <entry>
  2335. <para><literallayout xml:space='preserve' class='monospaced'>id:integer</literallayout></para>
  2336. </entry>
  2337. <entry>
  2338. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2339. </entry>
  2340. </row>
  2341. <row>
  2342. <entry>
  2343. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2344. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2345. </imageobject></mediaobject>
  2346. </literallayout></para>
  2347. </entry>
  2348. <entry>
  2349. <para><literallayout xml:space='preserve' class='monospaced'>State Model</literallayout></para>
  2350. </entry>
  2351. <entry>
  2352. <para><literallayout xml:space='preserve' class='monospaced'>A state model formalizes the dynamic behavior of an object or of subsets of an
  2353. object. The state models are either instance based, called lifecycle models, or
  2354. assigners, which exist regardless of instantiation.
  2355. For lifecycles, Shlaer-Mellor allows the concept of a split state model. In a
  2356. split state model, a segment of the state model is modeled in an object
  2357. specialization. The whole lifecycle depends upon which specializations compose
  2358. the instantiation. This allows object specialization on behavior.
  2359. </literallayout></para>
  2360. </entry>
  2361. </row>
  2362. <row>
  2363. <entry>
  2364. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2365. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2366. </imageobject></mediaobject>
  2367. </literallayout></para>
  2368. </entry>
  2369. <entry>
  2370. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  2371. </entry>
  2372. <entry>
  2373. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2374. </entry>
  2375. </row>
  2376. <row>
  2377. <entry>
  2378. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2379. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2380. </imageobject></mediaobject>
  2381. </literallayout></para>
  2382. </entry>
  2383. <entry>
  2384. <para><literallayout xml:space='preserve' class='monospaced'>Transition Rule</literallayout></para>
  2385. </entry>
  2386. <entry>
  2387. <para><literallayout xml:space='preserve' class='monospaced'>A transition rule defines the signature required for entry into or exit from a
  2388. state.
  2389. </literallayout></para>
  2390. </entry>
  2391. </row>
  2392. <row>
  2393. <entry>
  2394. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2395. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2396. </imageobject></mediaobject>
  2397. </literallayout></para>
  2398. </entry>
  2399. <entry>
  2400. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  2401. </entry>
  2402. <entry>
  2403. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2404. </entry>
  2405. </row>
  2406. <row>
  2407. <entry>
  2408. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2409. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2410. </imageobject></mediaobject>
  2411. </literallayout></para>
  2412. </entry>
  2413. <entry>
  2414. <para><literallayout xml:space='preserve' class='monospaced'>Transition</literallayout></para>
  2415. </entry>
  2416. <entry>
  2417. <para><literallayout xml:space='preserve' class='monospaced'>A transition represents a change in state within the same object state model.
  2418. </literallayout></para>
  2419. </entry>
  2420. </row>
  2421. <row>
  2422. <entry>
  2423. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2424. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2425. </imageobject></mediaobject>
  2426. </literallayout></para>
  2427. </entry>
  2428. <entry>
  2429. <para><literallayout xml:space='preserve' class='monospaced'>model_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2430. </entry>
  2431. <entry>
  2432. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2433. </entry>
  2434. </row>
  2435. <row>
  2436. <entry>
  2437. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2438. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2439. </imageobject></mediaobject>
  2440. </literallayout></para>
  2441. </entry>
  2442. <entry>
  2443. <para><literallayout xml:space='preserve' class='monospaced'>state_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2444. </entry>
  2445. <entry>
  2446. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2447. </entry>
  2448. </row>
  2449. <row>
  2450. <entry>
  2451. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2452. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2453. </imageobject></mediaobject>
  2454. </literallayout></para>
  2455. </entry>
  2456. <entry>
  2457. <para><literallayout xml:space='preserve' class='monospaced'>exit_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2458. </entry>
  2459. <entry>
  2460. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2461. </entry>
  2462. </row>
  2463. <row>
  2464. <entry>
  2465. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2466. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2467. </imageobject></mediaobject>
  2468. </literallayout></para>
  2469. </entry>
  2470. <entry>
  2471. <para><literallayout xml:space='preserve' class='monospaced'>entry_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2472. </entry>
  2473. <entry>
  2474. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2475. </entry>
  2476. </row>
  2477. <row>
  2478. <entry>
  2479. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2480. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2481. </imageobject></mediaobject>
  2482. </literallayout></para>
  2483. </entry>
  2484. <entry>
  2485. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  2486. </entry>
  2487. <entry>
  2488. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2489. </entry>
  2490. </row>
  2491. <row>
  2492. <entry>
  2493. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2494. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2495. </imageobject></mediaobject>
  2496. </literallayout></para>
  2497. </entry>
  2498. <entry>
  2499. <para><literallayout xml:space='preserve' class='monospaced'>Unsuccessful Transition</literallayout></para>
  2500. </entry>
  2501. <entry>
  2502. <para><literallayout xml:space='preserve' class='monospaced'>An unsuccessful transition does not change the state of an instance, and can be
  2503. used to trigger error handling mechanisms as directed by the architecture.</literallayout></para>
  2504. </entry>
  2505. </row>
  2506. <row>
  2507. <entry>
  2508. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2509. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2510. </imageobject></mediaobject>
  2511. </literallayout></para>
  2512. </entry>
  2513. <entry>
  2514. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2515. </entry>
  2516. <entry>
  2517. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2518. </entry>
  2519. </row>
  2520. <row>
  2521. <entry>
  2522. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2523. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2524. </imageobject></mediaobject>
  2525. </literallayout></para>
  2526. </entry>
  2527. <entry>
  2528. <para><literallayout xml:space='preserve' class='monospaced'>Successful Transition</literallayout></para>
  2529. </entry>
  2530. <entry>
  2531. <para><literallayout xml:space='preserve' class='monospaced'>In a successful state-to-state transition, the result of the event was a state
  2532. entry.</literallayout></para>
  2533. </entry>
  2534. </row>
  2535. <row>
  2536. <entry>
  2537. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2538. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2539. </imageobject></mediaobject>
  2540. </literallayout></para>
  2541. </entry>
  2542. <entry>
  2543. <para><literallayout xml:space='preserve' class='monospaced'>state_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2544. </entry>
  2545. <entry>
  2546. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2547. </entry>
  2548. </row>
  2549. <row>
  2550. <entry>
  2551. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2552. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2553. </imageobject></mediaobject>
  2554. </literallayout></para>
  2555. </entry>
  2556. <entry>
  2557. <para><literallayout xml:space='preserve' class='monospaced'>state_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2558. </entry>
  2559. <entry>
  2560. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2561. </entry>
  2562. </row>
  2563. <row>
  2564. <entry>
  2565. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2566. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2567. </imageobject></mediaobject>
  2568. </literallayout></para>
  2569. </entry>
  2570. <entry>
  2571. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2572. </entry>
  2573. <entry>
  2574. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2575. </entry>
  2576. </row>
  2577. <row>
  2578. <entry>
  2579. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2580. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2581. </imageobject></mediaobject>
  2582. </literallayout></para>
  2583. </entry>
  2584. <entry>
  2585. <para><literallayout xml:space='preserve' class='monospaced'>State</literallayout></para>
  2586. </entry>
  2587. <entry>
  2588. <para><literallayout xml:space='preserve' class='monospaced'>&quot;A state represents a condition of the object in which a defined set of rules,
  2589. policies, regulations, and physical laws applies.&quot; [OL:MWS]</literallayout></para>
  2590. </entry>
  2591. </row>
  2592. <row>
  2593. <entry>
  2594. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2595. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2596. </imageobject></mediaobject>
  2597. </literallayout></para>
  2598. </entry>
  2599. <entry>
  2600. <para><literallayout xml:space='preserve' class='monospaced'>activity_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2601. </entry>
  2602. <entry>
  2603. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2604. </entry>
  2605. </row>
  2606. <row>
  2607. <entry>
  2608. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2609. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2610. </imageobject></mediaobject>
  2611. </literallayout></para>
  2612. </entry>
  2613. <entry>
  2614. <para><literallayout xml:space='preserve' class='monospaced'>model_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2615. </entry>
  2616. <entry>
  2617. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2618. </entry>
  2619. </row>
  2620. <row>
  2621. <entry>
  2622. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2623. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2624. </imageobject></mediaobject>
  2625. </literallayout></para>
  2626. </entry>
  2627. <entry>
  2628. <para><literallayout xml:space='preserve' class='monospaced'>number:integer</literallayout></para>
  2629. </entry>
  2630. <entry>
  2631. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2632. </entry>
  2633. </row>
  2634. <row>
  2635. <entry>
  2636. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2637. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2638. </imageobject></mediaobject>
  2639. </literallayout></para>
  2640. </entry>
  2641. <entry>
  2642. <para><literallayout xml:space='preserve' class='monospaced'>name:string</literallayout></para>
  2643. </entry>
  2644. <entry>
  2645. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2646. </entry>
  2647. </row>
  2648. <row>
  2649. <entry>
  2650. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2651. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2652. </imageobject></mediaobject>
  2653. </literallayout></para>
  2654. </entry>
  2655. <entry>
  2656. <para><literallayout xml:space='preserve' class='monospaced'>State Machine</literallayout></para>
  2657. </entry>
  2658. <entry>
  2659. <para><literallayout xml:space='preserve' class='monospaced'>A state machine is the runtime instantiation of a state model.
  2660. </literallayout></para>
  2661. </entry>
  2662. </row>
  2663. <row>
  2664. <entry>
  2665. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2666. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2667. </imageobject></mediaobject>
  2668. </literallayout></para>
  2669. </entry>
  2670. <entry>
  2671. <para><literallayout xml:space='preserve' class='monospaced'>current_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2672. </entry>
  2673. <entry>
  2674. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2675. </entry>
  2676. </row>
  2677. <row>
  2678. <entry>
  2679. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2680. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2681. </imageobject></mediaobject>
  2682. </literallayout></para>
  2683. </entry>
  2684. <entry>
  2685. <para><literallayout xml:space='preserve' class='monospaced'>current_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2686. </entry>
  2687. <entry>
  2688. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2689. </entry>
  2690. </row>
  2691. <row>
  2692. <entry>
  2693. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2694. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2695. </imageobject></mediaobject>
  2696. </literallayout></para>
  2697. </entry>
  2698. <entry>
  2699. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  2700. </entry>
  2701. <entry>
  2702. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2703. </entry>
  2704. </row>
  2705. <row>
  2706. <entry>
  2707. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2708. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2709. </imageobject></mediaobject>
  2710. </literallayout></para>
  2711. </entry>
  2712. <entry>
  2713. <para><literallayout xml:space='preserve' class='monospaced'>Start State</literallayout></para>
  2714. </entry>
  2715. <entry>
  2716. <para><literallayout xml:space='preserve' class='monospaced'>A start state is any living state that has been designated to be the state of
  2717. existance upon object realization or instance creation in the system.</literallayout></para>
  2718. </entry>
  2719. </row>
  2720. <row>
  2721. <entry>
  2722. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2723. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2724. </imageobject></mediaobject>
  2725. </literallayout></para>
  2726. </entry>
  2727. <entry>
  2728. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2729. </entry>
  2730. <entry>
  2731. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2732. </entry>
  2733. </row>
  2734. <row>
  2735. <entry>
  2736. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2737. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2738. </imageobject></mediaobject>
  2739. </literallayout></para>
  2740. </entry>
  2741. <entry>
  2742. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2743. </entry>
  2744. <entry>
  2745. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2746. </entry>
  2747. </row>
  2748. <row>
  2749. <entry>
  2750. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2751. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2752. </imageobject></mediaobject>
  2753. </literallayout></para>
  2754. </entry>
  2755. <entry>
  2756. <para><literallayout xml:space='preserve' class='monospaced'>Splicing</literallayout></para>
  2757. </entry>
  2758. <entry>
  2759. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2760. </entry>
  2761. </row>
  2762. <row>
  2763. <entry>
  2764. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2765. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2766. </imageobject></mediaobject>
  2767. </literallayout></para>
  2768. </entry>
  2769. <entry>
  2770. <para><literallayout xml:space='preserve' class='monospaced'>model_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2771. </entry>
  2772. <entry>
  2773. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2774. </entry>
  2775. </row>
  2776. <row>
  2777. <entry>
  2778. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2779. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2780. </imageobject></mediaobject>
  2781. </literallayout></para>
  2782. </entry>
  2783. <entry>
  2784. <para><literallayout xml:space='preserve' class='monospaced'>model_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2785. </entry>
  2786. <entry>
  2787. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2788. </entry>
  2789. </row>
  2790. <row>
  2791. <entry>
  2792. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2793. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2794. </imageobject></mediaobject>
  2795. </literallayout></para>
  2796. </entry>
  2797. <entry>
  2798. <para><literallayout xml:space='preserve' class='monospaced'>segment_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2799. </entry>
  2800. <entry>
  2801. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2802. </entry>
  2803. </row>
  2804. <row>
  2805. <entry>
  2806. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2807. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2808. </imageobject></mediaobject>
  2809. </literallayout></para>
  2810. </entry>
  2811. <entry>
  2812. <para><literallayout xml:space='preserve' class='monospaced'>Splice Segment</literallayout></para>
  2813. </entry>
  2814. <entry>
  2815. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2816. </entry>
  2817. </row>
  2818. <row>
  2819. <entry>
  2820. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2821. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2822. </imageobject></mediaobject>
  2823. </literallayout></para>
  2824. </entry>
  2825. <entry>
  2826. <para><literallayout xml:space='preserve' class='monospaced'>segment_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2827. </entry>
  2828. <entry>
  2829. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2830. </entry>
  2831. </row>
  2832. <row>
  2833. <entry>
  2834. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2835. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2836. </imageobject></mediaobject>
  2837. </literallayout></para>
  2838. </entry>
  2839. <entry>
  2840. <para><literallayout xml:space='preserve' class='monospaced'>Peer Segment</literallayout></para>
  2841. </entry>
  2842. <entry>
  2843. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2844. </entry>
  2845. </row>
  2846. <row>
  2847. <entry>
  2848. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2849. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2850. </imageobject></mediaobject>
  2851. </literallayout></para>
  2852. </entry>
  2853. <entry>
  2854. <para><literallayout xml:space='preserve' class='monospaced'>segment_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2855. </entry>
  2856. <entry>
  2857. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2858. </entry>
  2859. </row>
  2860. <row>
  2861. <entry>
  2862. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2863. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2864. </imageobject></mediaobject>
  2865. </literallayout></para>
  2866. </entry>
  2867. <entry>
  2868. <para><literallayout xml:space='preserve' class='monospaced'>Non-Creation State</literallayout></para>
  2869. </entry>
  2870. <entry>
  2871. <para><literallayout xml:space='preserve' class='monospaced'>A non-creation state is a start state that has been designated as the starting
  2872. state for the existance of the state model. A non-creation state can contain
  2873. a process model and be a destination for state-to-state transition. The
  2874. instance must be created outside of the state model.</literallayout></para>
  2875. </entry>
  2876. </row>
  2877. <row>
  2878. <entry>
  2879. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2880. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2881. </imageobject></mediaobject>
  2882. </literallayout></para>
  2883. </entry>
  2884. <entry>
  2885. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2886. </entry>
  2887. <entry>
  2888. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2889. </entry>
  2890. </row>
  2891. <row>
  2892. <entry>
  2893. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2894. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2895. </imageobject></mediaobject>
  2896. </literallayout></para>
  2897. </entry>
  2898. <entry>
  2899. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2900. </entry>
  2901. <entry>
  2902. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2903. </entry>
  2904. </row>
  2905. <row>
  2906. <entry>
  2907. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2908. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2909. </imageobject></mediaobject>
  2910. </literallayout></para>
  2911. </entry>
  2912. <entry>
  2913. <para><literallayout xml:space='preserve' class='monospaced'>Middle State</literallayout></para>
  2914. </entry>
  2915. <entry>
  2916. <para><literallayout xml:space='preserve' class='monospaced'>The middle state is a state that isn&apos;&apos;t a start or deletion state.</literallayout></para>
  2917. </entry>
  2918. </row>
  2919. <row>
  2920. <entry>
  2921. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2922. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2923. </imageobject></mediaobject>
  2924. </literallayout></para>
  2925. </entry>
  2926. <entry>
  2927. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2928. </entry>
  2929. <entry>
  2930. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2931. </entry>
  2932. </row>
  2933. <row>
  2934. <entry>
  2935. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2936. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2937. </imageobject></mediaobject>
  2938. </literallayout></para>
  2939. </entry>
  2940. <entry>
  2941. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2942. </entry>
  2943. <entry>
  2944. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2945. </entry>
  2946. </row>
  2947. <row>
  2948. <entry>
  2949. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2950. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2951. </imageobject></mediaobject>
  2952. </literallayout></para>
  2953. </entry>
  2954. <entry>
  2955. <para><literallayout xml:space='preserve' class='monospaced'>Living State</literallayout></para>
  2956. </entry>
  2957. <entry>
  2958. <para><literallayout xml:space='preserve' class='monospaced'>A living state is any state of the object in an assigner state model, or if in
  2959. a lifecycle state model, any state that doesn&apos;&apos;t automatically delete the
  2960. associated instance at the end of state action processing. All living states
  2961. should have outgoing and incoming transistions.</literallayout></para>
  2962. </entry>
  2963. </row>
  2964. <row>
  2965. <entry>
  2966. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2967. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2968. </imageobject></mediaobject>
  2969. </literallayout></para>
  2970. </entry>
  2971. <entry>
  2972. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2973. </entry>
  2974. <entry>
  2975. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2976. </entry>
  2977. </row>
  2978. <row>
  2979. <entry>
  2980. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2981. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  2982. </imageobject></mediaobject>
  2983. </literallayout></para>
  2984. </entry>
  2985. <entry>
  2986. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  2987. </entry>
  2988. <entry>
  2989. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  2990. </entry>
  2991. </row>
  2992. <row>
  2993. <entry>
  2994. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  2995. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  2996. </imageobject></mediaobject>
  2997. </literallayout></para>
  2998. </entry>
  2999. <entry>
  3000. <para><literallayout xml:space='preserve' class='monospaced'>Lifecycle State Machine</literallayout></para>
  3001. </entry>
  3002. <entry>
  3003. <para><literallayout xml:space='preserve' class='monospaced'>A lifecycle state machine is the runtime instantiation of a lifecycle state
  3004. model. The lifecycle state machine can be composed of many state model segments,
  3005. when the instantiation involves multiple subsets with lifecycle state models,
  3006. or is composed from one segment when instantiating only one subset with a state
  3007. model.</literallayout></para>
  3008. </entry>
  3009. </row>
  3010. <row>
  3011. <entry>
  3012. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3013. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3014. </imageobject></mediaobject>
  3015. </literallayout></para>
  3016. </entry>
  3017. <entry>
  3018. <para><literallayout xml:space='preserve' class='monospaced'>instance_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3019. </entry>
  3020. <entry>
  3021. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3022. </entry>
  3023. </row>
  3024. <row>
  3025. <entry>
  3026. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3027. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3028. </imageobject></mediaobject>
  3029. </literallayout></para>
  3030. </entry>
  3031. <entry>
  3032. <para><literallayout xml:space='preserve' class='monospaced'>model_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3033. </entry>
  3034. <entry>
  3035. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3036. </entry>
  3037. </row>
  3038. <row>
  3039. <entry>
  3040. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3041. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3042. </imageobject></mediaobject>
  3043. </literallayout></para>
  3044. </entry>
  3045. <entry>
  3046. <para><literallayout xml:space='preserve' class='monospaced'>model_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3047. </entry>
  3048. <entry>
  3049. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3050. </entry>
  3051. </row>
  3052. <row>
  3053. <entry>
  3054. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3055. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3056. </imageobject></mediaobject>
  3057. </literallayout></para>
  3058. </entry>
  3059. <entry>
  3060. <para><literallayout xml:space='preserve' class='monospaced'>start_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3061. </entry>
  3062. <entry>
  3063. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3064. </entry>
  3065. </row>
  3066. <row>
  3067. <entry>
  3068. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3069. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3070. </imageobject></mediaobject>
  3071. </literallayout></para>
  3072. </entry>
  3073. <entry>
  3074. <para><literallayout xml:space='preserve' class='monospaced'>start_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3075. </entry>
  3076. <entry>
  3077. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3078. </entry>
  3079. </row>
  3080. <row>
  3081. <entry>
  3082. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3083. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3084. </imageobject></mediaobject>
  3085. </literallayout></para>
  3086. </entry>
  3087. <entry>
  3088. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3089. </entry>
  3090. <entry>
  3091. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3092. </entry>
  3093. </row>
  3094. <row>
  3095. <entry>
  3096. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3097. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  3098. </imageobject></mediaobject>
  3099. </literallayout></para>
  3100. </entry>
  3101. <entry>
  3102. <para><literallayout xml:space='preserve' class='monospaced'>Lifecycle Model</literallayout></para>
  3103. </entry>
  3104. <entry>
  3105. <para><literallayout xml:space='preserve' class='monospaced'>A lifecycle state model abstracts the common behavior of an object that applies
  3106. to all instances. &quot;Two forms of state models are commonly used in analysis; in
  3107. OOA, we use the Moore form.&quot; [OL:MWS]
  3108. Although there is no direct relationship between instance and lifecycle,
  3109. the relationship is explicitly directed by the mandatory relationship between
  3110. lifecycle and object and the mandatory relationship between instance and
  3111. object. The empty set makes this very ugly to model explicitly, because the
  3112. relationship between Instance and Lifecycle has to be 1c:Mc and be dependent on
  3113. the already modeled path from Instance to Object to Lifecycle. The logical
  3114. associative object would be &quot;Active Instance&quot;, which would imply a &quot;Passive
  3115. Instance&quot; object be created as part of a subtyping of Instance.
  3116. A Lifecycle is instance-based, not object-based. This means that state is
  3117. maintained for each instance of the object, not for the object, but the model
  3118. of behavior is defined the same for all instances of the object.</literallayout></para>
  3119. </entry>
  3120. </row>
  3121. <row>
  3122. <entry>
  3123. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3124. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3125. </imageobject></mediaobject>
  3126. </literallayout></para>
  3127. </entry>
  3128. <entry>
  3129. <para><literallayout xml:space='preserve' class='monospaced'>subset_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3130. </entry>
  3131. <entry>
  3132. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3133. </entry>
  3134. </row>
  3135. <row>
  3136. <entry>
  3137. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3138. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3139. </imageobject></mediaobject>
  3140. </literallayout></para>
  3141. </entry>
  3142. <entry>
  3143. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3144. </entry>
  3145. <entry>
  3146. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3147. </entry>
  3148. </row>
  3149. <row>
  3150. <entry>
  3151. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3152. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  3153. </imageobject></mediaobject>
  3154. </literallayout></para>
  3155. </entry>
  3156. <entry>
  3157. <para><literallayout xml:space='preserve' class='monospaced'>General Segment</literallayout></para>
  3158. </entry>
  3159. <entry>
  3160. <para><literallayout xml:space='preserve' class='monospaced'>A general segment is included in all instantiations of an object specialization
  3161. branch. It can be the whole lifecycle model for an object instance.</literallayout></para>
  3162. </entry>
  3163. </row>
  3164. <row>
  3165. <entry>
  3166. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3167. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3168. </imageobject></mediaobject>
  3169. </literallayout></para>
  3170. </entry>
  3171. <entry>
  3172. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3173. </entry>
  3174. <entry>
  3175. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3176. </entry>
  3177. </row>
  3178. <row>
  3179. <entry>
  3180. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3181. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  3182. </imageobject></mediaobject>
  3183. </literallayout></para>
  3184. </entry>
  3185. <entry>
  3186. <para><literallayout xml:space='preserve' class='monospaced'>Exit Rule</literallayout></para>
  3187. </entry>
  3188. <entry>
  3189. <para><literallayout xml:space='preserve' class='monospaced'>An exit transition rule defines what happens when an event occurs while in the
  3190. current state. This means that an exit rule is defined for every event defined
  3191. for the state model. The exit rule requires the event designator and the
  3192. transition result, which is a destination state or a transition failure
  3193. designator.</literallayout></para>
  3194. </entry>
  3195. </row>
  3196. <row>
  3197. <entry>
  3198. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3199. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3200. </imageobject></mediaobject>
  3201. </literallayout></para>
  3202. </entry>
  3203. <entry>
  3204. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3205. </entry>
  3206. <entry>
  3207. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3208. </entry>
  3209. </row>
  3210. <row>
  3211. <entry>
  3212. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3213. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3214. </imageobject></mediaobject>
  3215. </literallayout></para>
  3216. </entry>
  3217. <entry>
  3218. <para><literallayout xml:space='preserve' class='monospaced'>state_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3219. </entry>
  3220. <entry>
  3221. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3222. </entry>
  3223. </row>
  3224. <row>
  3225. <entry>
  3226. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3227. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3228. </imageobject></mediaobject>
  3229. </literallayout></para>
  3230. </entry>
  3231. <entry>
  3232. <para><literallayout xml:space='preserve' class='monospaced'>state_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3233. </entry>
  3234. <entry>
  3235. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3236. </entry>
  3237. </row>
  3238. <row>
  3239. <entry>
  3240. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3241. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3242. </imageobject></mediaobject>
  3243. </literallayout></para>
  3244. </entry>
  3245. <entry>
  3246. <para><literallayout xml:space='preserve' class='monospaced'>event_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3247. </entry>
  3248. <entry>
  3249. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3250. </entry>
  3251. </row>
  3252. <row>
  3253. <entry>
  3254. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3255. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3256. </imageobject></mediaobject>
  3257. </literallayout></para>
  3258. </entry>
  3259. <entry>
  3260. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3261. </entry>
  3262. <entry>
  3263. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3264. </entry>
  3265. </row>
  3266. <row>
  3267. <entry>
  3268. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3269. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  3270. </imageobject></mediaobject>
  3271. </literallayout></para>
  3272. </entry>
  3273. <entry>
  3274. <para><literallayout xml:space='preserve' class='monospaced'>Event Ignored</literallayout></para>
  3275. </entry>
  3276. <entry>
  3277. <para><literallayout xml:space='preserve' class='monospaced'>&quot;If an object refuses to respond to a particular event when it is in a certain
  3278. state, enter &quot;event ignored&quot; in the appropriate cell. When an event is ignored,
  3279. the instance stays in the same state it is in and does not re-execute the
  3280. action. ... Note that although the event is ignored in the sense of not causing
  3281. a transition, the event is used up by the state model.&quot; [OL:MWS]</literallayout></para>
  3282. </entry>
  3283. </row>
  3284. <row>
  3285. <entry>
  3286. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3287. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3288. </imageobject></mediaobject>
  3289. </literallayout></para>
  3290. </entry>
  3291. <entry>
  3292. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3293. </entry>
  3294. <entry>
  3295. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3296. </entry>
  3297. </row>
  3298. <row>
  3299. <entry>
  3300. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3301. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  3302. </imageobject></mediaobject>
  3303. </literallayout></para>
  3304. </entry>
  3305. <entry>
  3306. <para><literallayout xml:space='preserve' class='monospaced'>Entry Rule</literallayout></para>
  3307. </entry>
  3308. <entry>
  3309. <para><literallayout xml:space='preserve' class='monospaced'>The entry transition rule enforces the &quot;same data rule&quot;, which states, &quot;All
  3310. events that cause a transition into a particular state must carry exactly the
  3311. same event data.&quot; [OL:MWS]
  3312. [OL:MWS] and [OOA96] define the data as, identifier data and supplemental
  3313. data, where the supplemental data is the external data supplied as event
  3314. parameters, and the identifier data is the target state designator.
  3315. This means that an entry rule is composed of the parameter data to be
  3316. carried by the event causing the transition, and the destination state
  3317. designator.
  3318. </literallayout></para>
  3319. </entry>
  3320. </row>
  3321. <row>
  3322. <entry>
  3323. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3324. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3325. </imageobject></mediaobject>
  3326. </literallayout></para>
  3327. </entry>
  3328. <entry>
  3329. <para><literallayout xml:space='preserve' class='monospaced'>model_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3330. </entry>
  3331. <entry>
  3332. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3333. </entry>
  3334. </row>
  3335. <row>
  3336. <entry>
  3337. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3338. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3339. </imageobject></mediaobject>
  3340. </literallayout></para>
  3341. </entry>
  3342. <entry>
  3343. <para><literallayout xml:space='preserve' class='monospaced'>state_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3344. </entry>
  3345. <entry>
  3346. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3347. </entry>
  3348. </row>
  3349. <row>
  3350. <entry>
  3351. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3352. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3353. </imageobject></mediaobject>
  3354. </literallayout></para>
  3355. </entry>
  3356. <entry>
  3357. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3358. </entry>
  3359. <entry>
  3360. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3361. </entry>
  3362. </row>
  3363. <row>
  3364. <entry>
  3365. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3366. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  3367. </imageobject></mediaobject>
  3368. </literallayout></para>
  3369. </entry>
  3370. <entry>
  3371. <para><literallayout xml:space='preserve' class='monospaced'>Entry Data</literallayout></para>
  3372. </entry>
  3373. <entry>
  3374. <para><literallayout xml:space='preserve' class='monospaced'>An entry data is a member of the set of data defined for an entry rule. Any
  3375. event transitioning into the entry rule must carry the exact same amount and
  3376. type of parameter data as the entry data.</literallayout></para>
  3377. </entry>
  3378. </row>
  3379. <row>
  3380. <entry>
  3381. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3382. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3383. </imageobject></mediaobject>
  3384. </literallayout></para>
  3385. </entry>
  3386. <entry>
  3387. <para><literallayout xml:space='preserve' class='monospaced'>model_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3388. </entry>
  3389. <entry>
  3390. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3391. </entry>
  3392. </row>
  3393. <row>
  3394. <entry>
  3395. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3396. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3397. </imageobject></mediaobject>
  3398. </literallayout></para>
  3399. </entry>
  3400. <entry>
  3401. <para><literallayout xml:space='preserve' class='monospaced'>state_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3402. </entry>
  3403. <entry>
  3404. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3405. </entry>
  3406. </row>
  3407. <row>
  3408. <entry>
  3409. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3410. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3411. </imageobject></mediaobject>
  3412. </literallayout></para>
  3413. </entry>
  3414. <entry>
  3415. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3416. </entry>
  3417. <entry>
  3418. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3419. </entry>
  3420. </row>
  3421. <row>
  3422. <entry>
  3423. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3424. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3425. </imageobject></mediaobject>
  3426. </literallayout></para>
  3427. </entry>
  3428. <entry>
  3429. <para><literallayout xml:space='preserve' class='monospaced'>rule_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3430. </entry>
  3431. <entry>
  3432. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3433. </entry>
  3434. </row>
  3435. <row>
  3436. <entry>
  3437. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3438. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3439. </imageobject></mediaobject>
  3440. </literallayout></para>
  3441. </entry>
  3442. <entry>
  3443. <para><literallayout xml:space='preserve' class='monospaced'>id:integer</literallayout></para>
  3444. </entry>
  3445. <entry>
  3446. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3447. </entry>
  3448. </row>
  3449. <row>
  3450. <entry>
  3451. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3452. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  3453. </imageobject></mediaobject>
  3454. </literallayout></para>
  3455. </entry>
  3456. <entry>
  3457. <para><literallayout xml:space='preserve' class='monospaced'>Destructor</literallayout></para>
  3458. </entry>
  3459. <entry>
  3460. <para><literallayout xml:space='preserve' class='monospaced'>The destructor is responsible for removing all segments upon completion of the
  3461. sttate machine processing.</literallayout></para>
  3462. </entry>
  3463. </row>
  3464. <row>
  3465. <entry>
  3466. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3467. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3468. </imageobject></mediaobject>
  3469. </literallayout></para>
  3470. </entry>
  3471. <entry>
  3472. <para><literallayout xml:space='preserve' class='monospaced'>machine_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3473. </entry>
  3474. <entry>
  3475. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3476. </entry>
  3477. </row>
  3478. <row>
  3479. <entry>
  3480. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3481. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3482. </imageobject></mediaobject>
  3483. </literallayout></para>
  3484. </entry>
  3485. <entry>
  3486. <para><literallayout xml:space='preserve' class='monospaced'>delete_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3487. </entry>
  3488. <entry>
  3489. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3490. </entry>
  3491. </row>
  3492. <row>
  3493. <entry>
  3494. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3495. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3496. </imageobject></mediaobject>
  3497. </literallayout></para>
  3498. </entry>
  3499. <entry>
  3500. <para><literallayout xml:space='preserve' class='monospaced'>delete_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3501. </entry>
  3502. <entry>
  3503. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3504. </entry>
  3505. </row>
  3506. <row>
  3507. <entry>
  3508. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3509. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  3510. </imageobject></mediaobject>
  3511. </literallayout></para>
  3512. </entry>
  3513. <entry>
  3514. <para><literallayout xml:space='preserve' class='monospaced'>Deletion State</literallayout></para>
  3515. </entry>
  3516. <entry>
  3517. <para><literallayout xml:space='preserve' class='monospaced'>A deletion state, upon exit, causes the lifecycle state machine and associated
  3518. object instance to cease to exist.</literallayout></para>
  3519. </entry>
  3520. </row>
  3521. <row>
  3522. <entry>
  3523. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3524. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3525. </imageobject></mediaobject>
  3526. </literallayout></para>
  3527. </entry>
  3528. <entry>
  3529. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3530. </entry>
  3531. <entry>
  3532. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3533. </entry>
  3534. </row>
  3535. <row>
  3536. <entry>
  3537. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3538. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3539. </imageobject></mediaobject>
  3540. </literallayout></para>
  3541. </entry>
  3542. <entry>
  3543. <para><literallayout xml:space='preserve' class='monospaced'>state_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3544. </entry>
  3545. <entry>
  3546. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3547. </entry>
  3548. </row>
  3549. <row>
  3550. <entry>
  3551. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3552. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  3553. </imageobject></mediaobject>
  3554. </literallayout></para>
  3555. </entry>
  3556. <entry>
  3557. <para><literallayout xml:space='preserve' class='monospaced'>Creation State</literallayout></para>
  3558. </entry>
  3559. <entry>
  3560. <para><literallayout xml:space='preserve' class='monospaced'>A creation state is a start state that might not be depicted on a state model.
  3561. The Shlaer-Mellor notation showed an arrow coming from nothing and entering a
  3562. state. In that case, the nothing is the creation state. A creation state will
  3563. never have a transition entering it.</literallayout></para>
  3564. </entry>
  3565. </row>
  3566. <row>
  3567. <entry>
  3568. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3569. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3570. </imageobject></mediaobject>
  3571. </literallayout></para>
  3572. </entry>
  3573. <entry>
  3574. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3575. </entry>
  3576. <entry>
  3577. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3578. </entry>
  3579. </row>
  3580. <row>
  3581. <entry>
  3582. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3583. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3584. </imageobject></mediaobject>
  3585. </literallayout></para>
  3586. </entry>
  3587. <entry>
  3588. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3589. </entry>
  3590. <entry>
  3591. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3592. </entry>
  3593. </row>
  3594. <row>
  3595. <entry>
  3596. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3597. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  3598. </imageobject></mediaobject>
  3599. </literallayout></para>
  3600. </entry>
  3601. <entry>
  3602. <para><literallayout xml:space='preserve' class='monospaced'>Cannot Happen</literallayout></para>
  3603. </entry>
  3604. <entry>
  3605. <para><literallayout xml:space='preserve' class='monospaced'>&quot;The &quot;can&apos;&apos;t happen&quot; entry is reserved for occasions when the event simply cannot
  3606. happen in the real world. For example, the event V3: Door opened cannot happen
  3607. when the oven is in state 5, since in that state the door is already opened.&quot;
  3608. [OL:MWS]</literallayout></para>
  3609. </entry>
  3610. </row>
  3611. <row>
  3612. <entry>
  3613. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3614. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3615. </imageobject></mediaobject>
  3616. </literallayout></para>
  3617. </entry>
  3618. <entry>
  3619. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3620. </entry>
  3621. <entry>
  3622. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3623. </entry>
  3624. </row>
  3625. <row>
  3626. <entry>
  3627. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3628. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  3629. </imageobject></mediaobject>
  3630. </literallayout></para>
  3631. </entry>
  3632. <entry>
  3633. <para><literallayout xml:space='preserve' class='monospaced'>Assignment</literallayout></para>
  3634. </entry>
  3635. <entry>
  3636. <para><literallayout xml:space='preserve' class='monospaced'>An assignment is the result of an assigner state model creating a relationship
  3637. between two object instances. The assignment represents the associative
  3638. relationship instantiation and the associative object instantiation.</literallayout></para>
  3639. </entry>
  3640. </row>
  3641. <row>
  3642. <entry>
  3643. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3644. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3645. </imageobject></mediaobject>
  3646. </literallayout></para>
  3647. </entry>
  3648. <entry>
  3649. <para><literallayout xml:space='preserve' class='monospaced'>relationship_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3650. </entry>
  3651. <entry>
  3652. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3653. </entry>
  3654. </row>
  3655. <row>
  3656. <entry>
  3657. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3658. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3659. </imageobject></mediaobject>
  3660. </literallayout></para>
  3661. </entry>
  3662. <entry>
  3663. <para><literallayout xml:space='preserve' class='monospaced'>machine_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3664. </entry>
  3665. <entry>
  3666. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3667. </entry>
  3668. </row>
  3669. <row>
  3670. <entry>
  3671. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3672. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  3673. </imageobject></mediaobject>
  3674. </literallayout></para>
  3675. </entry>
  3676. <entry>
  3677. <para><literallayout xml:space='preserve' class='monospaced'>Assigner</literallayout></para>
  3678. </entry>
  3679. <entry>
  3680. <para><literallayout xml:space='preserve' class='monospaced'>The Assigner is a &quot;state model that is responsible for creating instances of
  3681. the relationship by associating instances of the participating objects with one
  3682. another. ... the purpose of the Assigner is to act as a single point of control
  3683. through which competing requests are serialized&quot;. [OL:MWS]
  3684. An Assigner is object-based, not instance-based. This means that state is
  3685. maintained for the object, not for each instance of the object.</literallayout></para>
  3686. </entry>
  3687. </row>
  3688. <row>
  3689. <entry>
  3690. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3691. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3692. </imageobject></mediaobject>
  3693. </literallayout></para>
  3694. </entry>
  3695. <entry>
  3696. <para><literallayout xml:space='preserve' class='monospaced'>subset_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3697. </entry>
  3698. <entry>
  3699. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3700. </entry>
  3701. </row>
  3702. <row>
  3703. <entry>
  3704. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3705. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3706. </imageobject></mediaobject>
  3707. </literallayout></para>
  3708. </entry>
  3709. <entry>
  3710. <para><literallayout xml:space='preserve' class='monospaced'>reference_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3711. </entry>
  3712. <entry>
  3713. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3714. </entry>
  3715. </row>
  3716. <row>
  3717. <entry>
  3718. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3719. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3720. </imageobject></mediaobject>
  3721. </literallayout></para>
  3722. </entry>
  3723. <entry>
  3724. <para><literallayout xml:space='preserve' class='monospaced'>starter_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3725. </entry>
  3726. <entry>
  3727. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3728. </entry>
  3729. </row>
  3730. <row>
  3731. <entry>
  3732. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3733. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3734. </imageobject></mediaobject>
  3735. </literallayout></para>
  3736. </entry>
  3737. <entry>
  3738. <para><literallayout xml:space='preserve' class='monospaced'>starter_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3739. </entry>
  3740. <entry>
  3741. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3742. </entry>
  3743. </row>
  3744. <row>
  3745. <entry>
  3746. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3747. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3748. </imageobject></mediaobject>
  3749. </literallayout></para>
  3750. </entry>
  3751. <entry>
  3752. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3753. </entry>
  3754. <entry>
  3755. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3756. </entry>
  3757. </row>
  3758. <row>
  3759. <entry>
  3760. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3761. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  3762. </imageobject></mediaobject>
  3763. </literallayout></para>
  3764. </entry>
  3765. <entry>
  3766. <para><literallayout xml:space='preserve' class='monospaced'>Assigner Machine</literallayout></para>
  3767. </entry>
  3768. <entry>
  3769. <para><literallayout xml:space='preserve' class='monospaced'> An assigner machine is the runtime instantiation of an assigner model. The
  3770. assigner machine exists for the life of the system, so it is not dynamically
  3771. created or destroyed.
  3772. </literallayout></para>
  3773. </entry>
  3774. </row>
  3775. <row>
  3776. <entry>
  3777. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3778. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3779. </imageobject></mediaobject>
  3780. </literallayout></para>
  3781. </entry>
  3782. <entry>
  3783. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3784. </entry>
  3785. <entry>
  3786. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3787. </entry>
  3788. </row>
  3789. <row>
  3790. <entry>
  3791. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3792. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3793. </imageobject></mediaobject>
  3794. </literallayout></para>
  3795. </entry>
  3796. <entry>
  3797. <para><literallayout xml:space='preserve' class='monospaced'>assigner_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3798. </entry>
  3799. <entry>
  3800. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3801. </entry>
  3802. </row>
  3803. <row>
  3804. <entry>
  3805. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3806. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  3807. </imageobject></mediaobject>
  3808. </literallayout></para>
  3809. </entry>
  3810. <entry>
  3811. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  3812. </entry>
  3813. <entry>
  3814. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  3815. </entry>
  3816. </row>
  3817. </tbody>
  3818. </tgroup>
  3819. </table>
  3820. </literallayout></para>
  3821. <section>
  3822. <title>Class Activities</title>
  3823. <subtitle></subtitle>
  3824. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  3825. <section>
  3826. <title>Class Operations</title>
  3827. <subtitle></subtitle>
  3828. <section>
  3829. <title>Dynamics:Lifecycle State Machine: delete</title>
  3830. <subtitle></subtitle>
  3831. <para><literallayout xml:space='preserve' class='monospaced'>Clean up all relationships to prepare this instance for deletion.</literallayout></para>
  3832. <para><programlisting>select one smc related by self-&gt;SMC[R350];
  3833. select one sta related by smc-&gt;STA[R353];
  3834. unrelate smc from sta across R353;
  3835. unrelate smc from self across R350;
  3836. delete object instance smc;
  3837. select one lif related by self-&gt;LIF[R360];
  3838. unrelate self from lif across R360;
  3839. select one cre related by self-&gt;CRE[R348];
  3840. unrelate self from cre across R348;
  3841. select one del related by self-&gt;DEL[R349];
  3842. if (not empty del)
  3843. select one des related by self-&gt;DES[R349];
  3844. unrelate self from del across R349 using des;
  3845. delete object instance des;
  3846. end if;
  3847. select one ins related by self-&gt;INS[R361];
  3848. unrelate self from ins across R361;
  3849. </programlisting></para>
  3850. </section>
  3851. </section>
  3852. </section>
  3853. </section>
  3854. <section>
  3855. <title>Associations</title>
  3856. <subtitle>Associations</subtitle>
  3857. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  3858. <title>Dynamics</title>
  3859. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  3860. <thead>
  3861. <row>
  3862. <entry>
  3863. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3864. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  3865. </imageobject></mediaobject>
  3866. </literallayout></para>
  3867. </entry>
  3868. <entry>
  3869. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  3870. </entry>
  3871. <entry>
  3872. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  3873. </entry>
  3874. </row>
  3875. </thead>
  3876. <tbody>
  3877. <row>
  3878. <entry>
  3879. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3880. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  3881. </imageobject></mediaobject>
  3882. </literallayout></para>
  3883. </entry>
  3884. <entry>
  3885. <para><literallayout xml:space='preserve' class='monospaced'>300</literallayout></para>
  3886. </entry>
  3887. <entry>
  3888. <para><literallayout xml:space='preserve' class='monospaced'>There are two types of state models in Shlaer-Mellor, Lifecycle of an instance
  3889. and Assigner for relationships involving competition.</literallayout></para>
  3890. </entry>
  3891. </row>
  3892. <row>
  3893. <entry>
  3894. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3895. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  3896. </imageobject></mediaobject>
  3897. </literallayout></para>
  3898. </entry>
  3899. <entry>
  3900. <para><literallayout xml:space='preserve' class='monospaced'>302</literallayout></para>
  3901. </entry>
  3902. <entry>
  3903. <para><literallayout xml:space='preserve' class='monospaced'>An assignment instantiates an associative relationship and an instance of the
  3904. associative object. As not all associative relationships involve contention,
  3905. not every one is the result of an assignment.</literallayout></para>
  3906. </entry>
  3907. </row>
  3908. <row>
  3909. <entry>
  3910. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3911. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  3912. </imageobject></mediaobject>
  3913. </literallayout></para>
  3914. </entry>
  3915. <entry>
  3916. <para><literallayout xml:space='preserve' class='monospaced'>305</literallayout></para>
  3917. </entry>
  3918. <entry>
  3919. <para><literallayout xml:space='preserve' class='monospaced'>A state in the state model is either a living state, or in the case of a
  3920. lifecycle model is a deletion state to remove the object instance upon
  3921. completion of the state action.</literallayout></para>
  3922. </entry>
  3923. </row>
  3924. <row>
  3925. <entry>
  3926. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3927. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  3928. </imageobject></mediaobject>
  3929. </literallayout></para>
  3930. </entry>
  3931. <entry>
  3932. <para><literallayout xml:space='preserve' class='monospaced'>306</literallayout></para>
  3933. </entry>
  3934. <entry>
  3935. <para><literallayout xml:space='preserve' class='monospaced'>A living state can be designated as a creation state. A state model will only
  3936. have one creation state.
  3937. The creation aspect could be made an attribute of living state, but that
  3938. would imply that the creation aspect wasn&apos;&apos;t permanent. There should be no
  3939. reason to dynamically change which state is designated for creation. </literallayout></para>
  3940. </entry>
  3941. </row>
  3942. <row>
  3943. <entry>
  3944. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3945. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  3946. </imageobject></mediaobject>
  3947. </literallayout></para>
  3948. </entry>
  3949. <entry>
  3950. <para><literallayout xml:space='preserve' class='monospaced'>313</literallayout></para>
  3951. </entry>
  3952. <entry>
  3953. <para><literallayout xml:space='preserve' class='monospaced'>A start state is either a creation state, or a non-creation, entry state.</literallayout></para>
  3954. </entry>
  3955. </row>
  3956. <row>
  3957. <entry>
  3958. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3959. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  3960. </imageobject></mediaobject>
  3961. </literallayout></para>
  3962. </entry>
  3963. <entry>
  3964. <para><literallayout xml:space='preserve' class='monospaced'>321</literallayout></para>
  3965. </entry>
  3966. <entry>
  3967. <para><literallayout xml:space='preserve' class='monospaced'>A transition rule defines either the rules for entry into or exit from a state.</literallayout></para>
  3968. </entry>
  3969. </row>
  3970. <row>
  3971. <entry>
  3972. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3973. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  3974. </imageobject></mediaobject>
  3975. </literallayout></para>
  3976. </entry>
  3977. <entry>
  3978. <para><literallayout xml:space='preserve' class='monospaced'>324</literallayout></para>
  3979. </entry>
  3980. <entry>
  3981. <para><literallayout xml:space='preserve' class='monospaced'>A living state requires one or more exit rules to specify the conditions
  3982. required to exit the state.</literallayout></para>
  3983. </entry>
  3984. </row>
  3985. <row>
  3986. <entry>
  3987. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  3988. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  3989. </imageobject></mediaobject>
  3990. </literallayout></para>
  3991. </entry>
  3992. <entry>
  3993. <para><literallayout xml:space='preserve' class='monospaced'>325</literallayout></para>
  3994. </entry>
  3995. <entry>
  3996. <para><literallayout xml:space='preserve' class='monospaced'>An entry rule specifies the entry conditions required to be met before entry
  3997. into the target state.
  3998. Non-creation, start states might only have exit transitions, so the requirement
  3999. to have an entry rule is conditional.</literallayout></para>
  4000. </entry>
  4001. </row>
  4002. <row>
  4003. <entry>
  4004. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4005. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4006. </imageobject></mediaobject>
  4007. </literallayout></para>
  4008. </entry>
  4009. <entry>
  4010. <para><literallayout xml:space='preserve' class='monospaced'>323</literallayout></para>
  4011. </entry>
  4012. <entry>
  4013. <para><literallayout xml:space='preserve' class='monospaced'>Every transition requires that an entry rule is defined for the destination
  4014. state. An entry rule applies to all transistions into the state.</literallayout></para>
  4015. </entry>
  4016. </row>
  4017. <row>
  4018. <entry>
  4019. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4020. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4021. </imageobject></mediaobject>
  4022. </literallayout></para>
  4023. </entry>
  4024. <entry>
  4025. <para><literallayout xml:space='preserve' class='monospaced'>331</literallayout></para>
  4026. </entry>
  4027. <entry>
  4028. <para><literallayout xml:space='preserve' class='monospaced'>An unsuccessful transition is constrained by the rules of Shlaer-Mellor to be
  4029. an &quot;event ignored&quot; or &quot;can&apos;&apos;t happen&quot; result.</literallayout></para>
  4030. </entry>
  4031. </row>
  4032. <row>
  4033. <entry>
  4034. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4035. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4036. </imageobject></mediaobject>
  4037. </literallayout></para>
  4038. </entry>
  4039. <entry>
  4040. <para><literallayout xml:space='preserve' class='monospaced'>332</literallayout></para>
  4041. </entry>
  4042. <entry>
  4043. <para><literallayout xml:space='preserve' class='monospaced'>A successful transition always enters a state. A state can be specified as
  4044. the destination for more than one transition. Only a start state might not be a
  4045. destination for a successful transition.</literallayout></para>
  4046. </entry>
  4047. </row>
  4048. <row>
  4049. <entry>
  4050. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4051. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4052. </imageobject></mediaobject>
  4053. </literallayout></para>
  4054. </entry>
  4055. <entry>
  4056. <para><literallayout xml:space='preserve' class='monospaced'>341</literallayout></para>
  4057. </entry>
  4058. <entry>
  4059. <para><literallayout xml:space='preserve' class='monospaced'>A state model contains states. The states are specified by the state model.</literallayout></para>
  4060. </entry>
  4061. </row>
  4062. <row>
  4063. <entry>
  4064. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4065. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4066. </imageobject></mediaobject>
  4067. </literallayout></para>
  4068. </entry>
  4069. <entry>
  4070. <para><literallayout xml:space='preserve' class='monospaced'>345</literallayout></para>
  4071. </entry>
  4072. <entry>
  4073. <para><literallayout xml:space='preserve' class='monospaced'>An assigner is started in the designated starting state on application start.</literallayout></para>
  4074. </entry>
  4075. </row>
  4076. <row>
  4077. <entry>
  4078. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4079. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4080. </imageobject></mediaobject>
  4081. </literallayout></para>
  4082. </entry>
  4083. <entry>
  4084. <para><literallayout xml:space='preserve' class='monospaced'>348</literallayout></para>
  4085. </entry>
  4086. <entry>
  4087. <para><literallayout xml:space='preserve' class='monospaced'>All state machines start in a start state designated for the state model. There
  4088. is only one start state for a state machine, but it is assigned for all the
  4089. state machine instances.</literallayout></para>
  4090. </entry>
  4091. </row>
  4092. <row>
  4093. <entry>
  4094. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4095. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4096. </imageobject></mediaobject>
  4097. </literallayout></para>
  4098. </entry>
  4099. <entry>
  4100. <para><literallayout xml:space='preserve' class='monospaced'>349</literallayout></para>
  4101. </entry>
  4102. <entry>
  4103. <para><literallayout xml:space='preserve' class='monospaced'>A deletion state finalizes a state machine. The deletion state process will
  4104. destroy all the associated state machine instances.</literallayout></para>
  4105. </entry>
  4106. </row>
  4107. <row>
  4108. <entry>
  4109. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4110. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4111. </imageobject></mediaobject>
  4112. </literallayout></para>
  4113. </entry>
  4114. <entry>
  4115. <para><literallayout xml:space='preserve' class='monospaced'>350</literallayout></para>
  4116. </entry>
  4117. <entry>
  4118. <para><literallayout xml:space='preserve' class='monospaced'>A state machine is either a lifecycle machine or an assigner machine.</literallayout></para>
  4119. </entry>
  4120. </row>
  4121. <row>
  4122. <entry>
  4123. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4124. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4125. </imageobject></mediaobject>
  4126. </literallayout></para>
  4127. </entry>
  4128. <entry>
  4129. <para><literallayout xml:space='preserve' class='monospaced'>351</literallayout></para>
  4130. </entry>
  4131. <entry>
  4132. <para><literallayout xml:space='preserve' class='monospaced'>Assignments are created and managed by the assigner state machine.</literallayout></para>
  4133. </entry>
  4134. </row>
  4135. <row>
  4136. <entry>
  4137. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4138. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4139. </imageobject></mediaobject>
  4140. </literallayout></para>
  4141. </entry>
  4142. <entry>
  4143. <para><literallayout xml:space='preserve' class='monospaced'>352</literallayout></para>
  4144. </entry>
  4145. <entry>
  4146. <para><literallayout xml:space='preserve' class='monospaced'>The assigner state model constrains the operation of the assigner state
  4147. machine. The assigner state machine must conform to the assigner state model.
  4148. Unlike for lifecycle models and machines, the relationship is unconditional
  4149. on both ends, because the assigner machine isn&apos;&apos;t tied to an instantiation of an
  4150. object.</literallayout></para>
  4151. </entry>
  4152. </row>
  4153. <row>
  4154. <entry>
  4155. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4156. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4157. </imageobject></mediaobject>
  4158. </literallayout></para>
  4159. </entry>
  4160. <entry>
  4161. <para><literallayout xml:space='preserve' class='monospaced'>353</literallayout></para>
  4162. </entry>
  4163. <entry>
  4164. <para><literallayout xml:space='preserve' class='monospaced'>A state machine is currently spending time in a state, and a state is a defined
  4165. point of time for a state machine.</literallayout></para>
  4166. </entry>
  4167. </row>
  4168. <row>
  4169. <entry>
  4170. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4171. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4172. </imageobject></mediaobject>
  4173. </literallayout></para>
  4174. </entry>
  4175. <entry>
  4176. <para><literallayout xml:space='preserve' class='monospaced'>347</literallayout></para>
  4177. </entry>
  4178. <entry>
  4179. <para><literallayout xml:space='preserve' class='monospaced'>A subset, which can be a whole set, can have its dynamics modeled in a
  4180. lifecycle state model. A lifecycle state model will always model the dynamics
  4181. of one subset.</literallayout></para>
  4182. </entry>
  4183. </row>
  4184. <row>
  4185. <entry>
  4186. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4187. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4188. </imageobject></mediaobject>
  4189. </literallayout></para>
  4190. </entry>
  4191. <entry>
  4192. <para><literallayout xml:space='preserve' class='monospaced'>354</literallayout></para>
  4193. </entry>
  4194. <entry>
  4195. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4196. </entry>
  4197. </row>
  4198. <row>
  4199. <entry>
  4200. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4201. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4202. </imageobject></mediaobject>
  4203. </literallayout></para>
  4204. </entry>
  4205. <entry>
  4206. <para><literallayout xml:space='preserve' class='monospaced'>355</literallayout></para>
  4207. </entry>
  4208. <entry>
  4209. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4210. </entry>
  4211. </row>
  4212. <row>
  4213. <entry>
  4214. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4215. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4216. </imageobject></mediaobject>
  4217. </literallayout></para>
  4218. </entry>
  4219. <entry>
  4220. <para><literallayout xml:space='preserve' class='monospaced'>329</literallayout></para>
  4221. </entry>
  4222. <entry>
  4223. <para><literallayout xml:space='preserve' class='monospaced'>Every transition requires an exit rule, so an exit rule is defined for each
  4224. transition.</literallayout></para>
  4225. </entry>
  4226. </row>
  4227. <row>
  4228. <entry>
  4229. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4230. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4231. </imageobject></mediaobject>
  4232. </literallayout></para>
  4233. </entry>
  4234. <entry>
  4235. <para><literallayout xml:space='preserve' class='monospaced'>326</literallayout></para>
  4236. </entry>
  4237. <entry>
  4238. <para><literallayout xml:space='preserve' class='monospaced'>The exit rule must contain a reference to the event that causes exit from the
  4239. current state. An event is always referenced by an exit rule.</literallayout></para>
  4240. </entry>
  4241. </row>
  4242. <row>
  4243. <entry>
  4244. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4245. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4246. </imageobject></mediaobject>
  4247. </literallayout></para>
  4248. </entry>
  4249. <entry>
  4250. <para><literallayout xml:space='preserve' class='monospaced'>356</literallayout></para>
  4251. </entry>
  4252. <entry>
  4253. <para><literallayout xml:space='preserve' class='monospaced'>An event is always constrained by one entry rule, and an entry rule constrains
  4254. all the events that are directed to the same state.</literallayout></para>
  4255. </entry>
  4256. </row>
  4257. <row>
  4258. <entry>
  4259. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4260. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4261. </imageobject></mediaobject>
  4262. </literallayout></para>
  4263. </entry>
  4264. <entry>
  4265. <para><literallayout xml:space='preserve' class='monospaced'>357</literallayout></para>
  4266. </entry>
  4267. <entry>
  4268. <para><literallayout xml:space='preserve' class='monospaced'>An entry rule is composed of its entry data, even in the no entry data case.
  4269. Entry data is used to compose a single entry rule.</literallayout></para>
  4270. </entry>
  4271. </row>
  4272. <row>
  4273. <entry>
  4274. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4275. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4276. </imageobject></mediaobject>
  4277. </literallayout></para>
  4278. </entry>
  4279. <entry>
  4280. <para><literallayout xml:space='preserve' class='monospaced'>358</literallayout></para>
  4281. </entry>
  4282. <entry>
  4283. <para><literallayout xml:space='preserve' class='monospaced'>A single entry data is associated with one or more event parameters, but an
  4284. event parameter conforms to only one entry data.
  4285. </literallayout></para>
  4286. </entry>
  4287. </row>
  4288. <row>
  4289. <entry>
  4290. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4291. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4292. </imageobject></mediaobject>
  4293. </literallayout></para>
  4294. </entry>
  4295. <entry>
  4296. <para><literallayout xml:space='preserve' class='monospaced'>359</literallayout></para>
  4297. </entry>
  4298. <entry>
  4299. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4300. </entry>
  4301. </row>
  4302. <row>
  4303. <entry>
  4304. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4305. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4306. </imageobject></mediaobject>
  4307. </literallayout></para>
  4308. </entry>
  4309. <entry>
  4310. <para><literallayout xml:space='preserve' class='monospaced'>360</literallayout></para>
  4311. </entry>
  4312. <entry>
  4313. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4314. </entry>
  4315. </row>
  4316. <row>
  4317. <entry>
  4318. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4319. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4320. </imageobject></mediaobject>
  4321. </literallayout></para>
  4322. </entry>
  4323. <entry>
  4324. <para><literallayout xml:space='preserve' class='monospaced'>361</literallayout></para>
  4325. </entry>
  4326. <entry>
  4327. <para><literallayout xml:space='preserve' class='monospaced'>A lifecycle state machine controls the life of one object instance, and an
  4328. object instance can be controlled by a lifecycle state machine.
  4329. Every instance has it&apos;&apos;s own state machine.</literallayout></para>
  4330. </entry>
  4331. </row>
  4332. <row>
  4333. <entry>
  4334. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4335. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4336. </imageobject></mediaobject>
  4337. </literallayout></para>
  4338. </entry>
  4339. <entry>
  4340. <para><literallayout xml:space='preserve' class='monospaced'>362</literallayout></para>
  4341. </entry>
  4342. <entry>
  4343. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4344. </entry>
  4345. </row>
  4346. <row>
  4347. <entry>
  4348. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4349. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4350. </imageobject></mediaobject>
  4351. </literallayout></para>
  4352. </entry>
  4353. <entry>
  4354. <para><literallayout xml:space='preserve' class='monospaced'>363</literallayout></para>
  4355. </entry>
  4356. <entry>
  4357. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4358. </entry>
  4359. </row>
  4360. <row>
  4361. <entry>
  4362. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4363. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  4364. </imageobject></mediaobject>
  4365. </literallayout></para>
  4366. </entry>
  4367. <entry>
  4368. <para><literallayout xml:space='preserve' class='monospaced'>364</literallayout></para>
  4369. </entry>
  4370. <entry>
  4371. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4372. </entry>
  4373. </row>
  4374. </tbody>
  4375. </tgroup>
  4376. </table>
  4377. </literallayout></para>
  4378. </section>
  4379. </section>
  4380. <section>
  4381. <title>Object</title>
  4382. <subtitle>Package</subtitle>
  4383. <para><literallayout xml:space='preserve' class='monospaced'>The subsystem of the metamodel concerning objects, instances, and attributes.<figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Object-PackageDiagram-figure'>
  4384. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Object-PackageDiagram-figure-title'>Object Package Diagram</title>
  4385. <mediaobject><imageobject>
  4386. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Object-Package Diagram.png' scalefit='1' width='100%'/>
  4387. </imageobject></mediaobject>
  4388. </figure>
  4389. </literallayout></para>
  4390. <section>
  4391. <title>Datatypes</title>
  4392. <subtitle></subtitle>
  4393. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  4394. <title>Datatypes</title>
  4395. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  4396. <thead>
  4397. <row>
  4398. <entry>
  4399. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4400. <imagedata fileref='images/DataType.gif' scalefit='1' width='100%'/>
  4401. </imageobject></mediaobject>
  4402. </literallayout></para>
  4403. </entry>
  4404. <entry>
  4405. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  4406. </entry>
  4407. <entry>
  4408. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  4409. </entry>
  4410. </row>
  4411. </thead>
  4412. <tbody>
  4413. </tbody>
  4414. </tgroup>
  4415. </table>
  4416. </literallayout></para>
  4417. </section>
  4418. <section>
  4419. <title>Classes</title>
  4420. <subtitle></subtitle>
  4421. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  4422. <title>Classes</title>
  4423. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  4424. <thead>
  4425. <row>
  4426. <entry>
  4427. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4428. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  4429. </imageobject></mediaobject>
  4430. </literallayout></para>
  4431. </entry>
  4432. <entry>
  4433. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  4434. </entry>
  4435. <entry>
  4436. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  4437. </entry>
  4438. </row>
  4439. </thead>
  4440. <tbody>
  4441. <row>
  4442. <entry>
  4443. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4444. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  4445. </imageobject></mediaobject>
  4446. </literallayout></para>
  4447. </entry>
  4448. <entry>
  4449. <para><literallayout xml:space='preserve' class='monospaced'>Attribute</literallayout></para>
  4450. </entry>
  4451. <entry>
  4452. <para><literallayout xml:space='preserve' class='monospaced'>An attribute is used to characterize aspects of the objects within a domain.</literallayout></para>
  4453. </entry>
  4454. </row>
  4455. <row>
  4456. <entry>
  4457. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4458. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4459. </imageobject></mediaobject>
  4460. </literallayout></para>
  4461. </entry>
  4462. <entry>
  4463. <para><literallayout xml:space='preserve' class='monospaced'>name:string</literallayout></para>
  4464. </entry>
  4465. <entry>
  4466. <para><literallayout xml:space='preserve' class='monospaced'>A descriptive string concerning the characterization.</literallayout></para>
  4467. </entry>
  4468. </row>
  4469. <row>
  4470. <entry>
  4471. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4472. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  4473. </imageobject></mediaobject>
  4474. </literallayout></para>
  4475. </entry>
  4476. <entry>
  4477. <para><literallayout xml:space='preserve' class='monospaced'>Identifier</literallayout></para>
  4478. </entry>
  4479. <entry>
  4480. <para><literallayout xml:space='preserve' class='monospaced'>An identifier is used to uniquely identify the members of a set. &quot;An identifier
  4481. is a set of one or more attributes whose values uniquely distinguish each
  4482. instance of an object.&quot; [OL:MWS]
  4483. The set always has one identifying attribute that applies to all set
  4484. members, but some identifying might only apply to some subset members. e.g., a
  4485. subset formed from the intersection of two sets will have at least two
  4486. identifying attributes, one from each set.</literallayout></para>
  4487. </entry>
  4488. </row>
  4489. <row>
  4490. <entry>
  4491. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4492. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4493. </imageobject></mediaobject>
  4494. </literallayout></para>
  4495. </entry>
  4496. <entry>
  4497. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  4498. </entry>
  4499. <entry>
  4500. <para><literallayout xml:space='preserve' class='monospaced'>A unique identifier for the instance identifier in the domain.</literallayout></para>
  4501. </entry>
  4502. </row>
  4503. <row>
  4504. <entry>
  4505. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4506. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  4507. </imageobject></mediaobject>
  4508. </literallayout></para>
  4509. </entry>
  4510. <entry>
  4511. <para><literallayout xml:space='preserve' class='monospaced'>Specializing Segment</literallayout></para>
  4512. </entry>
  4513. <entry>
  4514. <para><literallayout xml:space='preserve' class='monospaced'>A specializing segment applies to only a subset of instances of the object.</literallayout></para>
  4515. </entry>
  4516. </row>
  4517. <row>
  4518. <entry>
  4519. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4520. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4521. </imageobject></mediaobject>
  4522. </literallayout></para>
  4523. </entry>
  4524. <entry>
  4525. <para><literallayout xml:space='preserve' class='monospaced'>segment_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4526. </entry>
  4527. <entry>
  4528. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4529. </entry>
  4530. </row>
  4531. <row>
  4532. <entry>
  4533. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4534. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4535. </imageobject></mediaobject>
  4536. </literallayout></para>
  4537. </entry>
  4538. <entry>
  4539. <para><literallayout xml:space='preserve' class='monospaced'>specialization_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4540. </entry>
  4541. <entry>
  4542. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4543. </entry>
  4544. </row>
  4545. <row>
  4546. <entry>
  4547. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4548. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  4549. </imageobject></mediaobject>
  4550. </literallayout></para>
  4551. </entry>
  4552. <entry>
  4553. <para><literallayout xml:space='preserve' class='monospaced'>Subsequent Specialization</literallayout></para>
  4554. </entry>
  4555. <entry>
  4556. <para><literallayout xml:space='preserve' class='monospaced'>A subsequent specialization occurs due to other specializations. It shows that
  4557. the subset exists without being linked to a specific metamodel element.
  4558. The subsequent specialization can be due to specialization of the subtype
  4559. leaf with no other differentiator at its own level.</literallayout></para>
  4560. </entry>
  4561. </row>
  4562. <row>
  4563. <entry>
  4564. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4565. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4566. </imageobject></mediaobject>
  4567. </literallayout></para>
  4568. </entry>
  4569. <entry>
  4570. <para><literallayout xml:space='preserve' class='monospaced'>specialization_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4571. </entry>
  4572. <entry>
  4573. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4574. </entry>
  4575. </row>
  4576. <row>
  4577. <entry>
  4578. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4579. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  4580. </imageobject></mediaobject>
  4581. </literallayout></para>
  4582. </entry>
  4583. <entry>
  4584. <para><literallayout xml:space='preserve' class='monospaced'>Subset</literallayout></para>
  4585. </entry>
  4586. <entry>
  4587. <para><literallayout xml:space='preserve' class='monospaced'>A proper subset represents a partitioning of a set or, in the case of an
  4588. intersection, multiple sets. An improper subset represents the entire set, so
  4589. an object can also be classified as subset.
  4590. In OOA terms, a subtype always implies a subset, so set theory terms are
  4591. used to provide better paths to common relationships in the metamodel.</literallayout></para>
  4592. </entry>
  4593. </row>
  4594. <row>
  4595. <entry>
  4596. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4597. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4598. </imageobject></mediaobject>
  4599. </literallayout></para>
  4600. </entry>
  4601. <entry>
  4602. <para><literallayout xml:space='preserve' class='monospaced'>keyletters:string</literallayout></para>
  4603. </entry>
  4604. <entry>
  4605. <para><literallayout xml:space='preserve' class='monospaced'>Keyletters allow one to be lazy about referring to a subset.
  4606. </literallayout></para>
  4607. </entry>
  4608. </row>
  4609. <row>
  4610. <entry>
  4611. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4612. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4613. </imageobject></mediaobject>
  4614. </literallayout></para>
  4615. </entry>
  4616. <entry>
  4617. <para><literallayout xml:space='preserve' class='monospaced'>name:string</literallayout></para>
  4618. </entry>
  4619. <entry>
  4620. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4621. </entry>
  4622. </row>
  4623. <row>
  4624. <entry>
  4625. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4626. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  4627. </imageobject></mediaobject>
  4628. </literallayout></para>
  4629. </entry>
  4630. <entry>
  4631. <para><literallayout xml:space='preserve' class='monospaced'>Supertype</literallayout></para>
  4632. </entry>
  4633. <entry>
  4634. <para><literallayout xml:space='preserve' class='monospaced'>A supertype represents a partitioning of the set associated with a specialized
  4635. object. The supertype isn&apos;&apos;t a subset of the object, but can collect a subset of
  4636. attributes that are shared by the subsets formed by the supertype&apos;&apos;s
  4637. partitioning.
  4638. The representation of the metamodel supertype on the object model is the
  4639. part of the supertype/subtype relationship attached to the supertype object,
  4640. not the supertype object itself.
  4641. The identifier for the supertype is the name of the graphical relationship,
  4642. that denotes the subtyping. i.e., the relationship with the bar across it in
  4643. the Shlaer-Mellor notation, or the relationship with the triangle on the end in
  4644. the UML notation.</literallayout></para>
  4645. </entry>
  4646. </row>
  4647. <row>
  4648. <entry>
  4649. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4650. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4651. </imageobject></mediaobject>
  4652. </literallayout></para>
  4653. </entry>
  4654. <entry>
  4655. <para><literallayout xml:space='preserve' class='monospaced'>id:string</literallayout></para>
  4656. </entry>
  4657. <entry>
  4658. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4659. </entry>
  4660. </row>
  4661. <row>
  4662. <entry>
  4663. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4664. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  4665. </imageobject></mediaobject>
  4666. </literallayout></para>
  4667. </entry>
  4668. <entry>
  4669. <para><literallayout xml:space='preserve' class='monospaced'>Subtyping</literallayout></para>
  4670. </entry>
  4671. <entry>
  4672. <para><literallayout xml:space='preserve' class='monospaced'>Subtyping is the defining of subsets via a supertype partitioning. The
  4673. relationship is abstracted to capture the many to many condition that arises
  4674. from an intersection of two objects.
  4675. On the object model, the subtyping is the leg from the supertype part of
  4676. the relationship to the subtype object.</literallayout></para>
  4677. </entry>
  4678. </row>
  4679. <row>
  4680. <entry>
  4681. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4682. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4683. </imageobject></mediaobject>
  4684. </literallayout></para>
  4685. </entry>
  4686. <entry>
  4687. <para><literallayout xml:space='preserve' class='monospaced'>supertype_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4688. </entry>
  4689. <entry>
  4690. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4691. </entry>
  4692. </row>
  4693. <row>
  4694. <entry>
  4695. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4696. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4697. </imageobject></mediaobject>
  4698. </literallayout></para>
  4699. </entry>
  4700. <entry>
  4701. <para><literallayout xml:space='preserve' class='monospaced'>subtype_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4702. </entry>
  4703. <entry>
  4704. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4705. </entry>
  4706. </row>
  4707. <row>
  4708. <entry>
  4709. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4710. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  4711. </imageobject></mediaobject>
  4712. </literallayout></para>
  4713. </entry>
  4714. <entry>
  4715. <para><literallayout xml:space='preserve' class='monospaced'>Specializing Attribute</literallayout></para>
  4716. </entry>
  4717. <entry>
  4718. <para><literallayout xml:space='preserve' class='monospaced'>A specializing attribute is one that applies only to some instances of an
  4719. object.</literallayout></para>
  4720. </entry>
  4721. </row>
  4722. <row>
  4723. <entry>
  4724. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4725. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4726. </imageobject></mediaobject>
  4727. </literallayout></para>
  4728. </entry>
  4729. <entry>
  4730. <para><literallayout xml:space='preserve' class='monospaced'>subtype_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4731. </entry>
  4732. <entry>
  4733. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4734. </entry>
  4735. </row>
  4736. <row>
  4737. <entry>
  4738. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4739. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4740. </imageobject></mediaobject>
  4741. </literallayout></para>
  4742. </entry>
  4743. <entry>
  4744. <para><literallayout xml:space='preserve' class='monospaced'>specialization_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4745. </entry>
  4746. <entry>
  4747. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4748. </entry>
  4749. </row>
  4750. <row>
  4751. <entry>
  4752. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4753. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4754. </imageobject></mediaobject>
  4755. </literallayout></para>
  4756. </entry>
  4757. <entry>
  4758. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4759. </entry>
  4760. <entry>
  4761. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4762. </entry>
  4763. </row>
  4764. <row>
  4765. <entry>
  4766. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4767. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  4768. </imageobject></mediaobject>
  4769. </literallayout></para>
  4770. </entry>
  4771. <entry>
  4772. <para><literallayout xml:space='preserve' class='monospaced'>Referential Attribute</literallayout></para>
  4773. </entry>
  4774. <entry>
  4775. <para><literallayout xml:space='preserve' class='monospaced'>&quot;Referential attributes are used to tie an instance of one object to the
  4776. instance of another.&quot; [OL:MWS]</literallayout></para>
  4777. </entry>
  4778. </row>
  4779. <row>
  4780. <entry>
  4781. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4782. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4783. </imageobject></mediaobject>
  4784. </literallayout></para>
  4785. </entry>
  4786. <entry>
  4787. <para><literallayout xml:space='preserve' class='monospaced'>referenced_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4788. </entry>
  4789. <entry>
  4790. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4791. </entry>
  4792. </row>
  4793. <row>
  4794. <entry>
  4795. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4796. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4797. </imageobject></mediaobject>
  4798. </literallayout></para>
  4799. </entry>
  4800. <entry>
  4801. <para><literallayout xml:space='preserve' class='monospaced'>identifier_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4802. </entry>
  4803. <entry>
  4804. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4805. </entry>
  4806. </row>
  4807. <row>
  4808. <entry>
  4809. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4810. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4811. </imageobject></mediaobject>
  4812. </literallayout></para>
  4813. </entry>
  4814. <entry>
  4815. <para><literallayout xml:space='preserve' class='monospaced'>relationship_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4816. </entry>
  4817. <entry>
  4818. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4819. </entry>
  4820. </row>
  4821. <row>
  4822. <entry>
  4823. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4824. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4825. </imageobject></mediaobject>
  4826. </literallayout></para>
  4827. </entry>
  4828. <entry>
  4829. <para><literallayout xml:space='preserve' class='monospaced'>relationship_number:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4830. </entry>
  4831. <entry>
  4832. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4833. </entry>
  4834. </row>
  4835. <row>
  4836. <entry>
  4837. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4838. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4839. </imageobject></mediaobject>
  4840. </literallayout></para>
  4841. </entry>
  4842. <entry>
  4843. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4844. </entry>
  4845. <entry>
  4846. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4847. </entry>
  4848. </row>
  4849. <row>
  4850. <entry>
  4851. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4852. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  4853. </imageobject></mediaobject>
  4854. </literallayout></para>
  4855. </entry>
  4856. <entry>
  4857. <para><literallayout xml:space='preserve' class='monospaced'>Proper subset</literallayout></para>
  4858. </entry>
  4859. <entry>
  4860. <para><literallayout xml:space='preserve' class='monospaced'>A proper subset is not equal to the containing set. If the boundaries of the
  4861. set aren&apos;&apos;t considered to be a partition, then a proper subset exists whenever a
  4862. set is partitioned.
  4863. It should be noted that a proper subset can have all the attributes and
  4864. behavior of the containing set, but still be a proper subset if there exists
  4865. another proper subset of the same set with different attributes and/or
  4866. behavior.</literallayout></para>
  4867. </entry>
  4868. </row>
  4869. <row>
  4870. <entry>
  4871. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4872. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4873. </imageobject></mediaobject>
  4874. </literallayout></para>
  4875. </entry>
  4876. <entry>
  4877. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4878. </entry>
  4879. <entry>
  4880. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4881. </entry>
  4882. </row>
  4883. <row>
  4884. <entry>
  4885. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4886. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  4887. </imageobject></mediaobject>
  4888. </literallayout></para>
  4889. </entry>
  4890. <entry>
  4891. <para><literallayout xml:space='preserve' class='monospaced'>Object</literallayout></para>
  4892. </entry>
  4893. <entry>
  4894. <para><literallayout xml:space='preserve' class='monospaced'>&quot;An object is an abstraction of a set of real-world things such that:
  4895. - all the things in the set, the instances, have the same characteristics, and
  4896. - all instances are subject to and conform to the same set of rules and
  4897. policies.&quot; [OL:MWS]</literallayout></para>
  4898. </entry>
  4899. </row>
  4900. <row>
  4901. <entry>
  4902. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4903. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4904. </imageobject></mediaobject>
  4905. </literallayout></para>
  4906. </entry>
  4907. <entry>
  4908. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4909. </entry>
  4910. <entry>
  4911. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4912. </entry>
  4913. </row>
  4914. <row>
  4915. <entry>
  4916. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4917. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4918. </imageobject></mediaobject>
  4919. </literallayout></para>
  4920. </entry>
  4921. <entry>
  4922. <para><literallayout xml:space='preserve' class='monospaced'>domain_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4923. </entry>
  4924. <entry>
  4925. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4926. </entry>
  4927. </row>
  4928. <row>
  4929. <entry>
  4930. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4931. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  4932. </imageobject></mediaobject>
  4933. </literallayout></para>
  4934. </entry>
  4935. <entry>
  4936. <para><literallayout xml:space='preserve' class='monospaced'>Object Specialization</literallayout></para>
  4937. </entry>
  4938. <entry>
  4939. <para><literallayout xml:space='preserve' class='monospaced'>An object specialization is any means of subsetting a set defined by an object
  4940. into specialized instances. The specialization can occur via data or behavior.</literallayout></para>
  4941. </entry>
  4942. </row>
  4943. <row>
  4944. <entry>
  4945. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4946. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4947. </imageobject></mediaobject>
  4948. </literallayout></para>
  4949. </entry>
  4950. <entry>
  4951. <para><literallayout xml:space='preserve' class='monospaced'>supertype_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4952. </entry>
  4953. <entry>
  4954. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4955. </entry>
  4956. </row>
  4957. <row>
  4958. <entry>
  4959. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4960. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4961. </imageobject></mediaobject>
  4962. </literallayout></para>
  4963. </entry>
  4964. <entry>
  4965. <para><literallayout xml:space='preserve' class='monospaced'>subtype_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  4966. </entry>
  4967. <entry>
  4968. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  4969. </entry>
  4970. </row>
  4971. <row>
  4972. <entry>
  4973. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4974. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  4975. </imageobject></mediaobject>
  4976. </literallayout></para>
  4977. </entry>
  4978. <entry>
  4979. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  4980. </entry>
  4981. <entry>
  4982. <para><literallayout xml:space='preserve' class='monospaced'>A unique identifier for the specialization.</literallayout></para>
  4983. </entry>
  4984. </row>
  4985. <row>
  4986. <entry>
  4987. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  4988. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  4989. </imageobject></mediaobject>
  4990. </literallayout></para>
  4991. </entry>
  4992. <entry>
  4993. <para><literallayout xml:space='preserve' class='monospaced'>Object Instance</literallayout></para>
  4994. </entry>
  4995. <entry>
  4996. <para><literallayout xml:space='preserve' class='monospaced'>A set member. e.g., an instantiation of an object as a specified value.
  4997. NOTE: The term, &quot;specified value&quot;, indicates that all the attributes of the
  4998. subset have been assigned values.</literallayout></para>
  4999. </entry>
  5000. </row>
  5001. <row>
  5002. <entry>
  5003. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5004. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5005. </imageobject></mediaobject>
  5006. </literallayout></para>
  5007. </entry>
  5008. <entry>
  5009. <para><literallayout xml:space='preserve' class='monospaced'>subset_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5010. </entry>
  5011. <entry>
  5012. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5013. </entry>
  5014. </row>
  5015. <row>
  5016. <entry>
  5017. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5018. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5019. </imageobject></mediaobject>
  5020. </literallayout></para>
  5021. </entry>
  5022. <entry>
  5023. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5024. </entry>
  5025. <entry>
  5026. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5027. </entry>
  5028. </row>
  5029. <row>
  5030. <entry>
  5031. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5032. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5033. </imageobject></mediaobject>
  5034. </literallayout></para>
  5035. </entry>
  5036. <entry>
  5037. <para><literallayout xml:space='preserve' class='monospaced'>value_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5038. </entry>
  5039. <entry>
  5040. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5041. </entry>
  5042. </row>
  5043. <row>
  5044. <entry>
  5045. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5046. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5047. </imageobject></mediaobject>
  5048. </literallayout></para>
  5049. </entry>
  5050. <entry>
  5051. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  5052. </entry>
  5053. <entry>
  5054. <para><literallayout xml:space='preserve' class='monospaced'>A unique identifier for the instance within the domain.</literallayout></para>
  5055. </entry>
  5056. </row>
  5057. <row>
  5058. <entry>
  5059. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5060. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  5061. </imageobject></mediaobject>
  5062. </literallayout></para>
  5063. </entry>
  5064. <entry>
  5065. <para><literallayout xml:space='preserve' class='monospaced'>Object Attribute</literallayout></para>
  5066. </entry>
  5067. <entry>
  5068. <para><literallayout xml:space='preserve' class='monospaced'>An object attribute applies to all instances of the object across any subset
  5069. boundaries. It is a non-specializer.</literallayout></para>
  5070. </entry>
  5071. </row>
  5072. <row>
  5073. <entry>
  5074. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5075. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5076. </imageobject></mediaobject>
  5077. </literallayout></para>
  5078. </entry>
  5079. <entry>
  5080. <para><literallayout xml:space='preserve' class='monospaced'>object_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5081. </entry>
  5082. <entry>
  5083. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5084. </entry>
  5085. </row>
  5086. <row>
  5087. <entry>
  5088. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5089. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5090. </imageobject></mediaobject>
  5091. </literallayout></para>
  5092. </entry>
  5093. <entry>
  5094. <para><literallayout xml:space='preserve' class='monospaced'>domain_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5095. </entry>
  5096. <entry>
  5097. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5098. </entry>
  5099. </row>
  5100. <row>
  5101. <entry>
  5102. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5103. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5104. </imageobject></mediaobject>
  5105. </literallayout></para>
  5106. </entry>
  5107. <entry>
  5108. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5109. </entry>
  5110. <entry>
  5111. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5112. </entry>
  5113. </row>
  5114. <row>
  5115. <entry>
  5116. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5117. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  5118. </imageobject></mediaobject>
  5119. </literallayout></para>
  5120. </entry>
  5121. <entry>
  5122. <para><literallayout xml:space='preserve' class='monospaced'>Non-referential Attribute</literallayout></para>
  5123. </entry>
  5124. <entry>
  5125. <para><literallayout xml:space='preserve' class='monospaced'>A non-referential attribute &quot;is an abstraction of a single characteristic
  5126. possessed by all entities that were themselves abstracted as an object.&quot;
  5127. [OL:MWS]
  5128. It should be noted that at least one of the non-referential attributes
  5129. related to an object will participate in identification of the instances. While
  5130. precedence has been set in some tools to not abstract arbitrary identifiers,
  5131. a primary key must exist, and it would be specious to say we can assume it&apos;&apos;s
  5132. existence.</literallayout></para>
  5133. </entry>
  5134. </row>
  5135. <row>
  5136. <entry>
  5137. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5138. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5139. </imageobject></mediaobject>
  5140. </literallayout></para>
  5141. </entry>
  5142. <entry>
  5143. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5144. </entry>
  5145. <entry>
  5146. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5147. </entry>
  5148. </row>
  5149. <row>
  5150. <entry>
  5151. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5152. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5153. </imageobject></mediaobject>
  5154. </literallayout></para>
  5155. </entry>
  5156. <entry>
  5157. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5158. </entry>
  5159. <entry>
  5160. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5161. </entry>
  5162. </row>
  5163. <row>
  5164. <entry>
  5165. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5166. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  5167. </imageobject></mediaobject>
  5168. </literallayout></para>
  5169. </entry>
  5170. <entry>
  5171. <para><literallayout xml:space='preserve' class='monospaced'>Non-Intersecting</literallayout></para>
  5172. </entry>
  5173. <entry>
  5174. <para><literallayout xml:space='preserve' class='monospaced'>A non-intersecting proper subset is a subset of only one set.</literallayout></para>
  5175. </entry>
  5176. </row>
  5177. <row>
  5178. <entry>
  5179. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5180. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5181. </imageobject></mediaobject>
  5182. </literallayout></para>
  5183. </entry>
  5184. <entry>
  5185. <para><literallayout xml:space='preserve' class='monospaced'>supertype_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5186. </entry>
  5187. <entry>
  5188. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5189. </entry>
  5190. </row>
  5191. <row>
  5192. <entry>
  5193. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5194. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5195. </imageobject></mediaobject>
  5196. </literallayout></para>
  5197. </entry>
  5198. <entry>
  5199. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5200. </entry>
  5201. <entry>
  5202. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5203. </entry>
  5204. </row>
  5205. <row>
  5206. <entry>
  5207. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5208. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  5209. </imageobject></mediaobject>
  5210. </literallayout></para>
  5211. </entry>
  5212. <entry>
  5213. <para><literallayout xml:space='preserve' class='monospaced'>Multi-level Partitioning</literallayout></para>
  5214. </entry>
  5215. <entry>
  5216. <para><literallayout xml:space='preserve' class='monospaced'>Multi-level partitioning abstracts the relationship formed when a proper subset
  5217. is further partitioned (subset) by a supertype partitioning.
  5218. A multi-level partitioning is instantiated whenever a subtype is subtyped
  5219. in the object model.</literallayout></para>
  5220. </entry>
  5221. </row>
  5222. <row>
  5223. <entry>
  5224. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5225. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5226. </imageobject></mediaobject>
  5227. </literallayout></para>
  5228. </entry>
  5229. <entry>
  5230. <para><literallayout xml:space='preserve' class='monospaced'>supertype_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5231. </entry>
  5232. <entry>
  5233. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5234. </entry>
  5235. </row>
  5236. <row>
  5237. <entry>
  5238. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5239. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5240. </imageobject></mediaobject>
  5241. </literallayout></para>
  5242. </entry>
  5243. <entry>
  5244. <para><literallayout xml:space='preserve' class='monospaced'>supertype_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5245. </entry>
  5246. <entry>
  5247. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5248. </entry>
  5249. </row>
  5250. <row>
  5251. <entry>
  5252. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5253. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  5254. </imageobject></mediaobject>
  5255. </literallayout></para>
  5256. </entry>
  5257. <entry>
  5258. <para><literallayout xml:space='preserve' class='monospaced'>Intersection</literallayout></para>
  5259. </entry>
  5260. <entry>
  5261. <para><literallayout xml:space='preserve' class='monospaced'>The intersection associative object is used to track the participants in the
  5262. intersecting proper subset formation brought about by multiple objects.</literallayout></para>
  5263. </entry>
  5264. </row>
  5265. <row>
  5266. <entry>
  5267. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5268. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5269. </imageobject></mediaobject>
  5270. </literallayout></para>
  5271. </entry>
  5272. <entry>
  5273. <para><literallayout xml:space='preserve' class='monospaced'>object_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5274. </entry>
  5275. <entry>
  5276. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5277. </entry>
  5278. </row>
  5279. <row>
  5280. <entry>
  5281. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5282. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5283. </imageobject></mediaobject>
  5284. </literallayout></para>
  5285. </entry>
  5286. <entry>
  5287. <para><literallayout xml:space='preserve' class='monospaced'>domain_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5288. </entry>
  5289. <entry>
  5290. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5291. </entry>
  5292. </row>
  5293. <row>
  5294. <entry>
  5295. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5296. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5297. </imageobject></mediaobject>
  5298. </literallayout></para>
  5299. </entry>
  5300. <entry>
  5301. <para><literallayout xml:space='preserve' class='monospaced'>subtype_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5302. </entry>
  5303. <entry>
  5304. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5305. </entry>
  5306. </row>
  5307. <row>
  5308. <entry>
  5309. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5310. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5311. </imageobject></mediaobject>
  5312. </literallayout></para>
  5313. </entry>
  5314. <entry>
  5315. <para><literallayout xml:space='preserve' class='monospaced'>specialization_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5316. </entry>
  5317. <entry>
  5318. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5319. </entry>
  5320. </row>
  5321. <row>
  5322. <entry>
  5323. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5324. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  5325. </imageobject></mediaobject>
  5326. </literallayout></para>
  5327. </entry>
  5328. <entry>
  5329. <para><literallayout xml:space='preserve' class='monospaced'>Intersecting</literallayout></para>
  5330. </entry>
  5331. <entry>
  5332. <para><literallayout xml:space='preserve' class='monospaced'>An intersecting proper subset is formed from the intersection of two or more
  5333. sets.</literallayout></para>
  5334. </entry>
  5335. </row>
  5336. <row>
  5337. <entry>
  5338. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5339. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5340. </imageobject></mediaobject>
  5341. </literallayout></para>
  5342. </entry>
  5343. <entry>
  5344. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5345. </entry>
  5346. <entry>
  5347. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5348. </entry>
  5349. </row>
  5350. <row>
  5351. <entry>
  5352. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5353. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  5354. </imageobject></mediaobject>
  5355. </literallayout></para>
  5356. </entry>
  5357. <entry>
  5358. <para><literallayout xml:space='preserve' class='monospaced'>InstanceIdentification</literallayout></para>
  5359. </entry>
  5360. <entry>
  5361. <para><literallayout xml:space='preserve' class='monospaced'>An instantiation is the creation of an identifier for an instance that is a
  5362. member of a subset.</literallayout></para>
  5363. </entry>
  5364. </row>
  5365. <row>
  5366. <entry>
  5367. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5368. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5369. </imageobject></mediaobject>
  5370. </literallayout></para>
  5371. </entry>
  5372. <entry>
  5373. <para><literallayout xml:space='preserve' class='monospaced'>instance_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5374. </entry>
  5375. <entry>
  5376. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5377. </entry>
  5378. </row>
  5379. <row>
  5380. <entry>
  5381. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5382. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5383. </imageobject></mediaobject>
  5384. </literallayout></para>
  5385. </entry>
  5386. <entry>
  5387. <para><literallayout xml:space='preserve' class='monospaced'>id_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5388. </entry>
  5389. <entry>
  5390. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5391. </entry>
  5392. </row>
  5393. <row>
  5394. <entry>
  5395. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5396. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  5397. </imageobject></mediaobject>
  5398. </literallayout></para>
  5399. </entry>
  5400. <entry>
  5401. <para><literallayout xml:space='preserve' class='monospaced'>Identification Participation</literallayout></para>
  5402. </entry>
  5403. <entry>
  5404. <para><literallayout xml:space='preserve' class='monospaced'>Formalizes all attribute participation in identification of an object&apos;&apos;s
  5405. instances.</literallayout></para>
  5406. </entry>
  5407. </row>
  5408. <row>
  5409. <entry>
  5410. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5411. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5412. </imageobject></mediaobject>
  5413. </literallayout></para>
  5414. </entry>
  5415. <entry>
  5416. <para><literallayout xml:space='preserve' class='monospaced'>groupId:integer</literallayout></para>
  5417. </entry>
  5418. <entry>
  5419. <para><literallayout xml:space='preserve' class='monospaced'>A number used to identify a group of identifiers. Each group of identifiers are
  5420. used to uniquely identify an object instance.
  5421. The preferred identifier will have a groupId value of 1. The preferred
  5422. identifier is the only identifier used to formalize an instance relationship as
  5423. referential attributes.
  5424. &quot;An object may have several identifiers, each composed of one or more
  5425. attributes. For example, an Airport object may have the atttributes
  5426. Airport Code
  5427. Latitude
  5428. Longitude
  5429. City
  5430. Number of Passenger Gates
  5431. The Airport Code attribute is an identifier of the Airport object, and the
  5432. combination of Latitude and Longitude is another identifier of Airport.
  5433. If an object has multiple identifiers, one such identifier is chosen as the
  5434. preferred identifier.&quot; [OL:MWS]
  5435. In tools, like BridgePoint, an indication is placed next to identifying
  5436. attributes, and grouping of identifiers is done numerically. e.g., {I}, {I2},
  5437. {I3}, etc. This metamodel is just using a numeric indicator. The numeral, 1, is
  5438. the preferred identifier, and like BridgePoint, the editor part of the toolset
  5439. might choose to only display numerals greater than one.</literallayout></para>
  5440. </entry>
  5441. </row>
  5442. <row>
  5443. <entry>
  5444. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5445. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5446. </imageobject></mediaobject>
  5447. </literallayout></para>
  5448. </entry>
  5449. <entry>
  5450. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5451. </entry>
  5452. <entry>
  5453. <para><literallayout xml:space='preserve' class='monospaced'>The name of the attribute used for identification.</literallayout></para>
  5454. </entry>
  5455. </row>
  5456. <row>
  5457. <entry>
  5458. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5459. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5460. </imageobject></mediaobject>
  5461. </literallayout></para>
  5462. </entry>
  5463. <entry>
  5464. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5465. </entry>
  5466. <entry>
  5467. <para><literallayout xml:space='preserve' class='monospaced'>The unique identifier for the Identifier instance.
  5468. </literallayout></para>
  5469. </entry>
  5470. </row>
  5471. <row>
  5472. <entry>
  5473. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5474. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  5475. </imageobject></mediaobject>
  5476. </literallayout></para>
  5477. </entry>
  5478. <entry>
  5479. <para><literallayout xml:space='preserve' class='monospaced'>Derivation</literallayout></para>
  5480. </entry>
  5481. <entry>
  5482. <para><literallayout xml:space='preserve' class='monospaced'>A derivation is a dependency mapping between two attributes. The attributes can
  5483. be from the same object or different objects.</literallayout></para>
  5484. </entry>
  5485. </row>
  5486. <row>
  5487. <entry>
  5488. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5489. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5490. </imageobject></mediaobject>
  5491. </literallayout></para>
  5492. </entry>
  5493. <entry>
  5494. <para><literallayout xml:space='preserve' class='monospaced'>derived_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5495. </entry>
  5496. <entry>
  5497. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5498. </entry>
  5499. </row>
  5500. <row>
  5501. <entry>
  5502. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5503. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5504. </imageobject></mediaobject>
  5505. </literallayout></para>
  5506. </entry>
  5507. <entry>
  5508. <para><literallayout xml:space='preserve' class='monospaced'>value_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5509. </entry>
  5510. <entry>
  5511. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5512. </entry>
  5513. </row>
  5514. <row>
  5515. <entry>
  5516. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5517. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5518. </imageobject></mediaobject>
  5519. </literallayout></para>
  5520. </entry>
  5521. <entry>
  5522. <para><literallayout xml:space='preserve' class='monospaced'>attribute_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5523. </entry>
  5524. <entry>
  5525. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5526. </entry>
  5527. </row>
  5528. <row>
  5529. <entry>
  5530. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5531. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  5532. </imageobject></mediaobject>
  5533. </literallayout></para>
  5534. </entry>
  5535. <entry>
  5536. <para><literallayout xml:space='preserve' class='monospaced'>Chording</literallayout></para>
  5537. </entry>
  5538. <entry>
  5539. <para><literallayout xml:space='preserve' class='monospaced'>A chording represents all the chords belonging to a supertype partitioning.
  5540. Proper subsets are never partitioned by a chord, so the supertype partitioning
  5541. of a subset requires a separate relationship in the metamodel.</literallayout></para>
  5542. </entry>
  5543. </row>
  5544. <row>
  5545. <entry>
  5546. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5547. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5548. </imageobject></mediaobject>
  5549. </literallayout></para>
  5550. </entry>
  5551. <entry>
  5552. <para><literallayout xml:space='preserve' class='monospaced'>object_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5553. </entry>
  5554. <entry>
  5555. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5556. </entry>
  5557. </row>
  5558. <row>
  5559. <entry>
  5560. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5561. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5562. </imageobject></mediaobject>
  5563. </literallayout></para>
  5564. </entry>
  5565. <entry>
  5566. <para><literallayout xml:space='preserve' class='monospaced'>domain_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5567. </entry>
  5568. <entry>
  5569. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5570. </entry>
  5571. </row>
  5572. <row>
  5573. <entry>
  5574. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  5575. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  5576. </imageobject></mediaobject>
  5577. </literallayout></para>
  5578. </entry>
  5579. <entry>
  5580. <para><literallayout xml:space='preserve' class='monospaced'>supertype_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  5581. </entry>
  5582. <entry>
  5583. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5584. </entry>
  5585. </row>
  5586. </tbody>
  5587. </tgroup>
  5588. </table>
  5589. </literallayout></para>
  5590. <section>
  5591. <title>Class Activities</title>
  5592. <subtitle></subtitle>
  5593. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  5594. <section>
  5595. <title>Class Operations</title>
  5596. <subtitle></subtitle>
  5597. <section>
  5598. <title>Object:Attribute: belongsTo</title>
  5599. <subtitle></subtitle>
  5600. <para><literallayout xml:space='preserve' class='monospaced'>Determines if the attribute is related to the specfied object.</literallayout></para>
  5601. <para><programlisting>belongsTo = true;
  5602. select one oa related by self-&gt;OA[R124] where selected.object_name == param.object;
  5603. if (empty oa)
  5604. select one spa related by self-&gt;SPA[R124] where selected.subtype_name == param.object;
  5605. if (empty spa)
  5606. belongsTo = false;
  5607. end if;
  5608. end if;
  5609. return belongsTo;
  5610. </programlisting></para>
  5611. </section>
  5612. </section>
  5613. </section>
  5614. <section>
  5615. <title>Class Activities</title>
  5616. <subtitle></subtitle>
  5617. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  5618. <section>
  5619. <title>Class Operations</title>
  5620. <subtitle></subtitle>
  5621. <section>
  5622. <title>Object:Identifier: delete</title>
  5623. <subtitle></subtitle>
  5624. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5625. <para><programlisting>select many idps related by self-&gt;IDP[R102];
  5626. for each idp in idps
  5627. select one atr related by idp-&gt;ATR[R102];
  5628. unrelate self from atr across R102 using idp;
  5629. delete object instance idp;
  5630. end for;
  5631. select many itns related by self-&gt;ITN[R101];
  5632. for each itn in itns
  5633. select one ins related by itn-&gt;INS[R101];
  5634. unrelate self from ins across R101 using itn;
  5635. delete object instance itn;
  5636. ins.delete();
  5637. delete object instance ins;
  5638. end for;
  5639. </programlisting></para>
  5640. </section>
  5641. </section>
  5642. </section>
  5643. <section>
  5644. <title>Class Activities</title>
  5645. <subtitle></subtitle>
  5646. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  5647. <section>
  5648. <title>Class Operations</title>
  5649. <subtitle></subtitle>
  5650. <section>
  5651. <title>Object:Subset: isSubInDomain</title>
  5652. <subtitle></subtitle>
  5653. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5654. <para><programlisting>rc =false;
  5655. select one obj related by self-&gt;OBJ[R107];
  5656. if (not empty obj)
  5657. if (obj.domain_name == param.domain)
  5658. rc = true;
  5659. end if;
  5660. else
  5661. select one prp related by self-&gt;PRP[R107];
  5662. // Check for root supertype.
  5663. select one obj related by prp-&gt;NSB[R108]-&gt;SUP[R136]-&gt;OBJ[R134];
  5664. while (empty obj)
  5665. select many itss related by prp-&gt;ISB[R108]-&gt;ITS[R135];
  5666. for each its in itss
  5667. if (its.domain_name == param.domain)
  5668. rc = true;
  5669. break;
  5670. end if;
  5671. end for;
  5672. if (not rc)
  5673. // Move up to next subtyping
  5674. select one prp related by prp-&gt;NSB[R108]-&gt;SUP[R136]-&gt;PRP[R114];
  5675. // Check for root supertype.
  5676. select one obj related by prp-&gt;NSB[R108]-&gt;SUP[R136]-&gt;OBJ[R134];
  5677. end if;
  5678. end while;
  5679. if (not rc and (obj.domain_name == param.domain))
  5680. rc = true;
  5681. end if;
  5682. end if;
  5683. return rc;
  5684. </programlisting></para>
  5685. </section>
  5686. <section>
  5687. <title>Object:Subset: hasStateModel</title>
  5688. <subtitle></subtitle>
  5689. <para><literallayout xml:space='preserve' class='monospaced'>Returns true if the type of state model specified already exists for the subset.</literallayout></para>
  5690. <para><programlisting>rc = true;
  5691. if (param.assigner)
  5692. select one asr related by self-&gt;ASR[R354];
  5693. if (not empty asr)
  5694. rc = false;
  5695. end if;
  5696. else
  5697. select one lif related by self-&gt;LIF[R347];
  5698. if (not empty lif)
  5699. rc = false;
  5700. end if;
  5701. end if;
  5702. return rc;
  5703. </programlisting></para>
  5704. </section>
  5705. <section>
  5706. <title>Object:Subset: instantiateAttributes</title>
  5707. <subtitle></subtitle>
  5708. <para><literallayout xml:space='preserve' class='monospaced'>Instantiate attributes associated directly with this subset, and then get the
  5709. next level subsets and tell them to instantiate their attributes.</literallayout></para>
  5710. <para><programlisting>select one obj related by self-&gt;OBJ[R107];
  5711. if (not empty obj)
  5712. select many oas related by obj-&gt;OA[R129];
  5713. for each oa in oas
  5714. select one nra related by oa-&gt;ATR[R124]-&gt;NRA[R103];
  5715. select one type related by nra-&gt;TYPE[R123];
  5716. nra.instantiate( objectInstance:param.objectInstance );
  5717. end for;
  5718. else
  5719. select one prp related by self-&gt;PRP[R107];
  5720. select many spas related by prp-&gt;SPA[R130];
  5721. for each spa in spas
  5722. select one nra related by spa-&gt;ATR[R124]-&gt;NRA[R103];
  5723. select one type related by nra-&gt;TYPE[R123];
  5724. nra.instantiate( objectInstance:param.objectInstance );
  5725. end for;
  5726. select many sups related by prp-&gt;SUP[R122];
  5727. for each sup in sups
  5728. select one sub related by sup-&gt;OBJ[R134]-&gt;SUB[R107];
  5729. if (empty sub)
  5730. select one sub related by sup-&gt;PRP[R114]-&gt;SUB[R107];
  5731. end if;
  5732. sub.instantiateAttributes( objectInstance:param.objectInstance );
  5733. end for;
  5734. end if;
  5735. </programlisting></para>
  5736. </section>
  5737. <section>
  5738. <title>Object:Subset: associateReferentials</title>
  5739. <subtitle></subtitle>
  5740. <para><literallayout xml:space='preserve' class='monospaced'>Finds identifiers in this subtype and creates referentials, then finds any
  5741. higher-level sub/supertypes and repeats the operation.</literallayout></para>
  5742. <para><programlisting>select any irl from instances of IRL where selected.number == param.relationship;
  5743. // First collect any identifiers for this subtype
  5744. irl.createReferentials( objectName:self.name );
  5745. // Then search up the hierarchy until the root supertype is found.
  5746. select one obj related by self-&gt;OBJ[R107];
  5747. if (empty obj)
  5748. select one prp related by self-&gt;PRP[R107];
  5749. select many sups related by prp-&gt;SUP[R122];
  5750. for each sup in sups
  5751. select one sub related by sup-&gt;OBJ[R134]-&gt;SUB[R107];
  5752. if (empty sub)
  5753. select one sub related by sup-&gt;PRP[R114]-&gt;SUB[R107];
  5754. end if;
  5755. sub.associateReferentials( relationship:param.relationship );
  5756. end for;
  5757. end if;
  5758. </programlisting></para>
  5759. </section>
  5760. <section>
  5761. <title>Object:Subset: isSubsetOf</title>
  5762. <subtitle></subtitle>
  5763. <para><literallayout xml:space='preserve' class='monospaced'>Checks to see if this subset is a member of the named set (object).</literallayout></para>
  5764. <para><programlisting>rc = false;
  5765. select one obj related by self-&gt;OBJ[R107] where selected.name == param.object;
  5766. if (not empty obj)
  5767. rc = true;
  5768. else
  5769. select one nsb related by self-&gt;PRP[R107]-&gt;NSB[R108];
  5770. if (not empty nsb)
  5771. select one obj related by nsb-&gt;SUP[R136]-&gt;OBJ[R134] where selected.name == param.object;
  5772. if (not empty obj)
  5773. rc = true;
  5774. else
  5775. select one sub related by nsb-&gt;SUP[R136]-&gt;PRP[R114]-&gt;SUB[R107];
  5776. rc = sub.isSubsetOf( object:param.object );
  5777. end if;
  5778. else
  5779. select one isb related by self-&gt;PRP[R107]-&gt;ISB[R108];
  5780. select any obj related by isb-&gt;OBJ[R135] where selected.name == param.object;
  5781. if (not empty obj)
  5782. rc = true;
  5783. end if;
  5784. end if;
  5785. end if;
  5786. return rc;
  5787. </programlisting></para>
  5788. </section>
  5789. <section>
  5790. <title>Object:Subset: instantiateMethods</title>
  5791. <subtitle></subtitle>
  5792. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5793. <para><programlisting>select one obj related by self-&gt;OBJ[R107];
  5794. if (not empty obj)
  5795. select many nms related by obj-&gt;NM[R131];
  5796. for each nm in nms
  5797. select one im related by nm-&gt;IM[R533];
  5798. im.instantiate( objectInstance:param.objectInstance );
  5799. end for;
  5800. else
  5801. select one prp related by self-&gt;PRP[R107];
  5802. select many smts related by prp-&gt;SBT[R122]-&gt;OBS[R126]-&gt;SMT[R125];
  5803. for each smt in smts
  5804. select one im related by smt-&gt;IM[R533];
  5805. im.instantiate( objectInstance:param.objectInstance );
  5806. end for;
  5807. select many sups related by prp-&gt;SUP[R122];
  5808. for each sup in sups
  5809. select one sub related by sup-&gt;OBJ[R134]-&gt;SUB[R107];
  5810. if (empty sub)
  5811. select one sub related by sup-&gt;PRP[R114]-&gt;SUB[R107];
  5812. end if;
  5813. sub.instantiateMethods( objectInstance:param.objectInstance );
  5814. end for;
  5815. end if;
  5816. </programlisting></para>
  5817. </section>
  5818. </section>
  5819. </section>
  5820. <section>
  5821. <title>Class Activities</title>
  5822. <subtitle></subtitle>
  5823. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  5824. <section>
  5825. <title>Class Operations</title>
  5826. <subtitle></subtitle>
  5827. <section>
  5828. <title>Object:Supertype: hasSubtype</title>
  5829. <subtitle></subtitle>
  5830. <para><literallayout xml:space='preserve' class='monospaced'>Determines if the named subtype is part of this supertype&apos;&apos;s hierarchy.</literallayout></para>
  5831. <para><programlisting>rc = false;
  5832. select any prp related by self-&gt;PRP[R122] where selected.name == param.subtype;
  5833. if (not empty prp)
  5834. rc = true;
  5835. else
  5836. select many sups related by self-&gt;PRP[R122]-&gt;SUP[R114];
  5837. for each sup in sups
  5838. rc = sup.hasSubtype( subtype:param.subtype );
  5839. if (rc)
  5840. break;
  5841. end if;
  5842. end for;
  5843. end if;
  5844. return rc;
  5845. </programlisting></para>
  5846. </section>
  5847. </section>
  5848. </section>
  5849. <section>
  5850. <title>Class Activities</title>
  5851. <subtitle></subtitle>
  5852. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  5853. <section>
  5854. <title>Class Operations</title>
  5855. <subtitle></subtitle>
  5856. <section>
  5857. <title>Object:Proper subset: hasPeerSegment</title>
  5858. <subtitle></subtitle>
  5859. <para><literallayout xml:space='preserve' class='monospaced'>Determines if this subset&apos;&apos;s state model segment is a peer state model segment.
  5860. This routine checks for a supertype partitioning across R122, then gets the
  5861. supertype object(s) across R114 and determines if there is an associated state
  5862. model segment. If there is no associated state model segment, then this method
  5863. calls itself to recurse through the supertype object&apos;&apos;s hierarchy.</literallayout></para>
  5864. <para><programlisting>// Determine if this is a peer segment. i.e., not a splice
  5865. peer = true;
  5866. // Get supertyping
  5867. select one sub related by self-&gt;SUB[R107];
  5868. select any sup related by sub-&gt;PRP[R107]-&gt;SUP[R122];
  5869. if (not empty sup)
  5870. select many sups related by sub-&gt;PRP[R107]-&gt;SUP[R122];
  5871. for each sup in sups
  5872. // Get subertype object
  5873. select one prp related by sup-&gt;PRP[R114];
  5874. if (not empty prp)
  5875. // Does this subtype have a state model segment?
  5876. select any sps related by prp-&gt;SBT[R122]-&gt;OBS[R126]-&gt;SPS[R125];
  5877. if (not empty sps)
  5878. peer = false;
  5879. else
  5880. peer = prp.hasPeerSegment();
  5881. end if;
  5882. if (not peer)
  5883. break;
  5884. end if;
  5885. end if;
  5886. end for;
  5887. end if;
  5888. return peer;
  5889. </programlisting></para>
  5890. </section>
  5891. </section>
  5892. </section>
  5893. <section>
  5894. <title>Class Activities</title>
  5895. <subtitle></subtitle>
  5896. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  5897. <section>
  5898. <title>Class Operations</title>
  5899. <subtitle></subtitle>
  5900. <section>
  5901. <title>Object:Object: hasSubtype</title>
  5902. <subtitle></subtitle>
  5903. <para><literallayout xml:space='preserve' class='monospaced'>Determines if the named subtype is this object or part of this object&apos;&apos;s
  5904. subtyping hierarchy.
  5905. </literallayout></para>
  5906. <para><programlisting>rc = false;
  5907. if (self.name == param.subtype)
  5908. rc = true;
  5909. else
  5910. select many sups related by self-&gt;SUP[R134];
  5911. for each sup in sups
  5912. rc = sup.hasSubtype( subtype:param.subtype );
  5913. if (rc)
  5914. break;
  5915. end if;
  5916. end for;
  5917. end if;
  5918. return rc;
  5919. </programlisting></para>
  5920. </section>
  5921. </section>
  5922. </section>
  5923. <section>
  5924. <title>Class Activities</title>
  5925. <subtitle></subtitle>
  5926. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  5927. <section>
  5928. <title>Class Operations</title>
  5929. <subtitle></subtitle>
  5930. <section>
  5931. <title>Object:Object Instance: delete</title>
  5932. <subtitle></subtitle>
  5933. <para><literallayout xml:space='preserve' class='monospaced'>Satisfies deleting all relationships to this instance and all related instance
  5934. data, such as attribute instances, method instances, and state machines.
  5935. Doesn&apos;&apos;t delete this instance. That must be handled by the caller. The
  5936. architecture domain should call this at the end of processing a deletion state.</literallayout></para>
  5937. <para><programlisting>select one sub related by self-&gt;SUB[R112];
  5938. // Cleanup relationships
  5939. select many rins related by self-&gt;RIN[R120.&apos;&apos;is related to&apos;&apos;];
  5940. for each rin in rins
  5941. select one ins related by rin-&gt;INS[R120.&apos;&apos;is related to&apos;&apos;];
  5942. unrelate self from ins across R120.&apos;&apos;is related to&apos;&apos; using rin;
  5943. rin.delete();
  5944. delete object instance rin;
  5945. end for;
  5946. // Cleanup attributes
  5947. select many atns related by self-&gt;ATN[R643];
  5948. for each atn in atns
  5949. unrelate self from atn across R643;
  5950. atn.delete();
  5951. delete object instance atn;
  5952. end for;
  5953. // Cleanup methods
  5954. select many ains related by self-&gt;AIN[R648];
  5955. for each ain in ains
  5956. ain.delete();
  5957. delete object instance ain;
  5958. end for;
  5959. // Cleanup state machines
  5960. select one lsm related by self-&gt;LSM[R361];
  5961. if (not empty lsm)
  5962. lsm.delete();
  5963. delete object instance lsm;
  5964. end if;
  5965. // Cleanup self
  5966. unrelate self from sub across R112;
  5967. select many itns related by self-&gt;ITN[R101];
  5968. for each itn in itns
  5969. select one id related by itn-&gt;ID[R101];
  5970. unrelate self from id across R101 using itn;
  5971. delete object instance itn;
  5972. end for;
  5973. </programlisting></para>
  5974. </section>
  5975. </section>
  5976. </section>
  5977. <section>
  5978. <title>Class Activities</title>
  5979. <subtitle></subtitle>
  5980. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  5981. <section>
  5982. <title>Class Operations</title>
  5983. <subtitle></subtitle>
  5984. <section>
  5985. <title>Object:Non-referential Attribute: instantiate</title>
  5986. <subtitle></subtitle>
  5987. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  5988. <para><programlisting>select any ins from instances of INS where selected.id == param.objectInstance;
  5989. create object instance atn of ATN;
  5990. relate atn to self across R642;
  5991. relate atn to ins across R643;
  5992. create object instance var of VAR;
  5993. relate var to atn across R626;
  5994. create object instance dus of DUS;
  5995. relate dus to var across R624;
  5996. select one type related by self-&gt;TYPE[R123];
  5997. relate type to dus across R625;
  5998. </programlisting></para>
  5999. </section>
  6000. </section>
  6001. </section>
  6002. </section>
  6003. <section>
  6004. <title>Associations</title>
  6005. <subtitle>Associations</subtitle>
  6006. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  6007. <title>Object</title>
  6008. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  6009. <thead>
  6010. <row>
  6011. <entry>
  6012. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6013. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6014. </imageobject></mediaobject>
  6015. </literallayout></para>
  6016. </entry>
  6017. <entry>
  6018. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  6019. </entry>
  6020. <entry>
  6021. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  6022. </entry>
  6023. </row>
  6024. </thead>
  6025. <tbody>
  6026. <row>
  6027. <entry>
  6028. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6029. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6030. </imageobject></mediaobject>
  6031. </literallayout></para>
  6032. </entry>
  6033. <entry>
  6034. <para><literallayout xml:space='preserve' class='monospaced'>103</literallayout></para>
  6035. </entry>
  6036. <entry>
  6037. <para><literallayout xml:space='preserve' class='monospaced'>Attributes can be non-referential, which means they are used to give value or
  6038. identification to an instance of an object, or referential, which means they
  6039. are used to identify the instances related to the instance of an object.</literallayout></para>
  6040. </entry>
  6041. </row>
  6042. <row>
  6043. <entry>
  6044. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6045. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6046. </imageobject></mediaobject>
  6047. </literallayout></para>
  6048. </entry>
  6049. <entry>
  6050. <para><literallayout xml:space='preserve' class='monospaced'>101</literallayout></para>
  6051. </entry>
  6052. <entry>
  6053. <para><literallayout xml:space='preserve' class='monospaced'>An identifier uniquely identifies instances when an object is instantiated. The
  6054. instance might have multiple identifiers, each of which provides a separate
  6055. path to identification of the instance.
  6056. </literallayout></para>
  6057. </entry>
  6058. </row>
  6059. <row>
  6060. <entry>
  6061. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6062. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6063. </imageobject></mediaobject>
  6064. </literallayout></para>
  6065. </entry>
  6066. <entry>
  6067. <para><literallayout xml:space='preserve' class='monospaced'>102</literallayout></para>
  6068. </entry>
  6069. <entry>
  6070. <para><literallayout xml:space='preserve' class='monospaced'>An identifier is composed of one or more attributes. Since the identifier
  6071. applies to only one instance, the attributes used can compose many identifiers,
  6072. so each identification is abstracted as an object.</literallayout></para>
  6073. </entry>
  6074. </row>
  6075. <row>
  6076. <entry>
  6077. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6078. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6079. </imageobject></mediaobject>
  6080. </literallayout></para>
  6081. </entry>
  6082. <entry>
  6083. <para><literallayout xml:space='preserve' class='monospaced'>107</literallayout></para>
  6084. </entry>
  6085. <entry>
  6086. <para><literallayout xml:space='preserve' class='monospaced'>Subsets are classified as proper or improper subsets. Improper subsets are an
  6087. entire set, which is known in Shlaer-Mellor terms as an object. This
  6088. partitioning allows an association between object instance and subset, which
  6089. allows the object instance object to represent an instance member of an
  6090. unspecialized object or an instance member of a subset of a specialized object.</literallayout></para>
  6091. </entry>
  6092. </row>
  6093. <row>
  6094. <entry>
  6095. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6096. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6097. </imageobject></mediaobject>
  6098. </literallayout></para>
  6099. </entry>
  6100. <entry>
  6101. <para><literallayout xml:space='preserve' class='monospaced'>108</literallayout></para>
  6102. </entry>
  6103. <entry>
  6104. <para><literallayout xml:space='preserve' class='monospaced'>Proper subsets are formed by partitioning of a single set or partitioning by
  6105. intersection of more than one set.
  6106. Making this distinction is important to establish less ambiguous
  6107. relationships in the model with regard to multiplicities between objects,
  6108. subsets, attributes and instances.</literallayout></para>
  6109. </entry>
  6110. </row>
  6111. <row>
  6112. <entry>
  6113. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6114. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6115. </imageobject></mediaobject>
  6116. </literallayout></para>
  6117. </entry>
  6118. <entry>
  6119. <para><literallayout xml:space='preserve' class='monospaced'>112</literallayout></para>
  6120. </entry>
  6121. <entry>
  6122. <para><literallayout xml:space='preserve' class='monospaced'>An instance is a member of one subset. The subset can contain many instances,
  6123. or no instances in the case where an object hasn&apos;&apos;t been instantiated for that
  6124. subset. This supports the concept of the empty set.</literallayout></para>
  6125. </entry>
  6126. </row>
  6127. <row>
  6128. <entry>
  6129. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6130. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6131. </imageobject></mediaobject>
  6132. </literallayout></para>
  6133. </entry>
  6134. <entry>
  6135. <para><literallayout xml:space='preserve' class='monospaced'>114</literallayout></para>
  6136. </entry>
  6137. <entry>
  6138. <para><literallayout xml:space='preserve' class='monospaced'>A proper subset can be partitioned by supertype partitioning. As the subset is
  6139. already formed by a partition, this is referred to as multi-level partitioning.
  6140. In the case where the subset is partitioned by more than one supertype, it is
  6141. called multi-way partitioning.</literallayout></para>
  6142. </entry>
  6143. </row>
  6144. <row>
  6145. <entry>
  6146. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6147. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6148. </imageobject></mediaobject>
  6149. </literallayout></para>
  6150. </entry>
  6151. <entry>
  6152. <para><literallayout xml:space='preserve' class='monospaced'>120</literallayout></para>
  6153. </entry>
  6154. <entry>
  6155. <para><literallayout xml:space='preserve' class='monospaced'>Instances are related to other instances when a relationship is instantiated.</literallayout></para>
  6156. </entry>
  6157. </row>
  6158. <row>
  6159. <entry>
  6160. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6161. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6162. </imageobject></mediaobject>
  6163. </literallayout></para>
  6164. </entry>
  6165. <entry>
  6166. <para><literallayout xml:space='preserve' class='monospaced'>122</literallayout></para>
  6167. </entry>
  6168. <entry>
  6169. <para><literallayout xml:space='preserve' class='monospaced'>Subsets are formed by supertype partitionings, and a subset is a subtype for
  6170. one or more supertypes. The partitioning relationship is thus abstracted as a
  6171. subtyping.
  6172. Non-intersecting subtypes are further constrained by R136 to belong to only
  6173. one supertype.
  6174. &quot;OOA does not permit creating an instance of the supertype without creating
  6175. an instance of one subtype, and vice versa.&quot; [OL:MWS]</literallayout></para>
  6176. </entry>
  6177. </row>
  6178. <row>
  6179. <entry>
  6180. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6181. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6182. </imageobject></mediaobject>
  6183. </literallayout></para>
  6184. </entry>
  6185. <entry>
  6186. <para><literallayout xml:space='preserve' class='monospaced'>105</literallayout></para>
  6187. </entry>
  6188. <entry>
  6189. <para><literallayout xml:space='preserve' class='monospaced'>An object inhabits only one modeled domain. The modeled domain can contain many
  6190. objects, but always has at least one.</literallayout></para>
  6191. </entry>
  6192. </row>
  6193. <row>
  6194. <entry>
  6195. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6196. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6197. </imageobject></mediaobject>
  6198. </literallayout></para>
  6199. </entry>
  6200. <entry>
  6201. <para><literallayout xml:space='preserve' class='monospaced'>123</literallayout></para>
  6202. </entry>
  6203. <entry>
  6204. <para><literallayout xml:space='preserve' class='monospaced'>Every non-referential attribute adheres to a known type. The type imposes type
  6205. constraints on the attribute.
  6206. NOTE: Referential attributes will also have a known type, but those are set
  6207. where they are non-referential attributes.</literallayout></para>
  6208. </entry>
  6209. </row>
  6210. <row>
  6211. <entry>
  6212. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6213. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6214. </imageobject></mediaobject>
  6215. </literallayout></para>
  6216. </entry>
  6217. <entry>
  6218. <para><literallayout xml:space='preserve' class='monospaced'>124</literallayout></para>
  6219. </entry>
  6220. <entry>
  6221. <para><literallayout xml:space='preserve' class='monospaced'>An attribute can provide unique data about a set, or can provide unique data
  6222. about a subset of a set. The latter case is considered a specialization.</literallayout></para>
  6223. </entry>
  6224. </row>
  6225. <row>
  6226. <entry>
  6227. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6228. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6229. </imageobject></mediaobject>
  6230. </literallayout></para>
  6231. </entry>
  6232. <entry>
  6233. <para><literallayout xml:space='preserve' class='monospaced'>125</literallayout></para>
  6234. </entry>
  6235. <entry>
  6236. <para><literallayout xml:space='preserve' class='monospaced'>An object specialization is a specializing attribute, an intersection of
  6237. objects or a specializing lifecycle segment.</literallayout></para>
  6238. </entry>
  6239. </row>
  6240. <row>
  6241. <entry>
  6242. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6243. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6244. </imageobject></mediaobject>
  6245. </literallayout></para>
  6246. </entry>
  6247. <entry>
  6248. <para><literallayout xml:space='preserve' class='monospaced'>126</literallayout></para>
  6249. </entry>
  6250. <entry>
  6251. <para><literallayout xml:space='preserve' class='monospaced'>An object specialization results in one subtyping of an object, and the
  6252. subtyping can be the result of multiple defined object specialization types.
  6253. While a single specialization actually results in two subtypings,
  6254. additional subtypings in the same generalization will not result in two
  6255. subtypings. e.g., An object, A, exists, and it is decided an attribute only
  6256. applies to some instances of A and not others. A subtype, B, is created to hold
  6257. the attribute, and a subtype, C, is created to represent the instances without
  6258. the attribute. Another attribute is defined to only apply to some instances of
  6259. A, so subtype, D, is created. D requires no subsequent specialization, because
  6260. the remaining instances are already defined by B and C.</literallayout></para>
  6261. </entry>
  6262. </row>
  6263. <row>
  6264. <entry>
  6265. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6266. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6267. </imageobject></mediaobject>
  6268. </literallayout></para>
  6269. </entry>
  6270. <entry>
  6271. <para><literallayout xml:space='preserve' class='monospaced'>127</literallayout></para>
  6272. </entry>
  6273. <entry>
  6274. <para><literallayout xml:space='preserve' class='monospaced'>A non-referential attribute value can depend upon the value of other attributes.
  6275. An attribute can provide value for many dependent attributes.
  6276. [OOA96] has a discussion on the types of dependencies possible.</literallayout></para>
  6277. </entry>
  6278. </row>
  6279. <row>
  6280. <entry>
  6281. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6282. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6283. </imageobject></mediaobject>
  6284. </literallayout></para>
  6285. </entry>
  6286. <entry>
  6287. <para><literallayout xml:space='preserve' class='monospaced'>129</literallayout></para>
  6288. </entry>
  6289. <entry>
  6290. <para><literallayout xml:space='preserve' class='monospaced'>An object attribute characterizes an object. The object and all subsets of an
  6291. object are characterized by object attributes, as all of the object attributes
  6292. apply to all instances of the object.
  6293. As there is always an identifier attribute, an object is always
  6294. characterized by at least one object attribute.
  6295. </literallayout></para>
  6296. </entry>
  6297. </row>
  6298. <row>
  6299. <entry>
  6300. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6301. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6302. </imageobject></mediaobject>
  6303. </literallayout></para>
  6304. </entry>
  6305. <entry>
  6306. <para><literallayout xml:space='preserve' class='monospaced'>130</literallayout></para>
  6307. </entry>
  6308. <entry>
  6309. <para><literallayout xml:space='preserve' class='monospaced'>A specializing attribute always specializes one proper subset. A proper
  6310. subset can be specialized by many specializing attributes.</literallayout></para>
  6311. </entry>
  6312. </row>
  6313. <row>
  6314. <entry>
  6315. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6316. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6317. </imageobject></mediaobject>
  6318. </literallayout></para>
  6319. </entry>
  6320. <entry>
  6321. <para><literallayout xml:space='preserve' class='monospaced'>128</literallayout></para>
  6322. </entry>
  6323. <entry>
  6324. <para><literallayout xml:space='preserve' class='monospaced'>A referential attribute always formalizes a non-composition, instance
  6325. relationship. All non-composition, instance relationships are formalized by one
  6326. or more referential attributes. </literallayout></para>
  6327. </entry>
  6328. </row>
  6329. <row>
  6330. <entry>
  6331. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6332. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6333. </imageobject></mediaobject>
  6334. </literallayout></para>
  6335. </entry>
  6336. <entry>
  6337. <para><literallayout xml:space='preserve' class='monospaced'>131</literallayout></para>
  6338. </entry>
  6339. <entry>
  6340. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  6341. </entry>
  6342. </row>
  6343. <row>
  6344. <entry>
  6345. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6346. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6347. </imageobject></mediaobject>
  6348. </literallayout></para>
  6349. </entry>
  6350. <entry>
  6351. <para><literallayout xml:space='preserve' class='monospaced'>132</literallayout></para>
  6352. </entry>
  6353. <entry>
  6354. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  6355. </entry>
  6356. </row>
  6357. <row>
  6358. <entry>
  6359. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6360. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6361. </imageobject></mediaobject>
  6362. </literallayout></para>
  6363. </entry>
  6364. <entry>
  6365. <para><literallayout xml:space='preserve' class='monospaced'>133</literallayout></para>
  6366. </entry>
  6367. <entry>
  6368. <para><literallayout xml:space='preserve' class='monospaced'>Subset can be related to other subsets.</literallayout></para>
  6369. </entry>
  6370. </row>
  6371. <row>
  6372. <entry>
  6373. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6374. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6375. </imageobject></mediaobject>
  6376. </literallayout></para>
  6377. </entry>
  6378. <entry>
  6379. <para><literallayout xml:space='preserve' class='monospaced'>134</literallayout></para>
  6380. </entry>
  6381. <entry>
  6382. <para><literallayout xml:space='preserve' class='monospaced'>A supertype can partition an object, or it can a partition a proper subset. An
  6383. object is partitioned by one or more supertypes.
  6384. A partitioning of an object by a single supertype should be pictured as one
  6385. or more parallel chords, each crossing the arc of the set at two distinct
  6386. points.
  6387. When the partitioning of the same object is done by more than one
  6388. supertype, the chords of the supertypes intersect each other.</literallayout></para>
  6389. </entry>
  6390. </row>
  6391. <row>
  6392. <entry>
  6393. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6394. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6395. </imageobject></mediaobject>
  6396. </literallayout></para>
  6397. </entry>
  6398. <entry>
  6399. <para><literallayout xml:space='preserve' class='monospaced'>135</literallayout></para>
  6400. </entry>
  6401. <entry>
  6402. <para><literallayout xml:space='preserve' class='monospaced'>An intersecting subset is formed from the intersection of two or more objects,
  6403. and an object can be partitioned by more than one intersecting subset. The
  6404. intersection associative object tracks each &apos;&apos;subset partitions object&apos;&apos;
  6405. association. e.g., in the simplest example, a subset C is formed from the
  6406. intersection of object A and object B; two intersections are needed to
  6407. represent this: CA and CB. This case has one intersecting subset, two objects,
  6408. and two intersections.</literallayout></para>
  6409. </entry>
  6410. </row>
  6411. <row>
  6412. <entry>
  6413. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6414. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6415. </imageobject></mediaobject>
  6416. </literallayout></para>
  6417. </entry>
  6418. <entry>
  6419. <para><literallayout xml:space='preserve' class='monospaced'>136</literallayout></para>
  6420. </entry>
  6421. <entry>
  6422. <para><literallayout xml:space='preserve' class='monospaced'>A non-intersecting subset is a subtype for one supertype, and the supertype
  6423. defines the partitioning for all of its subtypes.
  6424. This relationship adds further constraint, for non-intersecting subsets, to
  6425. R122, which defines all of the subtyping relationships.</literallayout></para>
  6426. </entry>
  6427. </row>
  6428. <row>
  6429. <entry>
  6430. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6431. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  6432. </imageobject></mediaobject>
  6433. </literallayout></para>
  6434. </entry>
  6435. <entry>
  6436. <para><literallayout xml:space='preserve' class='monospaced'>137</literallayout></para>
  6437. </entry>
  6438. <entry>
  6439. <para><literallayout xml:space='preserve' class='monospaced'>A referential identifier refers to an attribute participating in identification
  6440. of an object instance. An identification participant can be referenced by a
  6441. referential attribute.</literallayout></para>
  6442. </entry>
  6443. </row>
  6444. </tbody>
  6445. </tgroup>
  6446. </table>
  6447. </literallayout></para>
  6448. </section>
  6449. <section>
  6450. <title>Object Packages</title>
  6451. <subtitle></subtitle>
  6452. <para><literallayout xml:space='preserve' class='monospaced'>Rendered here are the contained package diagrams.</literallayout></para>
  6453. <section>
  6454. <title>Object Subsystem Tests</title>
  6455. <subtitle>Package</subtitle>
  6456. <para><literallayout xml:space='preserve' class='monospaced'>This package can be used to check various instantiation scenarios for the
  6457. object subsystem.
  6458. Current usage: Create an unspecialized object, and create each of the types of
  6459. specialized objects.<figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Object-ObjectSubsystemTests-PackageDiagram-figure'>
  6460. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Object-ObjectSubsystemTests-PackageDiagram-figure-title'>Object Subsystem Tests Package Diagram</title>
  6461. <mediaobject><imageobject>
  6462. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Object-Object Subsystem Tests-Package Diagram.png' scalefit='1' width='100%'/>
  6463. </imageobject></mediaobject>
  6464. </figure>
  6465. </literallayout></para>
  6466. <section>
  6467. <title>Classes</title>
  6468. <subtitle></subtitle>
  6469. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  6470. <title>Classes</title>
  6471. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  6472. <thead>
  6473. <row>
  6474. <entry>
  6475. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6476. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  6477. </imageobject></mediaobject>
  6478. </literallayout></para>
  6479. </entry>
  6480. <entry>
  6481. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  6482. </entry>
  6483. <entry>
  6484. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  6485. </entry>
  6486. </row>
  6487. </thead>
  6488. <tbody>
  6489. <row>
  6490. <entry>
  6491. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6492. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  6493. </imageobject></mediaobject>
  6494. </literallayout></para>
  6495. </entry>
  6496. <entry>
  6497. <para><literallayout xml:space='preserve' class='monospaced'>Intersecting</literallayout></para>
  6498. </entry>
  6499. <entry>
  6500. <para><literallayout xml:space='preserve' class='monospaced'>An intersecting partitioning represents the partitioning formed by the
  6501. intersection of two or more objects. If more than two objects are involved, all
  6502. the objects must overlap at the same subset.</literallayout></para>
  6503. </entry>
  6504. </row>
  6505. <row>
  6506. <entry>
  6507. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6508. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  6509. </imageobject></mediaobject>
  6510. </literallayout></para>
  6511. </entry>
  6512. <entry>
  6513. <para><literallayout xml:space='preserve' class='monospaced'>Multi-directional</literallayout></para>
  6514. </entry>
  6515. <entry>
  6516. <para><literallayout xml:space='preserve' class='monospaced'>A multi-directional partitioning represents a two or more supertype
  6517. partitionings of the same object or subset.</literallayout></para>
  6518. </entry>
  6519. </row>
  6520. <row>
  6521. <entry>
  6522. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6523. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  6524. </imageobject></mediaobject>
  6525. </literallayout></para>
  6526. </entry>
  6527. <entry>
  6528. <para><literallayout xml:space='preserve' class='monospaced'>Multi-level</literallayout></para>
  6529. </entry>
  6530. <entry>
  6531. <para><literallayout xml:space='preserve' class='monospaced'>A multi-level partitioning represets a supertype partitioning of a proper
  6532. subset. It is the same as a single-level, but of a proper subset.</literallayout></para>
  6533. </entry>
  6534. </row>
  6535. <row>
  6536. <entry>
  6537. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  6538. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  6539. </imageobject></mediaobject>
  6540. </literallayout></para>
  6541. </entry>
  6542. <entry>
  6543. <para><literallayout xml:space='preserve' class='monospaced'>Single Layer</literallayout></para>
  6544. </entry>
  6545. <entry>
  6546. <para><literallayout xml:space='preserve' class='monospaced'>A single layer partitioning is drawn using one supertype with two or more
  6547. subtypes attached. It represents a single supertype partitioning of an object.</literallayout></para>
  6548. </entry>
  6549. </row>
  6550. </tbody>
  6551. </tgroup>
  6552. </table>
  6553. </literallayout></para>
  6554. <section>
  6555. <title>Class Activities</title>
  6556. <subtitle></subtitle>
  6557. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  6558. <section>
  6559. <title>Class Operations</title>
  6560. <subtitle></subtitle>
  6561. <section>
  6562. <title>Object Subsystem Tests:Intersecting: intersecting_init</title>
  6563. <subtitle></subtitle>
  6564. <para><literallayout xml:space='preserve' class='monospaced'>An example of object intersection is object A as supertype with subtype objects
  6565. C and D and object B as supertype with subtype objects D and E. Subtype D is
  6566. subset formed by the intersection of A and B.
  6567. Diagram:
  6568. +----------+ +---------+ +----------+
  6569. | C | | D | | E |
  6570. | | | | | |
  6571. +----------+ +---------+ +----------+
  6572. | | | |
  6573. +---------+ +---------+
  6574. | |
  6575. +---------+ +---------+
  6576. | A | | B |
  6577. | | | |
  6578. +---------+ +---------+
  6579. </literallayout></para>
  6580. <para><programlisting>// Object A
  6581. create object instance domain of DOM;
  6582. create object instance modeled_domain of MDOM;
  6583. relate domain to modeled_domain across R1;
  6584. create object instance objA of OBJ;
  6585. relate objA to modeled_domain across R105;
  6586. create object instance subA of SUB;
  6587. relate subA to objA across R107;
  6588. // Subset C
  6589. create object instance subC of SUB;
  6590. create object instance psubC of PRP;
  6591. relate subC to psubC across R107;
  6592. create object instance non_psubC of NSB;
  6593. relate psubC to non_psubC across R108;
  6594. // Supertype A
  6595. create object instance superA of SUP;
  6596. create object instance chdA of CHD;
  6597. relate superA to objA across R134 using chdA;
  6598. relate non_psubC to superA across R136;
  6599. create object instance subtypeC of SBT;
  6600. relate superA to psubC across R122 using subtypeC;
  6601. create object instance obsA of OBS;
  6602. relate subtypeC to obsA across R126;
  6603. create object instance sbsC of SBS;
  6604. relate sbsC to obsA across R125;
  6605. // Object B
  6606. create object instance objB of OBJ;
  6607. relate objB to modeled_domain across R105;
  6608. create object instance subB of SUB;
  6609. relate subB to objB across R107;
  6610. // Subset E
  6611. create object instance subE of SUB;
  6612. create object instance psubE of PRP;
  6613. relate subE to psubE across R107;
  6614. create object instance non_psubE of NSB;
  6615. relate psubE to non_psubE across R108;
  6616. // Supertype B
  6617. create object instance superB of SUP;
  6618. create object instance chdB of CHD;
  6619. relate superB to objB across R134 using chdB;
  6620. relate non_psubE to superB across R136;
  6621. create object instance subtypeE of SBT;
  6622. relate superA to psubE across R122 using subtypeE;
  6623. create object instance obsB of OBS;
  6624. relate subtypeE to obsB across R126;
  6625. create object instance sbsE of SBS;
  6626. relate sbsE to obsB across R125;
  6627. // Intersecting subset D
  6628. create object instance subD of SUB;
  6629. create object instance psubD of PRP;
  6630. relate subD to psubD across R107;
  6631. create object instance isb_psubD of ISB;
  6632. relate psubD to isb_psubD across R108;
  6633. create object instance intA of ITS;
  6634. relate isb_psubD to objA across R135 using intA;
  6635. create object instance intB of ITS;
  6636. relate isb_psubD to objB across R135 using intB;
  6637. // Supertype relationships for intersecting subtypes
  6638. create object instance subtypeD of SBT;
  6639. relate psubD to superA across R122 using subtypeD;
  6640. relate psubD to superB across R122 using subtypeD;
  6641. relate obsA to subtypeD across R126;
  6642. relate intA to obsA across R125;
  6643. relate obsB to subtypeD across R126;
  6644. relate intB to obsB across R125;
  6645. // Attributes
  6646. // Make the first one an identifier, as you can&apos;&apos;t create instances without an
  6647. // identifier.
  6648. // NOTE: In intersections, an identifier must be common to all intersecting
  6649. // sets.
  6650. // TODO: Create a check for this
  6651. // TODO: Handle this for cases with multiple intersections.
  6652. // * Supers A, B, and C intersect at sub D.
  6653. // * Super A intersects super B at sub D and super A intersects super F
  6654. // at sub C. (common identifier for A, B, and F)
  6655. create object instance attribute1 of ATR;
  6656. create object instance nonref1 of NRA;
  6657. relate attribute1 to nonref1 across R103;
  6658. create object instance objectAttribute1 of OA;
  6659. relate objectAttribute1 to attribute1 across R124;
  6660. relate objectAttribute1 to objA across R129;
  6661. create object instance identifier1 of ID;
  6662. create object instance participation1 of IDP;
  6663. relate identifier1 to attribute1 across R102 using participation1;
  6664. // Make an numeric attribute as a specializer for subtype C.
  6665. create object instanc
  6666. </programlisting></para>
  6667. </section>
  6668. </section>
  6669. </section>
  6670. <section>
  6671. <title>Class Activities</title>
  6672. <subtitle></subtitle>
  6673. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  6674. <section>
  6675. <title>Class Operations</title>
  6676. <subtitle></subtitle>
  6677. <section>
  6678. <title>Object Subsystem Tests:Multi-directional: multi_directional_init</title>
  6679. <subtitle></subtitle>
  6680. <para><literallayout xml:space='preserve' class='monospaced'>An example of multi-directional subtyping is object A as supertype with subtype
  6681. objects B and C in one direction and subtype objects D and E in the other.
  6682. Diagram:
  6683. +---------+ +---------+
  6684. | B | | C |
  6685. | | | |
  6686. +---------+ +---------+
  6687. | |
  6688. +-------------+
  6689. |
  6690. +---------+
  6691. | A |
  6692. | |
  6693. +---------+
  6694. |
  6695. +-------------+
  6696. | |
  6697. +---------+ +---------+
  6698. | D | | E |
  6699. | | | |
  6700. +---------+ +---------+
  6701. </literallayout></para>
  6702. <para><programlisting>create object instance domain of DOM;
  6703. create object instance modeled_domain of MDOM;
  6704. relate domain to modeled_domain across R1;
  6705. create object instance objA of OBJ;
  6706. relate objA to modeled_domain across R105;
  6707. create object instance subA of SUB;
  6708. relate subA to objA across R107;
  6709. // Subset B
  6710. create object instance subB of SUB;
  6711. create object instance psubB of PRP;
  6712. relate subB to psubB across R107;
  6713. create object instance non_psubB of NSB;
  6714. relate psubB to non_psubB across R108;
  6715. // Subset C
  6716. create object instance subC of SUB;
  6717. create object instance psubC of PRP;
  6718. relate subC to psubC across R107;
  6719. create object instance non_psubC of NSB;
  6720. relate psubC to non_psubC across R108;
  6721. // Supertype A1
  6722. create object instance superA1 of SUP;
  6723. create object instance chdA1 of CHD;
  6724. relate superA1 to objA across R134 using chdA1;
  6725. create object instance subtypeB of SBT;
  6726. relate superA1 to psubB across R122 using subtypeB;
  6727. // Object specialization for B is below.
  6728. create object instance subtypeC of SBT;
  6729. relate superA1 to psubC across R122 using subtypeC;
  6730. create object instance obsC of OBS;
  6731. relate obsC to subtypeC across R126;
  6732. create object instance sbsC of SBS;
  6733. relate sbsC to obsC across R125;
  6734. // Specialize across another supertype (direction)
  6735. // Subset D
  6736. create object instance subD of SUB;
  6737. create object instance psubD of PRP;
  6738. relate subD to psubD across R107;
  6739. create object instance non_psubD of NSB;
  6740. relate psubD to non_psubD across R108;
  6741. // Subset E
  6742. create object instance subE of SUB;
  6743. create object instance psubE of PRP;
  6744. relate subE to psubE across R107;
  6745. create object instance non_psubE of NSB;
  6746. relate psubE to non_psubE across R108;
  6747. // Supertype A2
  6748. create object instance superA2 of SUP;
  6749. create object instance chdA2 of CHD;
  6750. relate superA2 to objA across R134 using chdA2;
  6751. create object instance subtypeD of SBT;
  6752. relate superA2 to psubD across R122 using subtypeD;
  6753. create object instance obsD of OBS;
  6754. relate obsD to subtypeD across R126;
  6755. create object instance sbsD of SBS;
  6756. relate sbsD to obsD across R125;
  6757. create object instance subtypeE of SBT;
  6758. relate superA2 to psubE across R122 using subtypeE;
  6759. // Object specialization for E is below.
  6760. // Attributes
  6761. // Make the first one an identifier, as you can&apos;&apos;t create instances without an
  6762. // identifier.
  6763. create object instance attribute1 of ATR;
  6764. create object instance nonref1 of NRA;
  6765. relate attribute1 to nonref1 across R103;
  6766. create object instance objectAttribute1 of OA;
  6767. relate objectAttribute1 to objA across R129;
  6768. relate objectAttribute1 to attribute1 across R124;
  6769. create object instance identifier1 of ID;
  6770. create object instance participation1 of IDP;
  6771. relate identifier1 to attribute1 across R102 using participation1;
  6772. // Make the second one a specializer for subtype B.
  6773. create object instance attribute2 of ATR;
  6774. create object instance nonref2 of NRA;
  6775. relate attribute2 to nonref2 across R103;
  6776. create object instance attribution2 of SPA;
  6777. relate attribution2 to attribute2 across R124;
  6778. relate attribution2 to psubB across R130;
  6779. create object instance objectSpecialization2 of OBS;
  6780. relate attribution2 to objectSpecialization2 across R125;
  6781. relate objectSpecialization2 to subtypeB across R126;
  6782. // Make the third one a specializer for subtype E.
  6783. create object instance attribute3 of ATR;
  6784. create object instance nonref3 of NRA;
  6785. relate attribute3 to nonref3 across R103;
  6786. create object instance attribution3 of SPA;
  6787. rel
  6788. </programlisting></para>
  6789. </section>
  6790. </section>
  6791. </section>
  6792. <section>
  6793. <title>Class Activities</title>
  6794. <subtitle></subtitle>
  6795. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  6796. <section>
  6797. <title>Class Operations</title>
  6798. <subtitle></subtitle>
  6799. <section>
  6800. <title>Object Subsystem Tests:Multi-level: multi-level_init</title>
  6801. <subtitle></subtitle>
  6802. <para><literallayout xml:space='preserve' class='monospaced'>An example of multi-level subtyping is object A as supertype with subtype
  6803. objects B and C and object C as supertype with subtype objects D and E.
  6804. Diagram:
  6805. +---------+ +---------+
  6806. | D | | E |
  6807. | | | |
  6808. +---------+ +---------+
  6809. | |
  6810. +-----------+
  6811. |
  6812. +---------+ +---------+
  6813. | B | | C |
  6814. | | | |
  6815. +---------+ +---------+
  6816. | |
  6817. +-------------+
  6818. |
  6819. +---------+
  6820. | A |
  6821. | |
  6822. +---------+
  6823. </literallayout></para>
  6824. <para><programlisting>// Object A
  6825. create object instance domain of DOM;
  6826. create object instance modeled_domain of MDOM;
  6827. relate domain to modeled_domain across R1;
  6828. create object instance objA of OBJ;
  6829. relate objA to modeled_domain across R105;
  6830. create object instance subA of SUB;
  6831. relate subA to objA across R107;
  6832. // Subset B
  6833. create object instance subB of SUB;
  6834. create object instance psubB of PRP;
  6835. relate subB to psubB across R107;
  6836. create object instance non_psubB of NSB;
  6837. relate psubB to non_psubB across R108;
  6838. // Subset C - Will be specialized further
  6839. create object instance subC of SUB;
  6840. create object instance psubC of PRP;
  6841. relate subC to psubC across R107;
  6842. create object instance non_psubC of NSB;
  6843. relate psubC to non_psubC across R108;
  6844. // Supertype A
  6845. create object instance superA of SUP;
  6846. create object instance chdA of CHD;
  6847. relate superA to objA across R134 using chdA;
  6848. create object instance subtypeB of SBT;
  6849. relate superA to psubB across R122 using subtypeB;
  6850. create object instance obsB of OBS;
  6851. relate obsB to subtypeB across R126;
  6852. create object instance sbsB of SBS;
  6853. relate sbsB to obsB across R125;
  6854. create object instance subtypeC of SBT;
  6855. relate superA to psubC across R122 using subtypeC;
  6856. // Object specialization of C is done with an attribute below.
  6857. // Specialize Subset C
  6858. // Subsubset D
  6859. create object instance subD of SUB;
  6860. create object instance psubD of PRP;
  6861. relate subD to psubD across R107;
  6862. create object instance non_psubD of NSB;
  6863. relate psubD to non_psubD across R108;
  6864. // Subsubset E
  6865. create object instance subE of SUB;
  6866. create object instance psubE of PRP;
  6867. relate subE to psubE across R107;
  6868. create object instance non_psubE of NSB;
  6869. relate psubE to non_psubE across R108;
  6870. // Supertype C
  6871. create object instance superC of SUP;
  6872. create object instance multiC of MLV;
  6873. relate superC to psubC across R114 using multiC;
  6874. create object instance subtypeD of SBT;
  6875. relate superC to psubC across R122 using subtypeD;
  6876. create object instance obsD of OBS;
  6877. relate obsD to subtypeD across R126;
  6878. create object instance sbsD of SBS;
  6879. relate sbsD to obsD across R125;
  6880. create object instance subtypeE of SBT;
  6881. relate superC to psubE across R122 using subtypeE;
  6882. create object instance obsE of OBS;
  6883. relate obsE to subtypeE across R126;
  6884. create object instance sbsE of SBS;
  6885. relate sbsE to obsE across R125;
  6886. // Attributes
  6887. // Make the first one an identifier, as you can&apos;&apos;t create instances without an
  6888. // identifier.
  6889. create object instance attribute1 of ATR;
  6890. create object instance nonref1 of NRA;
  6891. relate attribute1 to nonref1 across R103;
  6892. create object instance objectAttribute1 of OA;
  6893. relate objectAttribute1 to attribute1 across R124;
  6894. relate objectAttribute1 to objA across R129;
  6895. create object instance identifier1 of ID;
  6896. create object instance participation1 of IDP;
  6897. relate identifier1 to attribute1 across R102 using participation1;
  6898. // Make the second one a specializer for one of the subtypes.
  6899. create object instance attribute2 of ATR;
  6900. create object instance nonref2 of NRA;
  6901. relate attribute2 to nonref2 across R103;
  6902. create object instance attribution2 of SPA;
  6903. relate attribution2 to attribute2 across R124;
  6904. relate attribution2 to psubC across R130;
  6905. create object instance objectSpecialization2 of OBS;
  6906. relate attribution2 to objectSpecialization2 across R125;
  6907. relate objectSpecialization2 to subtypeC across R126;
  6908. // Create an attribute on the supertype
  6909. create object instance attribute3 of A
  6910. </programlisting></para>
  6911. </section>
  6912. </section>
  6913. </section>
  6914. <section>
  6915. <title>Class Activities</title>
  6916. <subtitle></subtitle>
  6917. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  6918. <section>
  6919. <title>Class Operations</title>
  6920. <subtitle></subtitle>
  6921. <section>
  6922. <title>Object Subsystem Tests:Single Layer: two_way_init</title>
  6923. <subtitle></subtitle>
  6924. <para><literallayout xml:space='preserve' class='monospaced'>An example of single-level, two-way subtyping is object A as supertype with
  6925. subtype objects B and C.
  6926. Diagram:
  6927. +---------+ +---------+
  6928. | B | | C |
  6929. | | | |
  6930. +---------+ +---------+
  6931. | |
  6932. +-----------+
  6933. |
  6934. +---------+
  6935. | A |
  6936. | |
  6937. +---------+
  6938. </literallayout></para>
  6939. <para><programlisting>create object instance domain of DOM;
  6940. create object instance modeled_domain of MDOM;
  6941. relate domain to modeled_domain across R1;
  6942. create object instance objA of OBJ;
  6943. relate objA to modeled_domain across R105;
  6944. create object instance subA of SUB;
  6945. relate subA to objA across R107;
  6946. // Subset B
  6947. create object instance subB of SUB;
  6948. create object instance psubB of PRP;
  6949. relate subB to psubB across R107;
  6950. create object instance non_psubB of NSB;
  6951. relate psubB to non_psubB across R108;
  6952. // Subset C
  6953. create object instance subC of SUB;
  6954. create object instance psubC of PRP;
  6955. relate subC to psubC across R107;
  6956. create object instance non_psubC of NSB;
  6957. relate psubC to non_psubC across R108;
  6958. // Supertype A
  6959. create object instance superA of SUP;
  6960. create object instance chdA of CHD;
  6961. relate objA to superA across R134 using chdA;
  6962. create object instance subtypeB of SBT;
  6963. relate superA to psubB across R122 using subtypeB;
  6964. create object instance subtypeC of SBT;
  6965. relate superA to psubC across R122 using subtypeC;
  6966. create object instance obsC of OBS;
  6967. relate obsC to subtypeC across R126;
  6968. create object instance sbsC of SBS;
  6969. relate sbsC to obsC across R125;
  6970. // Attributes
  6971. // Make the first one an identifier, as you can&apos;&apos;t create instances without an
  6972. // identifier.
  6973. create object instance attribute1 of ATR;
  6974. create object instance nonref1 of NRA;
  6975. relate attribute1 to nonref1 across R103;
  6976. create object instance objectAttribute1 of OA;
  6977. relate objectAttribute1 to attribute1 across R124;
  6978. relate objectAttribute1 to objA across R129;
  6979. create object instance identifier1 of ID;
  6980. create object instance participation1 of IDP;
  6981. relate identifier1 to attribute1 across R102 using participation1;
  6982. // Make the second one a specializer for subtype B.
  6983. create object instance attribute2 of ATR;
  6984. create object instance nonref2 of NRA;
  6985. relate attribute2 to nonref2 across R103;
  6986. create object instance attribution2 of SPA;
  6987. relate attribution2 to attribute2 across R124;
  6988. relate attribution2 to psubB across R130;
  6989. create object instance objectSpecialization2 of OBS;
  6990. relate attribution2 to objectSpecialization2 across R125;
  6991. relate objectSpecialization2 to subtypeB across R126;
  6992. // Create an instance of subtype B
  6993. create object instance instance1 of INS;
  6994. relate instance1 to subB across R112;
  6995. create object instance instantiation1 of ITN;
  6996. relate instance1 to identifier1 across R101 using instantiation1;
  6997. // Create an instance of subtype C
  6998. create object instance instance2 of INS;
  6999. relate instance2 to subC across R112;
  7000. create object instance instantiation2 of ITN;
  7001. relate instance2 to identifier1 across R101 using instantiation2;
  7002. </programlisting></para>
  7003. </section>
  7004. <section>
  7005. <title>Object Subsystem Tests:Single Layer: three_way_init</title>
  7006. <subtitle></subtitle>
  7007. <para><literallayout xml:space='preserve' class='monospaced'>An example of single-level, three-way subtyping is object A as supertype with
  7008. subtype objects B, C, and D.
  7009. Diagram:
  7010. +---------+ +---------+ +---------+
  7011. | B | | C | | D |
  7012. | | | | | |
  7013. +---------+ +---------+ +---------+
  7014. | | |
  7015. +-----------+-----------+
  7016. |
  7017. +---------+
  7018. | A |
  7019. | |
  7020. +---------+
  7021. </literallayout></para>
  7022. <para><programlisting>create object instance domain of DOM;
  7023. create object instance modeled_domain of MDOM;
  7024. relate domain to modeled_domain across R1;
  7025. create object instance objA of OBJ;
  7026. relate objA to modeled_domain across R105;
  7027. create object instance subA of SUB;
  7028. relate subA to objA across R107;
  7029. // Subset B
  7030. create object instance subB of SUB;
  7031. create object instance psubB of PRP;
  7032. relate subB to psubB across R107;
  7033. create object instance non_psubB of NSB;
  7034. relate psubB to non_psubB across R108;
  7035. // Subset C
  7036. create object instance subC of SUB;
  7037. create object instance psubC of PRP;
  7038. relate subC to psubC across R107;
  7039. create object instance non_psubC of NSB;
  7040. relate psubC to non_psubC across R108;
  7041. // Subset D
  7042. create object instance subD of SUB;
  7043. create object instance psubD of PRP;
  7044. relate subD to psubD across R107;
  7045. create object instance non_psubD of NSB;
  7046. relate psubD to non_psubD across R108;
  7047. // Supertype A
  7048. create object instance superA of SUP;
  7049. create object instance chdA of CHD;
  7050. relate superA to objA across R134 using chdA;
  7051. create object instance subtypeB of SBT;
  7052. relate superA to psubB across R122 using subtypeB;
  7053. create object instance subtypeC of SBT;
  7054. relate superA to psubC across R122 using subtypeC;
  7055. create object instance subtypeD of SBT;
  7056. relate superA to psubD across R122 using subtypeD;
  7057. create object instance obsD of OBS;
  7058. relate obsD to subtypeD across R126;
  7059. create object instance sbsD of SBS;
  7060. relate sbsD to obsD across R125;
  7061. // Attributes
  7062. // Make the first one an identifier, as you can&apos;&apos;t create instances without an
  7063. // identifier.
  7064. create object instance attribute1 of ATR;
  7065. create object instance nonref1 of NRA;
  7066. relate attribute1 to nonref1 across R103;
  7067. create object instance objectAttribute1 of OA;
  7068. relate objectAttribute1 to attribute1 across R124;
  7069. relate objectAttribute1 to objA across R129;
  7070. create object instance identifier1 of ID;
  7071. create object instance participation1 of IDP;
  7072. relate identifier1 to attribute1 across R102 using participation1;
  7073. // Make the second one a specializer for subtype B.
  7074. create object instance attribute2 of ATR;
  7075. create object instance nonref2 of NRA;
  7076. relate attribute2 to nonref2 across R103;
  7077. create object instance attribution2 of SPA;
  7078. relate attribution2 to attribute2 across R124;
  7079. create object instance objectSpecialization2 of OBS;
  7080. relate objectSpecialization2 to attribution2 across R125;
  7081. relate objectSpecialization2 to subtypeB across R126;
  7082. // Make the third one a specializer for subtype C.
  7083. create object instance attribute3 of ATR;
  7084. create object instance nonref3 of NRA;
  7085. relate attribute3 to nonref3 across R103;
  7086. create object instance attribution3 of SPA;
  7087. relate attribution3 to attribute3 across R124;
  7088. create object instance objectSpecialization3 of OBS;
  7089. relate objectSpecialization3 to attribution3 across R125;
  7090. relate objectSpecialization3 to subtypeC across R126;
  7091. // Create an instance of subtype 1
  7092. create object instance instance1 of INS;
  7093. relate instance1 to subB across R112;
  7094. create object instance instantiation1 of ITN;
  7095. relate instance1 to identifier1 across R101 using instantiation1;
  7096. // Create an instance of subtype 2
  7097. create object instance instance2 of INS;
  7098. relate instance2 to subC across R112;
  7099. create object instance instantiation2 of ITN;
  7100. relate instance2 to identifier1 across R101 using instantiation2;
  7101. // Create an instance of subtype 3
  7102. create object instance instance3 of INS;
  7103. relate instance3 to
  7104. </programlisting></para>
  7105. </section>
  7106. </section>
  7107. </section>
  7108. </section>
  7109. </section>
  7110. </section>
  7111. </section>
  7112. <section>
  7113. <title>Process</title>
  7114. <subtitle>Package</subtitle>
  7115. <para><literallayout xml:space='preserve' class='monospaced'>Process Modeling package<figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Process-PackageDiagram-figure'>
  7116. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Process-PackageDiagram-figure-title'>Process Package Diagram</title>
  7117. <mediaobject><imageobject>
  7118. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Process-Package Diagram.png' scalefit='1' width='100%'/>
  7119. </imageobject></mediaobject>
  7120. </figure>
  7121. </literallayout></para>
  7122. <section>
  7123. <title>Classes</title>
  7124. <subtitle></subtitle>
  7125. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  7126. <title>Classes</title>
  7127. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  7128. <thead>
  7129. <row>
  7130. <entry>
  7131. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7132. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7133. </imageobject></mediaobject>
  7134. </literallayout></para>
  7135. </entry>
  7136. <entry>
  7137. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  7138. </entry>
  7139. <entry>
  7140. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  7141. </entry>
  7142. </row>
  7143. </thead>
  7144. <tbody>
  7145. <row>
  7146. <entry>
  7147. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7148. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7149. </imageobject></mediaobject>
  7150. </literallayout></para>
  7151. </entry>
  7152. <entry>
  7153. <para><literallayout xml:space='preserve' class='monospaced'>Accessor</literallayout></para>
  7154. </entry>
  7155. <entry>
  7156. <para><literallayout xml:space='preserve' class='monospaced'>An accessor provides access to reference elements and defines the signature of
  7157. the access. The accessor represents bridges, events, and operations. In other
  7158. words, things that would be known as functions, procedures, or methods in third
  7159. generation programming languages like C or Java.
  7160. An accessor is a value once instantiated in the metamodel, that can be
  7161. referenced in process models.</literallayout></para>
  7162. </entry>
  7163. </row>
  7164. <row>
  7165. <entry>
  7166. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7167. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7168. </imageobject></mediaobject>
  7169. </literallayout></para>
  7170. </entry>
  7171. <entry>
  7172. <para><literallayout xml:space='preserve' class='monospaced'>name:string</literallayout></para>
  7173. </entry>
  7174. <entry>
  7175. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7176. </entry>
  7177. </row>
  7178. <row>
  7179. <entry>
  7180. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7181. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7182. </imageobject></mediaobject>
  7183. </literallayout></para>
  7184. </entry>
  7185. <entry>
  7186. <para><literallayout xml:space='preserve' class='monospaced'>Active Element</literallayout></para>
  7187. </entry>
  7188. <entry>
  7189. <para><literallayout xml:space='preserve' class='monospaced'>An active element is any OOA construct that contains a process model. The
  7190. active element must be accessible from other elements and can access other
  7191. elements. The other elements can be internal or external to the domain being
  7192. modeled.
  7193. </literallayout></para>
  7194. </entry>
  7195. </row>
  7196. <row>
  7197. <entry>
  7198. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7199. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7200. </imageobject></mediaobject>
  7201. </literallayout></para>
  7202. </entry>
  7203. <entry>
  7204. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  7205. </entry>
  7206. <entry>
  7207. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7208. </entry>
  7209. </row>
  7210. <row>
  7211. <entry>
  7212. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7213. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7214. </imageobject></mediaobject>
  7215. </literallayout></para>
  7216. </entry>
  7217. <entry>
  7218. <para><literallayout xml:space='preserve' class='monospaced'>Asynchronous Accessor</literallayout></para>
  7219. </entry>
  7220. <entry>
  7221. <para><literallayout xml:space='preserve' class='monospaced'>An asynchronous accessor executes some time after the action in which it was
  7222. generated completes. (see [OL:MWS] page 131)</literallayout></para>
  7223. </entry>
  7224. </row>
  7225. <row>
  7226. <entry>
  7227. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7228. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7229. </imageobject></mediaobject>
  7230. </literallayout></para>
  7231. </entry>
  7232. <entry>
  7233. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7234. </entry>
  7235. <entry>
  7236. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7237. </entry>
  7238. </row>
  7239. <row>
  7240. <entry>
  7241. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7242. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7243. </imageobject></mediaobject>
  7244. </literallayout></para>
  7245. </entry>
  7246. <entry>
  7247. <para><literallayout xml:space='preserve' class='monospaced'>Attribute Action</literallayout></para>
  7248. </entry>
  7249. <entry>
  7250. <para><literallayout xml:space='preserve' class='monospaced'>An attribute action is used to calculate the value of a derived attribute.</literallayout></para>
  7251. </entry>
  7252. </row>
  7253. <row>
  7254. <entry>
  7255. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7256. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7257. </imageobject></mediaobject>
  7258. </literallayout></para>
  7259. </entry>
  7260. <entry>
  7261. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7262. </entry>
  7263. <entry>
  7264. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7265. </entry>
  7266. </row>
  7267. <row>
  7268. <entry>
  7269. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7270. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7271. </imageobject></mediaobject>
  7272. </literallayout></para>
  7273. </entry>
  7274. <entry>
  7275. <para><literallayout xml:space='preserve' class='monospaced'>nra_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7276. </entry>
  7277. <entry>
  7278. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7279. </entry>
  7280. </row>
  7281. <row>
  7282. <entry>
  7283. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7284. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7285. </imageobject></mediaobject>
  7286. </literallayout></para>
  7287. </entry>
  7288. <entry>
  7289. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7290. </entry>
  7291. <entry>
  7292. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7293. </entry>
  7294. </row>
  7295. <row>
  7296. <entry>
  7297. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7298. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7299. </imageobject></mediaobject>
  7300. </literallayout></para>
  7301. </entry>
  7302. <entry>
  7303. <para><literallayout xml:space='preserve' class='monospaced'>Event</literallayout></para>
  7304. </entry>
  7305. <entry>
  7306. <para><literallayout xml:space='preserve' class='monospaced'>An event causes a transition to occur in a state machine. The event therefore
  7307. provides access to execute any action caused by the transition.</literallayout></para>
  7308. </entry>
  7309. </row>
  7310. <row>
  7311. <entry>
  7312. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7313. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7314. </imageobject></mediaobject>
  7315. </literallayout></para>
  7316. </entry>
  7317. <entry>
  7318. <para><literallayout xml:space='preserve' class='monospaced'>model_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7319. </entry>
  7320. <entry>
  7321. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7322. </entry>
  7323. </row>
  7324. <row>
  7325. <entry>
  7326. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7327. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7328. </imageobject></mediaobject>
  7329. </literallayout></para>
  7330. </entry>
  7331. <entry>
  7332. <para><literallayout xml:space='preserve' class='monospaced'>state_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7333. </entry>
  7334. <entry>
  7335. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7336. </entry>
  7337. </row>
  7338. <row>
  7339. <entry>
  7340. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7341. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7342. </imageobject></mediaobject>
  7343. </literallayout></para>
  7344. </entry>
  7345. <entry>
  7346. <para><literallayout xml:space='preserve' class='monospaced'>entry_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7347. </entry>
  7348. <entry>
  7349. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7350. </entry>
  7351. </row>
  7352. <row>
  7353. <entry>
  7354. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7355. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7356. </imageobject></mediaobject>
  7357. </literallayout></para>
  7358. </entry>
  7359. <entry>
  7360. <para><literallayout xml:space='preserve' class='monospaced'>object_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7361. </entry>
  7362. <entry>
  7363. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7364. </entry>
  7365. </row>
  7366. <row>
  7367. <entry>
  7368. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7369. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7370. </imageobject></mediaobject>
  7371. </literallayout></para>
  7372. </entry>
  7373. <entry>
  7374. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7375. </entry>
  7376. <entry>
  7377. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7378. </entry>
  7379. </row>
  7380. <row>
  7381. <entry>
  7382. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7383. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7384. </imageobject></mediaobject>
  7385. </literallayout></para>
  7386. </entry>
  7387. <entry>
  7388. <para><literallayout xml:space='preserve' class='monospaced'>Instance Method</literallayout></para>
  7389. </entry>
  7390. <entry>
  7391. <para><literallayout xml:space='preserve' class='monospaced'>An instance method requires an instantiation, before it can be used. The
  7392. dynamics of the instance method only apply to a single object instance.
  7393. Instance methods are favored over events when actions need to occur within
  7394. the atomicity of a process.</literallayout></para>
  7395. </entry>
  7396. </row>
  7397. <row>
  7398. <entry>
  7399. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7400. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7401. </imageobject></mediaobject>
  7402. </literallayout></para>
  7403. </entry>
  7404. <entry>
  7405. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7406. </entry>
  7407. <entry>
  7408. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7409. </entry>
  7410. </row>
  7411. <row>
  7412. <entry>
  7413. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7414. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7415. </imageobject></mediaobject>
  7416. </literallayout></para>
  7417. </entry>
  7418. <entry>
  7419. <para><literallayout xml:space='preserve' class='monospaced'>Internal Synchronous</literallayout></para>
  7420. </entry>
  7421. <entry>
  7422. <para><literallayout xml:space='preserve' class='monospaced'>Internal synchronous accesses actions inside the domain being modeled.
  7423. NOTE: It is legal for the domain being modeled to call its own synchronous
  7424. service as well.</literallayout></para>
  7425. </entry>
  7426. </row>
  7427. <row>
  7428. <entry>
  7429. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7430. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7431. </imageobject></mediaobject>
  7432. </literallayout></para>
  7433. </entry>
  7434. <entry>
  7435. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7436. </entry>
  7437. <entry>
  7438. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7439. </entry>
  7440. </row>
  7441. <row>
  7442. <entry>
  7443. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7444. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7445. </imageobject></mediaobject>
  7446. </literallayout></para>
  7447. </entry>
  7448. <entry>
  7449. <para><literallayout xml:space='preserve' class='monospaced'>Method</literallayout></para>
  7450. </entry>
  7451. <entry>
  7452. <para><literallayout xml:space='preserve' class='monospaced'>Objects can have methods associated with them to handle synchronous processing
  7453. tasks.
  7454. In Object Lifecycles, methods weren&apos;&apos;t explicitly called as such, but the
  7455. processes used in the process models were explicitly tied to an object and
  7456. available for reuse in many process models.
  7457. </literallayout></para>
  7458. </entry>
  7459. </row>
  7460. <row>
  7461. <entry>
  7462. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7463. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7464. </imageobject></mediaobject>
  7465. </literallayout></para>
  7466. </entry>
  7467. <entry>
  7468. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7469. </entry>
  7470. <entry>
  7471. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7472. </entry>
  7473. </row>
  7474. <row>
  7475. <entry>
  7476. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7477. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7478. </imageobject></mediaobject>
  7479. </literallayout></para>
  7480. </entry>
  7481. <entry>
  7482. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7483. </entry>
  7484. <entry>
  7485. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7486. </entry>
  7487. </row>
  7488. <row>
  7489. <entry>
  7490. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7491. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7492. </imageobject></mediaobject>
  7493. </literallayout></para>
  7494. </entry>
  7495. <entry>
  7496. <para><literallayout xml:space='preserve' class='monospaced'>Non-specializing Method</literallayout></para>
  7497. </entry>
  7498. <entry>
  7499. <para><literallayout xml:space='preserve' class='monospaced'>A non-specializing instance method applies to all instantiations of an object,
  7500. regardless of subtyping.
  7501. In the object model, these appear in unspecialized objects and root
  7502. supertypes of specialized objects only.</literallayout></para>
  7503. </entry>
  7504. </row>
  7505. <row>
  7506. <entry>
  7507. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7508. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7509. </imageobject></mediaobject>
  7510. </literallayout></para>
  7511. </entry>
  7512. <entry>
  7513. <para><literallayout xml:space='preserve' class='monospaced'>object_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7514. </entry>
  7515. <entry>
  7516. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7517. </entry>
  7518. </row>
  7519. <row>
  7520. <entry>
  7521. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7522. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7523. </imageobject></mediaobject>
  7524. </literallayout></para>
  7525. </entry>
  7526. <entry>
  7527. <para><literallayout xml:space='preserve' class='monospaced'>domain_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7528. </entry>
  7529. <entry>
  7530. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7531. </entry>
  7532. </row>
  7533. <row>
  7534. <entry>
  7535. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7536. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7537. </imageobject></mediaobject>
  7538. </literallayout></para>
  7539. </entry>
  7540. <entry>
  7541. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7542. </entry>
  7543. <entry>
  7544. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7545. </entry>
  7546. </row>
  7547. <row>
  7548. <entry>
  7549. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7550. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7551. </imageobject></mediaobject>
  7552. </literallayout></para>
  7553. </entry>
  7554. <entry>
  7555. <para><literallayout xml:space='preserve' class='monospaced'>Object Method</literallayout></para>
  7556. </entry>
  7557. <entry>
  7558. <para><literallayout xml:space='preserve' class='monospaced'>An object method doesn&apos;&apos;t require an instantiation to be invoked. It is the
  7559. method analog to the assigner state machine. It is used for encapsulating
  7560. synchronous object dynamics that aren&apos;&apos;t specific to an object instance.
  7561. Typical usage of an object method is to initialize an instance
  7562. unconditionally related to another instance in cases where actions must be
  7563. performed upon creation of the instance. Such a condition can&apos;&apos;t use state
  7564. machine creation, as the asynchronous nature violates the unconditional aspect
  7565. of the relationship.</literallayout></para>
  7566. </entry>
  7567. </row>
  7568. <row>
  7569. <entry>
  7570. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7571. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7572. </imageobject></mediaobject>
  7573. </literallayout></para>
  7574. </entry>
  7575. <entry>
  7576. <para><literallayout xml:space='preserve' class='monospaced'>object_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7577. </entry>
  7578. <entry>
  7579. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7580. </entry>
  7581. </row>
  7582. <row>
  7583. <entry>
  7584. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7585. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7586. </imageobject></mediaobject>
  7587. </literallayout></para>
  7588. </entry>
  7589. <entry>
  7590. <para><literallayout xml:space='preserve' class='monospaced'>domain_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7591. </entry>
  7592. <entry>
  7593. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7594. </entry>
  7595. </row>
  7596. <row>
  7597. <entry>
  7598. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7599. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7600. </imageobject></mediaobject>
  7601. </literallayout></para>
  7602. </entry>
  7603. <entry>
  7604. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7605. </entry>
  7606. <entry>
  7607. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7608. </entry>
  7609. </row>
  7610. <row>
  7611. <entry>
  7612. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7613. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7614. </imageobject></mediaobject>
  7615. </literallayout></para>
  7616. </entry>
  7617. <entry>
  7618. <para><literallayout xml:space='preserve' class='monospaced'>Process</literallayout></para>
  7619. </entry>
  7620. <entry>
  7621. <para><literallayout xml:space='preserve' class='monospaced'>A Process is a single execution statement in a textual model, or a single flow
  7622. in a graphical model. It can read data, write data (implied modify), make a
  7623. conditional path choice, and execute another process model.</literallayout></para>
  7624. </entry>
  7625. </row>
  7626. <row>
  7627. <entry>
  7628. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7629. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7630. </imageobject></mediaobject>
  7631. </literallayout></para>
  7632. </entry>
  7633. <entry>
  7634. <para><literallayout xml:space='preserve' class='monospaced'>ordinal_position:real</literallayout></para>
  7635. </entry>
  7636. <entry>
  7637. <para><literallayout xml:space='preserve' class='monospaced'>The position of the process in the action. The ordinal positions of processes
  7638. determine sequence of execution when the action is invoked.</literallayout></para>
  7639. </entry>
  7640. </row>
  7641. <row>
  7642. <entry>
  7643. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7644. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7645. </imageobject></mediaobject>
  7646. </literallayout></para>
  7647. </entry>
  7648. <entry>
  7649. <para><literallayout xml:space='preserve' class='monospaced'>action_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7650. </entry>
  7651. <entry>
  7652. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7653. </entry>
  7654. </row>
  7655. <row>
  7656. <entry>
  7657. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7658. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7659. </imageobject></mediaobject>
  7660. </literallayout></para>
  7661. </entry>
  7662. <entry>
  7663. <para><literallayout xml:space='preserve' class='monospaced'>Reference Element</literallayout></para>
  7664. </entry>
  7665. <entry>
  7666. <para><literallayout xml:space='preserve' class='monospaced'>A reference element is any Shlaer-Mellor element that can be accessed as part
  7667. of a procedural model. A reference element invokes an action and/or assigns a
  7668. value to a variable.
  7669. The reference element constrains which elements in the metamodel can
  7670. participate in a process.</literallayout></para>
  7671. </entry>
  7672. </row>
  7673. <row>
  7674. <entry>
  7675. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7676. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7677. </imageobject></mediaobject>
  7678. </literallayout></para>
  7679. </entry>
  7680. <entry>
  7681. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  7682. </entry>
  7683. <entry>
  7684. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7685. </entry>
  7686. </row>
  7687. <row>
  7688. <entry>
  7689. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7690. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7691. </imageobject></mediaobject>
  7692. </literallayout></para>
  7693. </entry>
  7694. <entry>
  7695. <para><literallayout xml:space='preserve' class='monospaced'>Specializing Method</literallayout></para>
  7696. </entry>
  7697. <entry>
  7698. <para><literallayout xml:space='preserve' class='monospaced'>A specializing instance method exists in only a subset of object instantiations.</literallayout></para>
  7699. </entry>
  7700. </row>
  7701. <row>
  7702. <entry>
  7703. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7704. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7705. </imageobject></mediaobject>
  7706. </literallayout></para>
  7707. </entry>
  7708. <entry>
  7709. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7710. </entry>
  7711. <entry>
  7712. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7713. </entry>
  7714. </row>
  7715. <row>
  7716. <entry>
  7717. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7718. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7719. </imageobject></mediaobject>
  7720. </literallayout></para>
  7721. </entry>
  7722. <entry>
  7723. <para><literallayout xml:space='preserve' class='monospaced'>specialization_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7724. </entry>
  7725. <entry>
  7726. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7727. </entry>
  7728. </row>
  7729. <row>
  7730. <entry>
  7731. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7732. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7733. </imageobject></mediaobject>
  7734. </literallayout></para>
  7735. </entry>
  7736. <entry>
  7737. <para><literallayout xml:space='preserve' class='monospaced'>Statement</literallayout></para>
  7738. </entry>
  7739. <entry>
  7740. <para><literallayout xml:space='preserve' class='monospaced'>A statement process executes a single expression. It doesn&apos;&apos;t contain other
  7741. processes. The typical executions are assignment, event generation, or external
  7742. action calls.</literallayout></para>
  7743. </entry>
  7744. </row>
  7745. <row>
  7746. <entry>
  7747. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7748. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7749. </imageobject></mediaobject>
  7750. </literallayout></para>
  7751. </entry>
  7752. <entry>
  7753. <para><literallayout xml:space='preserve' class='monospaced'>ordinal_position:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7754. </entry>
  7755. <entry>
  7756. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7757. </entry>
  7758. </row>
  7759. <row>
  7760. <entry>
  7761. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7762. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7763. </imageobject></mediaobject>
  7764. </literallayout></para>
  7765. </entry>
  7766. <entry>
  7767. <para><literallayout xml:space='preserve' class='monospaced'>action_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7768. </entry>
  7769. <entry>
  7770. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7771. </entry>
  7772. </row>
  7773. <row>
  7774. <entry>
  7775. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7776. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7777. </imageobject></mediaobject>
  7778. </literallayout></para>
  7779. </entry>
  7780. <entry>
  7781. <para><literallayout xml:space='preserve' class='monospaced'>Synchronous Accessor</literallayout></para>
  7782. </entry>
  7783. <entry>
  7784. <para><literallayout xml:space='preserve' class='monospaced'>A synchronous accessor executes during the time that the action is running.
  7785. (see [OL:MWS] page 131)
  7786. Only synchronous accessors can return a value. Action is suspended until the
  7787. value is returned. This means that a synchronous service provided by another
  7788. domain can launch asynchronous actions to obtain the return value, but this
  7789. domain will be blocked while waiting on the actions to complete. The analyst
  7790. should take this into consideration.</literallayout></para>
  7791. </entry>
  7792. </row>
  7793. <row>
  7794. <entry>
  7795. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7796. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7797. </imageobject></mediaobject>
  7798. </literallayout></para>
  7799. </entry>
  7800. <entry>
  7801. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7802. </entry>
  7803. <entry>
  7804. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7805. </entry>
  7806. </row>
  7807. <row>
  7808. <entry>
  7809. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7810. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7811. </imageobject></mediaobject>
  7812. </literallayout></para>
  7813. </entry>
  7814. <entry>
  7815. <para><literallayout xml:space='preserve' class='monospaced'>Return Value</literallayout></para>
  7816. </entry>
  7817. <entry>
  7818. <para><literallayout xml:space='preserve' class='monospaced'>A return value specifies a type defined for an access that returns a data value.</literallayout></para>
  7819. </entry>
  7820. </row>
  7821. <row>
  7822. <entry>
  7823. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7824. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7825. </imageobject></mediaobject>
  7826. </literallayout></para>
  7827. </entry>
  7828. <entry>
  7829. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7830. </entry>
  7831. <entry>
  7832. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7833. </entry>
  7834. </row>
  7835. <row>
  7836. <entry>
  7837. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7838. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7839. </imageobject></mediaobject>
  7840. </literallayout></para>
  7841. </entry>
  7842. <entry>
  7843. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7844. </entry>
  7845. <entry>
  7846. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7847. </entry>
  7848. </row>
  7849. <row>
  7850. <entry>
  7851. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7852. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7853. </imageobject></mediaobject>
  7854. </literallayout></para>
  7855. </entry>
  7856. <entry>
  7857. <para><literallayout xml:space='preserve' class='monospaced'>access_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7858. </entry>
  7859. <entry>
  7860. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7861. </entry>
  7862. </row>
  7863. <row>
  7864. <entry>
  7865. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7866. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7867. </imageobject></mediaobject>
  7868. </literallayout></para>
  7869. </entry>
  7870. <entry>
  7871. <para><literallayout xml:space='preserve' class='monospaced'>Process Nesting</literallayout></para>
  7872. </entry>
  7873. <entry>
  7874. <para><literallayout xml:space='preserve' class='monospaced'>A process nesting is a process contained within a control structure. The
  7875. control structure determines when the process is executed.</literallayout></para>
  7876. </entry>
  7877. </row>
  7878. <row>
  7879. <entry>
  7880. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7881. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7882. </imageobject></mediaobject>
  7883. </literallayout></para>
  7884. </entry>
  7885. <entry>
  7886. <para><literallayout xml:space='preserve' class='monospaced'>controlStructure_ordinal_position:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7887. </entry>
  7888. <entry>
  7889. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7890. </entry>
  7891. </row>
  7892. <row>
  7893. <entry>
  7894. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7895. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7896. </imageobject></mediaobject>
  7897. </literallayout></para>
  7898. </entry>
  7899. <entry>
  7900. <para><literallayout xml:space='preserve' class='monospaced'>controlStructure_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7901. </entry>
  7902. <entry>
  7903. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7904. </entry>
  7905. </row>
  7906. <row>
  7907. <entry>
  7908. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7909. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7910. </imageobject></mediaobject>
  7911. </literallayout></para>
  7912. </entry>
  7913. <entry>
  7914. <para><literallayout xml:space='preserve' class='monospaced'>process_ordinal_position:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7915. </entry>
  7916. <entry>
  7917. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7918. </entry>
  7919. </row>
  7920. <row>
  7921. <entry>
  7922. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7923. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7924. </imageobject></mediaobject>
  7925. </literallayout></para>
  7926. </entry>
  7927. <entry>
  7928. <para><literallayout xml:space='preserve' class='monospaced'>process_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7929. </entry>
  7930. <entry>
  7931. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7932. </entry>
  7933. </row>
  7934. <row>
  7935. <entry>
  7936. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7937. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  7938. </imageobject></mediaobject>
  7939. </literallayout></para>
  7940. </entry>
  7941. <entry>
  7942. <para><literallayout xml:space='preserve' class='monospaced'>Path Evaluation</literallayout></para>
  7943. </entry>
  7944. <entry>
  7945. <para><literallayout xml:space='preserve' class='monospaced'>A path evaluation process evaluates one or more expressions and chooses the
  7946. processes to execute. Typical path evaluation processes in third generation
  7947. programming languages are if-then-else and switch-case statements.</literallayout></para>
  7948. </entry>
  7949. </row>
  7950. <row>
  7951. <entry>
  7952. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7953. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7954. </imageobject></mediaobject>
  7955. </literallayout></para>
  7956. </entry>
  7957. <entry>
  7958. <para><literallayout xml:space='preserve' class='monospaced'>numPaths:integer</literallayout></para>
  7959. </entry>
  7960. <entry>
  7961. <para><literallayout xml:space='preserve' class='monospaced'>The number of unique paths in this control structure.
  7962. Examples:
  7963. an if statement has one path
  7964. an if-else statement has two paths
  7965. an if-elif-else statement has three paths
  7966. a switch-case statement has paths equal to the number of cases</literallayout></para>
  7967. </entry>
  7968. </row>
  7969. <row>
  7970. <entry>
  7971. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7972. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7973. </imageobject></mediaobject>
  7974. </literallayout></para>
  7975. </entry>
  7976. <entry>
  7977. <para><literallayout xml:space='preserve' class='monospaced'>ordinal_position:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7978. </entry>
  7979. <entry>
  7980. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7981. </entry>
  7982. </row>
  7983. <row>
  7984. <entry>
  7985. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  7986. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  7987. </imageobject></mediaobject>
  7988. </literallayout></para>
  7989. </entry>
  7990. <entry>
  7991. <para><literallayout xml:space='preserve' class='monospaced'>action_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  7992. </entry>
  7993. <entry>
  7994. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  7995. </entry>
  7996. </row>
  7997. <row>
  7998. <entry>
  7999. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8000. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  8001. </imageobject></mediaobject>
  8002. </literallayout></para>
  8003. </entry>
  8004. <entry>
  8005. <para><literallayout xml:space='preserve' class='monospaced'>Path Assignment</literallayout></para>
  8006. </entry>
  8007. <entry>
  8008. <para><literallayout xml:space='preserve' class='monospaced'>A path assignment is done by the path evaluation control structure to assign
  8009. the nested process to a specific path.</literallayout></para>
  8010. </entry>
  8011. </row>
  8012. <row>
  8013. <entry>
  8014. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8015. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8016. </imageobject></mediaobject>
  8017. </literallayout></para>
  8018. </entry>
  8019. <entry>
  8020. <para><literallayout xml:space='preserve' class='monospaced'>nesting_ordinal_position:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8021. </entry>
  8022. <entry>
  8023. <para><literallayout xml:space='preserve' class='monospaced'>
  8024. </literallayout></para>
  8025. </entry>
  8026. </row>
  8027. <row>
  8028. <entry>
  8029. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8030. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8031. </imageobject></mediaobject>
  8032. </literallayout></para>
  8033. </entry>
  8034. <entry>
  8035. <para><literallayout xml:space='preserve' class='monospaced'>nesting_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8036. </entry>
  8037. <entry>
  8038. <para><literallayout xml:space='preserve' class='monospaced'>
  8039. </literallayout></para>
  8040. </entry>
  8041. </row>
  8042. <row>
  8043. <entry>
  8044. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8045. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8046. </imageobject></mediaobject>
  8047. </literallayout></para>
  8048. </entry>
  8049. <entry>
  8050. <para><literallayout xml:space='preserve' class='monospaced'>path_ordinal_position:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8051. </entry>
  8052. <entry>
  8053. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8054. </entry>
  8055. </row>
  8056. <row>
  8057. <entry>
  8058. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8059. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8060. </imageobject></mediaobject>
  8061. </literallayout></para>
  8062. </entry>
  8063. <entry>
  8064. <para><literallayout xml:space='preserve' class='monospaced'>path_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8065. </entry>
  8066. <entry>
  8067. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8068. </entry>
  8069. </row>
  8070. <row>
  8071. <entry>
  8072. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8073. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  8074. </imageobject></mediaobject>
  8075. </literallayout></para>
  8076. </entry>
  8077. <entry>
  8078. <para><literallayout xml:space='preserve' class='monospaced'>Parameter</literallayout></para>
  8079. </entry>
  8080. <entry>
  8081. <para><literallayout xml:space='preserve' class='monospaced'>A parameter specifies a typed data instance whose value is accessible by the
  8082. action associated with the accessor.</literallayout></para>
  8083. </entry>
  8084. </row>
  8085. <row>
  8086. <entry>
  8087. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8088. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8089. </imageobject></mediaobject>
  8090. </literallayout></para>
  8091. </entry>
  8092. <entry>
  8093. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8094. </entry>
  8095. <entry>
  8096. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8097. </entry>
  8098. </row>
  8099. <row>
  8100. <entry>
  8101. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8102. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8103. </imageobject></mediaobject>
  8104. </literallayout></para>
  8105. </entry>
  8106. <entry>
  8107. <para><literallayout xml:space='preserve' class='monospaced'>accessor_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8108. </entry>
  8109. <entry>
  8110. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8111. </entry>
  8112. </row>
  8113. <row>
  8114. <entry>
  8115. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8116. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8117. </imageobject></mediaobject>
  8118. </literallayout></para>
  8119. </entry>
  8120. <entry>
  8121. <para><literallayout xml:space='preserve' class='monospaced'>name:string</literallayout></para>
  8122. </entry>
  8123. <entry>
  8124. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8125. </entry>
  8126. </row>
  8127. <row>
  8128. <entry>
  8129. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8130. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  8131. </imageobject></mediaobject>
  8132. </literallayout></para>
  8133. </entry>
  8134. <entry>
  8135. <para><literallayout xml:space='preserve' class='monospaced'>Non-event Parameter</literallayout></para>
  8136. </entry>
  8137. <entry>
  8138. <para><literallayout xml:space='preserve' class='monospaced'>A non-event parameter is assigned to any accessor that isn&apos;&apos;t an event.</literallayout></para>
  8139. </entry>
  8140. </row>
  8141. <row>
  8142. <entry>
  8143. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8144. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8145. </imageobject></mediaobject>
  8146. </literallayout></para>
  8147. </entry>
  8148. <entry>
  8149. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8150. </entry>
  8151. <entry>
  8152. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8153. </entry>
  8154. </row>
  8155. <row>
  8156. <entry>
  8157. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8158. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8159. </imageobject></mediaobject>
  8160. </literallayout></para>
  8161. </entry>
  8162. <entry>
  8163. <para><literallayout xml:space='preserve' class='monospaced'>accessor_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8164. </entry>
  8165. <entry>
  8166. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8167. </entry>
  8168. </row>
  8169. <row>
  8170. <entry>
  8171. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8172. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8173. </imageobject></mediaobject>
  8174. </literallayout></para>
  8175. </entry>
  8176. <entry>
  8177. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8178. </entry>
  8179. <entry>
  8180. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8181. </entry>
  8182. </row>
  8183. <row>
  8184. <entry>
  8185. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8186. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  8187. </imageobject></mediaobject>
  8188. </literallayout></para>
  8189. </entry>
  8190. <entry>
  8191. <para><literallayout xml:space='preserve' class='monospaced'>Loop</literallayout></para>
  8192. </entry>
  8193. <entry>
  8194. <para><literallayout xml:space='preserve' class='monospaced'>A loop process performs any contained processes until a specified condition is
  8195. met. Typical loop processes in third generation programming languages are while
  8196. and do-while statements.</literallayout></para>
  8197. </entry>
  8198. </row>
  8199. <row>
  8200. <entry>
  8201. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8202. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8203. </imageobject></mediaobject>
  8204. </literallayout></para>
  8205. </entry>
  8206. <entry>
  8207. <para><literallayout xml:space='preserve' class='monospaced'>ordinal_position:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8208. </entry>
  8209. <entry>
  8210. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8211. </entry>
  8212. </row>
  8213. <row>
  8214. <entry>
  8215. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8216. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8217. </imageobject></mediaobject>
  8218. </literallayout></para>
  8219. </entry>
  8220. <entry>
  8221. <para><literallayout xml:space='preserve' class='monospaced'>action_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8222. </entry>
  8223. <entry>
  8224. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8225. </entry>
  8226. </row>
  8227. <row>
  8228. <entry>
  8229. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8230. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  8231. </imageobject></mediaobject>
  8232. </literallayout></para>
  8233. </entry>
  8234. <entry>
  8235. <para><literallayout xml:space='preserve' class='monospaced'>Iteration</literallayout></para>
  8236. </entry>
  8237. <entry>
  8238. <para><literallayout xml:space='preserve' class='monospaced'>An iteration process steps through an ordinal value from a specified starting
  8239. point to a specified ending point. Typical iteration processes in third
  8240. generation programming languages are for loops.
  8241. This analysis only supports a single step index into a fixed length array,
  8242. therefore the iteration always starts at the first array element (one-based)
  8243. and indexes through the end of the array. External editors will have to adjust
  8244. their value arrays accordingly or use a loop.</literallayout></para>
  8245. </entry>
  8246. </row>
  8247. <row>
  8248. <entry>
  8249. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8250. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8251. </imageobject></mediaobject>
  8252. </literallayout></para>
  8253. </entry>
  8254. <entry>
  8255. <para><literallayout xml:space='preserve' class='monospaced'>current_index:integer</literallayout></para>
  8256. </entry>
  8257. <entry>
  8258. <para><literallayout xml:space='preserve' class='monospaced'>This attribute tracks the current position in the array whose value is
  8259. contained in the variable.</literallayout></para>
  8260. </entry>
  8261. </row>
  8262. <row>
  8263. <entry>
  8264. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8265. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8266. </imageobject></mediaobject>
  8267. </literallayout></para>
  8268. </entry>
  8269. <entry>
  8270. <para><literallayout xml:space='preserve' class='monospaced'>ordinal_position:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8271. </entry>
  8272. <entry>
  8273. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8274. </entry>
  8275. </row>
  8276. <row>
  8277. <entry>
  8278. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8279. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8280. </imageobject></mediaobject>
  8281. </literallayout></para>
  8282. </entry>
  8283. <entry>
  8284. <para><literallayout xml:space='preserve' class='monospaced'>action_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8285. </entry>
  8286. <entry>
  8287. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8288. </entry>
  8289. </row>
  8290. <row>
  8291. <entry>
  8292. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8293. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  8294. </imageobject></mediaobject>
  8295. </literallayout></para>
  8296. </entry>
  8297. <entry>
  8298. <para><literallayout xml:space='preserve' class='monospaced'>Event Parameter</literallayout></para>
  8299. </entry>
  8300. <entry>
  8301. <para><literallayout xml:space='preserve' class='monospaced'>An event parameter ia a parameter assigned to an event. The subtype is required
  8302. for enforcing the &quot;same data rule&quot; for entry into a state.</literallayout></para>
  8303. </entry>
  8304. </row>
  8305. <row>
  8306. <entry>
  8307. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8308. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8309. </imageobject></mediaobject>
  8310. </literallayout></para>
  8311. </entry>
  8312. <entry>
  8313. <para><literallayout xml:space='preserve' class='monospaced'>model_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8314. </entry>
  8315. <entry>
  8316. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8317. </entry>
  8318. </row>
  8319. <row>
  8320. <entry>
  8321. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8322. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8323. </imageobject></mediaobject>
  8324. </literallayout></para>
  8325. </entry>
  8326. <entry>
  8327. <para><literallayout xml:space='preserve' class='monospaced'>state_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8328. </entry>
  8329. <entry>
  8330. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8331. </entry>
  8332. </row>
  8333. <row>
  8334. <entry>
  8335. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8336. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8337. </imageobject></mediaobject>
  8338. </literallayout></para>
  8339. </entry>
  8340. <entry>
  8341. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8342. </entry>
  8343. <entry>
  8344. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8345. </entry>
  8346. </row>
  8347. <row>
  8348. <entry>
  8349. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8350. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8351. </imageobject></mediaobject>
  8352. </literallayout></para>
  8353. </entry>
  8354. <entry>
  8355. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8356. </entry>
  8357. <entry>
  8358. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8359. </entry>
  8360. </row>
  8361. <row>
  8362. <entry>
  8363. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8364. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8365. </imageobject></mediaobject>
  8366. </literallayout></para>
  8367. </entry>
  8368. <entry>
  8369. <para><literallayout xml:space='preserve' class='monospaced'>accessor_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8370. </entry>
  8371. <entry>
  8372. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8373. </entry>
  8374. </row>
  8375. <row>
  8376. <entry>
  8377. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8378. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8379. </imageobject></mediaobject>
  8380. </literallayout></para>
  8381. </entry>
  8382. <entry>
  8383. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8384. </entry>
  8385. <entry>
  8386. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8387. </entry>
  8388. </row>
  8389. <row>
  8390. <entry>
  8391. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8392. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  8393. </imageobject></mediaobject>
  8394. </literallayout></para>
  8395. </entry>
  8396. <entry>
  8397. <para><literallayout xml:space='preserve' class='monospaced'>Equation</literallayout></para>
  8398. </entry>
  8399. <entry>
  8400. <para><literallayout xml:space='preserve' class='monospaced'>An equation is statement of equality using other values or variables. In OOA,
  8401. an equation results in assignment to a variable.</literallayout></para>
  8402. </entry>
  8403. </row>
  8404. <row>
  8405. <entry>
  8406. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8407. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8408. </imageobject></mediaobject>
  8409. </literallayout></para>
  8410. </entry>
  8411. <entry>
  8412. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8413. </entry>
  8414. <entry>
  8415. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8416. </entry>
  8417. </row>
  8418. <row>
  8419. <entry>
  8420. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8421. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  8422. </imageobject></mediaobject>
  8423. </literallayout></para>
  8424. </entry>
  8425. <entry>
  8426. <para><literallayout xml:space='preserve' class='monospaced'>Element Access</literallayout></para>
  8427. </entry>
  8428. <entry>
  8429. <para><literallayout xml:space='preserve' class='monospaced'>Element Access represents usage of a modeled element by a Process.</literallayout></para>
  8430. </entry>
  8431. </row>
  8432. <row>
  8433. <entry>
  8434. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8435. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8436. </imageobject></mediaobject>
  8437. </literallayout></para>
  8438. </entry>
  8439. <entry>
  8440. <para><literallayout xml:space='preserve' class='monospaced'>ordinal_position:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8441. </entry>
  8442. <entry>
  8443. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8444. </entry>
  8445. </row>
  8446. <row>
  8447. <entry>
  8448. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8449. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8450. </imageobject></mediaobject>
  8451. </literallayout></para>
  8452. </entry>
  8453. <entry>
  8454. <para><literallayout xml:space='preserve' class='monospaced'>action_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8455. </entry>
  8456. <entry>
  8457. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8458. </entry>
  8459. </row>
  8460. <row>
  8461. <entry>
  8462. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8463. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8464. </imageobject></mediaobject>
  8465. </literallayout></para>
  8466. </entry>
  8467. <entry>
  8468. <para><literallayout xml:space='preserve' class='monospaced'>referenceElement_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8469. </entry>
  8470. <entry>
  8471. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8472. </entry>
  8473. </row>
  8474. <row>
  8475. <entry>
  8476. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8477. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  8478. </imageobject></mediaobject>
  8479. </literallayout></para>
  8480. </entry>
  8481. <entry>
  8482. <para><literallayout xml:space='preserve' class='monospaced'>Control Structure</literallayout></para>
  8483. </entry>
  8484. <entry>
  8485. <para><literallayout xml:space='preserve' class='monospaced'>A control structure process is used to encapsulate other process execution.
  8486. Typical control structures are if-then-else and while loops.</literallayout></para>
  8487. </entry>
  8488. </row>
  8489. <row>
  8490. <entry>
  8491. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8492. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8493. </imageobject></mediaobject>
  8494. </literallayout></para>
  8495. </entry>
  8496. <entry>
  8497. <para><literallayout xml:space='preserve' class='monospaced'>closure_position:real</literallayout></para>
  8498. </entry>
  8499. <entry>
  8500. <para><literallayout xml:space='preserve' class='monospaced'>The ordinal position of the last process in the control structure. A closure
  8501. position of zero means the control structure is unclosed.</literallayout></para>
  8502. </entry>
  8503. </row>
  8504. <row>
  8505. <entry>
  8506. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8507. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8508. </imageobject></mediaobject>
  8509. </literallayout></para>
  8510. </entry>
  8511. <entry>
  8512. <para><literallayout xml:space='preserve' class='monospaced'>ordinal_position:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8513. </entry>
  8514. <entry>
  8515. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8516. </entry>
  8517. </row>
  8518. <row>
  8519. <entry>
  8520. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8521. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8522. </imageobject></mediaobject>
  8523. </literallayout></para>
  8524. </entry>
  8525. <entry>
  8526. <para><literallayout xml:space='preserve' class='monospaced'>action_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8527. </entry>
  8528. <entry>
  8529. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8530. </entry>
  8531. </row>
  8532. <row>
  8533. <entry>
  8534. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8535. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  8536. </imageobject></mediaobject>
  8537. </literallayout></para>
  8538. </entry>
  8539. <entry>
  8540. <para><literallayout xml:space='preserve' class='monospaced'>Action</literallayout></para>
  8541. </entry>
  8542. <entry>
  8543. <para><literallayout xml:space='preserve' class='monospaced'>&quot;All the processing that goes on in the system is stated in the actions.&quot;
  8544. [OL:MWS]
  8545. An Action is a single, atomic, unit of processing that can read data, write
  8546. data (implied modify), make conditional choices, and launch the execution of
  8547. other actions.</literallayout></para>
  8548. </entry>
  8549. </row>
  8550. <row>
  8551. <entry>
  8552. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8553. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8554. </imageobject></mediaobject>
  8555. </literallayout></para>
  8556. </entry>
  8557. <entry>
  8558. <para><literallayout xml:space='preserve' class='monospaced'>element_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  8559. </entry>
  8560. <entry>
  8561. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8562. </entry>
  8563. </row>
  8564. <row>
  8565. <entry>
  8566. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8567. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  8568. </imageobject></mediaobject>
  8569. </literallayout></para>
  8570. </entry>
  8571. <entry>
  8572. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  8573. </entry>
  8574. <entry>
  8575. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8576. </entry>
  8577. </row>
  8578. </tbody>
  8579. </tgroup>
  8580. </table>
  8581. </literallayout></para>
  8582. <section>
  8583. <title>Class Activities</title>
  8584. <subtitle></subtitle>
  8585. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  8586. <section>
  8587. <title>Class Operations</title>
  8588. <subtitle></subtitle>
  8589. <section>
  8590. <title>Process:Accessor: instantiate</title>
  8591. <subtitle></subtitle>
  8592. <para><literallayout xml:space='preserve' class='monospaced'>Create an instance of this accessor, and it&apos;&apos;s parameters.</literallayout></para>
  8593. <para><programlisting>create object instance ain of AIN;
  8594. select any aref from instances of AREF;
  8595. relate ain to aref across R422;
  8596. relate ain to self across R640;
  8597. create object instance val of VAL;
  8598. relate ain to val across R629;
  8599. create object instance dus of DUS;
  8600. relate val to dus across R624;
  8601. select one type related by aref-&gt;CORE[R403]-&gt;TYPE[R401];
  8602. relate type to dus across R625;
  8603. create object instance re of RE;
  8604. relate dus to re across R514;
  8605. select many prms related by self-&gt;PRM[R540];
  8606. for each prm in prms
  8607. prm.instantiate( accessorInstance:ain.id );
  8608. end for;
  8609. return ain.id;
  8610. </programlisting></para>
  8611. </section>
  8612. </section>
  8613. </section>
  8614. <section>
  8615. <title>Class Activities</title>
  8616. <subtitle></subtitle>
  8617. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  8618. <section>
  8619. <title>Class Operations</title>
  8620. <subtitle></subtitle>
  8621. <section>
  8622. <title>Process:Instance Method: instantiate</title>
  8623. <subtitle></subtitle>
  8624. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8625. <para><programlisting>select one acc related by self-&gt;MTH[R532]-&gt;ISY[R534]-&gt;SYA[R524]-&gt;ACC[R505];
  8626. instId = acc.instantiate();
  8627. select any ain from instances of AIN where selected.id == instId;
  8628. select any ins from instances of INS where selected.id == param.objectInstance;
  8629. create object instance min of MIN;
  8630. relate ain to ins across R648 using min;
  8631. </programlisting></para>
  8632. </section>
  8633. </section>
  8634. </section>
  8635. <section>
  8636. <title>Class Activities</title>
  8637. <subtitle></subtitle>
  8638. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  8639. <section>
  8640. <title>Class Operations</title>
  8641. <subtitle></subtitle>
  8642. <section>
  8643. <title>Process:Method: belongsTo</title>
  8644. <subtitle></subtitle>
  8645. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8646. <para><programlisting>rc = true;
  8647. select one om related by self-&gt;OM[R532] where selected.name == param.object;
  8648. if (empty om)
  8649. select one nm related by self-&gt;IM[R532]-&gt;NM[R533] where selected.name == param.object;
  8650. if (empty nm)
  8651. select one obs related by self-&gt;IM[R532]-&gt;SMT[R533]-&gt;OBS[R125] where selected.subtype_name == param.object;
  8652. if (empty obs)
  8653. rc = false;
  8654. end if;
  8655. end if;
  8656. end if;
  8657. return rc;
  8658. </programlisting></para>
  8659. </section>
  8660. </section>
  8661. </section>
  8662. <section>
  8663. <title>Class Activities</title>
  8664. <subtitle></subtitle>
  8665. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  8666. <section>
  8667. <title>Class Operations</title>
  8668. <subtitle></subtitle>
  8669. </section>
  8670. </section>
  8671. <section>
  8672. <title>Class Activities</title>
  8673. <subtitle></subtitle>
  8674. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  8675. <section>
  8676. <title>Class Operations</title>
  8677. <subtitle></subtitle>
  8678. <section>
  8679. <title>Process:Parameter: instantiate</title>
  8680. <subtitle></subtitle>
  8681. <para><literallayout xml:space='preserve' class='monospaced'>Create an instance of this parameter related to the specified accessor instance.</literallayout></para>
  8682. <para><programlisting>select any ain from instances of AIN where selected.id == param.accessorInstance;
  8683. create object instance prn of PRN;
  8684. relate prn to self across R645;
  8685. relate prn to ain across R647;
  8686. create object instance var of VAR;
  8687. relate prn to var across R626;
  8688. select any emp from instances of EMP;
  8689. select one val related by emp-&gt;VAL[R629];
  8690. relate val to var across R635;
  8691. create object instance dus of DUS;
  8692. relate var to dus across R624;
  8693. select one type related by self-&gt;TYPE[R541];
  8694. relate dus to type across R625;
  8695. create object instance re of RE;
  8696. relate dus to re across R514;
  8697. </programlisting></para>
  8698. </section>
  8699. </section>
  8700. </section>
  8701. <section>
  8702. <title>Class Activities</title>
  8703. <subtitle></subtitle>
  8704. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  8705. <section>
  8706. <title>Class Operations</title>
  8707. <subtitle></subtitle>
  8708. <section>
  8709. <title>Process:Equation: delete</title>
  8710. <subtitle></subtitle>
  8711. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  8712. <para><programlisting>select one re related by self-&gt;RE[R514];
  8713. unrelate self from re across R514;
  8714. re.delete();
  8715. delete object instance re;
  8716. select many exps related by self-&gt;EXP[R622];
  8717. for each exp in exps
  8718. select one tyop related by exp-&gt;TYOP[R632];
  8719. unrelate exp from tyop across R632;
  8720. select one out related by exp-&gt;OUT[R611];
  8721. unrelate out from exp across R611;
  8722. select one tyop related by out-&gt;TYOP[R634];
  8723. unrelate out from tyop across R634;
  8724. select one oprd related by out-&gt;OPRD[R618];
  8725. unrelate out from oprd across R618;
  8726. delete object instance out;
  8727. select one rho related by exp-&gt;RHO[R617];
  8728. unrelate exp from rho across R617;
  8729. select one oprd related by rho-&gt;OPRD[R615];
  8730. unrelate rho from oprd across R615;
  8731. delete object instance rho;
  8732. select one dus related by oprd-&gt;DUS[R631];
  8733. unrelate oprd from dus across R631;
  8734. delete object instance oprd;
  8735. select one lho related by exp-&gt;LHO[R616];
  8736. if (not empty lho)
  8737. unrelate exp from lho across R616;
  8738. select one oprd related by lho-&gt;OPRD[R615];
  8739. unrelate lho from oprd across R615;
  8740. delete object instance lho;
  8741. select one dus related by oprd-&gt;DUS[R631];
  8742. unrelate oprd from dus across R631;
  8743. delete object instance oprd;
  8744. end if;
  8745. unrelate self from exp across R622;
  8746. delete object instance exp;
  8747. end for;
  8748. </programlisting></para>
  8749. </section>
  8750. </section>
  8751. </section>
  8752. <section>
  8753. <title>Class Activities</title>
  8754. <subtitle></subtitle>
  8755. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  8756. <section>
  8757. <title>Class Operations</title>
  8758. <subtitle></subtitle>
  8759. <section>
  8760. <title>Process:Action: getAccessorName</title>
  8761. <subtitle></subtitle>
  8762. <para><literallayout xml:space='preserve' class='monospaced'>Returns the name of the accessor or state that contains this action. In the
  8763. case of states, different event (accessor) names can be used to cause entry
  8764. into the state, so the state name must be used.</literallayout></para>
  8765. <para><programlisting>name = &quot;&quot;;
  8766. select one acc related by self-&gt;AE[R500]-&gt;BRG[R509]-&gt;ASB[R3]-&gt;ASA[R506]-&gt;ACC[R505];
  8767. if (empty acc)
  8768. select one acc related by self-&gt;AE[R500]-&gt;BRG[R509]-&gt;SYB[R3]-&gt;SYA[R524]-&gt;ACC[R505];
  8769. if (empty acc)
  8770. select one acc related by self-&gt;AE[R500]-&gt;ATA[R509]-&gt;ISY[R534]-&gt;SYA[R524]-&gt;ACC[R505];
  8771. if (empty acc)
  8772. select one acc related by self-&gt;AE[R500]-&gt;MTH[R509]-&gt;ISY[R534]-&gt;SYA[R524]-&gt;ACC[R505];
  8773. if (empty acc)
  8774. select one sta related by self-&gt;AE[R500]-&gt;STA[R509];
  8775. name = sta.name;
  8776. end if;
  8777. end if;
  8778. end if;
  8779. end if;
  8780. if (not empty acc)
  8781. name = acc.name;
  8782. end if;
  8783. return name;
  8784. </programlisting></para>
  8785. </section>
  8786. </section>
  8787. </section>
  8788. </section>
  8789. <section>
  8790. <title>Associations</title>
  8791. <subtitle>Associations</subtitle>
  8792. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  8793. <title>Process</title>
  8794. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  8795. <thead>
  8796. <row>
  8797. <entry>
  8798. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8799. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  8800. </imageobject></mediaobject>
  8801. </literallayout></para>
  8802. </entry>
  8803. <entry>
  8804. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  8805. </entry>
  8806. <entry>
  8807. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  8808. </entry>
  8809. </row>
  8810. </thead>
  8811. <tbody>
  8812. <row>
  8813. <entry>
  8814. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8815. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  8816. </imageobject></mediaobject>
  8817. </literallayout></para>
  8818. </entry>
  8819. <entry>
  8820. <para><literallayout xml:space='preserve' class='monospaced'>505</literallayout></para>
  8821. </entry>
  8822. <entry>
  8823. <para><literallayout xml:space='preserve' class='monospaced'>An accessor is an asynchronous accessor or a synchronous accessor.</literallayout></para>
  8824. </entry>
  8825. </row>
  8826. <row>
  8827. <entry>
  8828. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8829. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  8830. </imageobject></mediaobject>
  8831. </literallayout></para>
  8832. </entry>
  8833. <entry>
  8834. <para><literallayout xml:space='preserve' class='monospaced'>501</literallayout></para>
  8835. </entry>
  8836. <entry>
  8837. <para><literallayout xml:space='preserve' class='monospaced'>The Action executes Processes upon launch. The Processes are unique for the
  8838. Action. Reuse of Processes is achieved by Actions launching other Actions via
  8839. their Active Element.</literallayout></para>
  8840. </entry>
  8841. </row>
  8842. <row>
  8843. <entry>
  8844. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8845. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  8846. </imageobject></mediaobject>
  8847. </literallayout></para>
  8848. </entry>
  8849. <entry>
  8850. <para><literallayout xml:space='preserve' class='monospaced'>500</literallayout></para>
  8851. </entry>
  8852. <entry>
  8853. <para><literallayout xml:space='preserve' class='monospaced'>An Active Element is the container for the Action. The Active Element provides
  8854. access, either internal or external, for launching the Action.</literallayout></para>
  8855. </entry>
  8856. </row>
  8857. <row>
  8858. <entry>
  8859. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8860. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  8861. </imageobject></mediaobject>
  8862. </literallayout></para>
  8863. </entry>
  8864. <entry>
  8865. <para><literallayout xml:space='preserve' class='monospaced'>502</literallayout></para>
  8866. </entry>
  8867. <entry>
  8868. <para><literallayout xml:space='preserve' class='monospaced'>Processes can use one or more Referenced Elements for data access and Action
  8869. execution.</literallayout></para>
  8870. </entry>
  8871. </row>
  8872. <row>
  8873. <entry>
  8874. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8875. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  8876. </imageobject></mediaobject>
  8877. </literallayout></para>
  8878. </entry>
  8879. <entry>
  8880. <para><literallayout xml:space='preserve' class='monospaced'>506</literallayout></para>
  8881. </entry>
  8882. <entry>
  8883. <para><literallayout xml:space='preserve' class='monospaced'>A synchronous accessor requires asynchronous action from an internal event or
  8884. an external domain.
  8885. </literallayout></para>
  8886. </entry>
  8887. </row>
  8888. <row>
  8889. <entry>
  8890. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8891. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  8892. </imageobject></mediaobject>
  8893. </literallayout></para>
  8894. </entry>
  8895. <entry>
  8896. <para><literallayout xml:space='preserve' class='monospaced'>509</literallayout></para>
  8897. </entry>
  8898. <entry>
  8899. <para><literallayout xml:space='preserve' class='monospaced'>Only certain elements of OOA modeling can contain process models and therefore
  8900. are active elements.</literallayout></para>
  8901. </entry>
  8902. </row>
  8903. <row>
  8904. <entry>
  8905. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8906. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  8907. </imageobject></mediaobject>
  8908. </literallayout></para>
  8909. </entry>
  8910. <entry>
  8911. <para><literallayout xml:space='preserve' class='monospaced'>514</literallayout></para>
  8912. </entry>
  8913. <entry>
  8914. <para><literallayout xml:space='preserve' class='monospaced'>Only certain elements of OOA can be referenced by process models, so those
  8915. elements are constrained by this relationship.</literallayout></para>
  8916. </entry>
  8917. </row>
  8918. <row>
  8919. <entry>
  8920. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8921. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  8922. </imageobject></mediaobject>
  8923. </literallayout></para>
  8924. </entry>
  8925. <entry>
  8926. <para><literallayout xml:space='preserve' class='monospaced'>522</literallayout></para>
  8927. </entry>
  8928. <entry>
  8929. <para><literallayout xml:space='preserve' class='monospaced'>An attribute action uses the derivations defined for an attribute to calculate
  8930. the attribute&apos;&apos;s value. The derivations are only used by one attribute action.</literallayout></para>
  8931. </entry>
  8932. </row>
  8933. <row>
  8934. <entry>
  8935. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8936. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  8937. </imageobject></mediaobject>
  8938. </literallayout></para>
  8939. </entry>
  8940. <entry>
  8941. <para><literallayout xml:space='preserve' class='monospaced'>523</literallayout></para>
  8942. </entry>
  8943. <entry>
  8944. <para><literallayout xml:space='preserve' class='monospaced'>An attribute action is defined for providing a value for only one
  8945. non-referential attribute. Not all non-referential attributes have their value
  8946. derived.</literallayout></para>
  8947. </entry>
  8948. </row>
  8949. <row>
  8950. <entry>
  8951. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8952. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  8953. </imageobject></mediaobject>
  8954. </literallayout></para>
  8955. </entry>
  8956. <entry>
  8957. <para><literallayout xml:space='preserve' class='monospaced'>524</literallayout></para>
  8958. </entry>
  8959. <entry>
  8960. <para><literallayout xml:space='preserve' class='monospaced'>A synchronous accessor requires synchronous action from internal processing or
  8961. an external domain.</literallayout></para>
  8962. </entry>
  8963. </row>
  8964. <row>
  8965. <entry>
  8966. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8967. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  8968. </imageobject></mediaobject>
  8969. </literallayout></para>
  8970. </entry>
  8971. <entry>
  8972. <para><literallayout xml:space='preserve' class='monospaced'>529</literallayout></para>
  8973. </entry>
  8974. <entry>
  8975. <para><literallayout xml:space='preserve' class='monospaced'>A type can be used to constrain returns from synchronous accesses, and a
  8976. synchronous access can return a specified data type.</literallayout></para>
  8977. </entry>
  8978. </row>
  8979. <row>
  8980. <entry>
  8981. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8982. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  8983. </imageobject></mediaobject>
  8984. </literallayout></para>
  8985. </entry>
  8986. <entry>
  8987. <para><literallayout xml:space='preserve' class='monospaced'>532</literallayout></para>
  8988. </entry>
  8989. <entry>
  8990. <para><literallayout xml:space='preserve' class='monospaced'>Methods can be applied to instantiated object instances or uninstantiated
  8991. objects.</literallayout></para>
  8992. </entry>
  8993. </row>
  8994. <row>
  8995. <entry>
  8996. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  8997. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  8998. </imageobject></mediaobject>
  8999. </literallayout></para>
  9000. </entry>
  9001. <entry>
  9002. <para><literallayout xml:space='preserve' class='monospaced'>533</literallayout></para>
  9003. </entry>
  9004. <entry>
  9005. <para><literallayout xml:space='preserve' class='monospaced'>An instance method can exist for all objects instances or only a subset of
  9006. object instances.</literallayout></para>
  9007. </entry>
  9008. </row>
  9009. <row>
  9010. <entry>
  9011. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9012. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  9013. </imageobject></mediaobject>
  9014. </literallayout></para>
  9015. </entry>
  9016. <entry>
  9017. <para><literallayout xml:space='preserve' class='monospaced'>534</literallayout></para>
  9018. </entry>
  9019. <entry>
  9020. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9021. </entry>
  9022. </row>
  9023. <row>
  9024. <entry>
  9025. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9026. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  9027. </imageobject></mediaobject>
  9028. </literallayout></para>
  9029. </entry>
  9030. <entry>
  9031. <para><literallayout xml:space='preserve' class='monospaced'>535</literallayout></para>
  9032. </entry>
  9033. <entry>
  9034. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9035. </entry>
  9036. </row>
  9037. <row>
  9038. <entry>
  9039. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9040. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  9041. </imageobject></mediaobject>
  9042. </literallayout></para>
  9043. </entry>
  9044. <entry>
  9045. <para><literallayout xml:space='preserve' class='monospaced'>536</literallayout></para>
  9046. </entry>
  9047. <entry>
  9048. <para><literallayout xml:space='preserve' class='monospaced'>Processes are single statements or control structures that contain other
  9049. processes.</literallayout></para>
  9050. </entry>
  9051. </row>
  9052. <row>
  9053. <entry>
  9054. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9055. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  9056. </imageobject></mediaobject>
  9057. </literallayout></para>
  9058. </entry>
  9059. <entry>
  9060. <para><literallayout xml:space='preserve' class='monospaced'>537</literallayout></para>
  9061. </entry>
  9062. <entry>
  9063. <para><literallayout xml:space='preserve' class='monospaced'>The control structures supported in this analysis are path evaluation,
  9064. iteration, and loops.</literallayout></para>
  9065. </entry>
  9066. </row>
  9067. <row>
  9068. <entry>
  9069. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9070. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  9071. </imageobject></mediaobject>
  9072. </literallayout></para>
  9073. </entry>
  9074. <entry>
  9075. <para><literallayout xml:space='preserve' class='monospaced'>538</literallayout></para>
  9076. </entry>
  9077. <entry>
  9078. <para><literallayout xml:space='preserve' class='monospaced'>A control structure controls zero to many processes, and a process can have its
  9079. execution controlled by a control structure.
  9080. Another way to look at this relationship is as containment where a control
  9081. structure can contain other processes.
  9082. Scoping is avoided in this analysis as variables are scoped by the action,
  9083. not by any processes.</literallayout></para>
  9084. </entry>
  9085. </row>
  9086. <row>
  9087. <entry>
  9088. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9089. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  9090. </imageobject></mediaobject>
  9091. </literallayout></para>
  9092. </entry>
  9093. <entry>
  9094. <para><literallayout xml:space='preserve' class='monospaced'>539</literallayout></para>
  9095. </entry>
  9096. <entry>
  9097. <para><literallayout xml:space='preserve' class='monospaced'>A path evaluation assigns its nested processes to specific paths.</literallayout></para>
  9098. </entry>
  9099. </row>
  9100. <row>
  9101. <entry>
  9102. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9103. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  9104. </imageobject></mediaobject>
  9105. </literallayout></para>
  9106. </entry>
  9107. <entry>
  9108. <para><literallayout xml:space='preserve' class='monospaced'>540</literallayout></para>
  9109. </entry>
  9110. <entry>
  9111. <para><literallayout xml:space='preserve' class='monospaced'>An accessor can have parameters assigned to it. A parameter is always assigned
  9112. to an accessor.
  9113. </literallayout></para>
  9114. </entry>
  9115. </row>
  9116. <row>
  9117. <entry>
  9118. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9119. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  9120. </imageobject></mediaobject>
  9121. </literallayout></para>
  9122. </entry>
  9123. <entry>
  9124. <para><literallayout xml:space='preserve' class='monospaced'>541</literallayout></para>
  9125. </entry>
  9126. <entry>
  9127. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9128. </entry>
  9129. </row>
  9130. <row>
  9131. <entry>
  9132. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9133. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  9134. </imageobject></mediaobject>
  9135. </literallayout></para>
  9136. </entry>
  9137. <entry>
  9138. <para><literallayout xml:space='preserve' class='monospaced'>542</literallayout></para>
  9139. </entry>
  9140. <entry>
  9141. <para><literallayout xml:space='preserve' class='monospaced'>A parameter is either an event parameter or a non-event parameter. The event
  9142. parameter subtype is required to enforce the &quot;same data rule&quot; on entry into a
  9143. state.</literallayout></para>
  9144. </entry>
  9145. </row>
  9146. </tbody>
  9147. </tgroup>
  9148. </table>
  9149. </literallayout></para>
  9150. </section>
  9151. </section>
  9152. <section>
  9153. <title>Relationship</title>
  9154. <subtitle>Package</subtitle>
  9155. <para><literallayout xml:space='preserve' class='monospaced'>The subsystem of the metamodel concerning relationships.
  9156. This diagram borrows heavily from the miUML (www.miuml.org) metamodel, because
  9157. why reinvent the open-sourced wheel? The key differences are the extra level of
  9158. abstraction due to instance representation in this metamodel, and the lack of
  9159. a generalization relationship in this metamodel, as generalizations aren&apos;&apos;t
  9160. relationships in this metamodel.<figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Relationship-PackageDiagram-figure'>
  9161. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Relationship-PackageDiagram-figure-title'>Relationship Package Diagram</title>
  9162. <mediaobject><imageobject>
  9163. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Relationship-Package Diagram.png' scalefit='1' width='100%'/>
  9164. </imageobject></mediaobject>
  9165. </figure>
  9166. </literallayout></para>
  9167. <section>
  9168. <title>Classes</title>
  9169. <subtitle></subtitle>
  9170. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  9171. <title>Classes</title>
  9172. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  9173. <thead>
  9174. <row>
  9175. <entry>
  9176. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9177. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9178. </imageobject></mediaobject>
  9179. </literallayout></para>
  9180. </entry>
  9181. <entry>
  9182. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  9183. </entry>
  9184. <entry>
  9185. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  9186. </entry>
  9187. </row>
  9188. </thead>
  9189. <tbody>
  9190. <row>
  9191. <entry>
  9192. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9193. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9194. </imageobject></mediaobject>
  9195. </literallayout></para>
  9196. </entry>
  9197. <entry>
  9198. <para><literallayout xml:space='preserve' class='monospaced'>Composition Loop</literallayout></para>
  9199. </entry>
  9200. <entry>
  9201. <para><literallayout xml:space='preserve' class='monospaced'>A composition loop is the set of relationships participating in the composition.
  9202. </literallayout></para>
  9203. </entry>
  9204. </row>
  9205. <row>
  9206. <entry>
  9207. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9208. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9209. </imageobject></mediaobject>
  9210. </literallayout></para>
  9211. </entry>
  9212. <entry>
  9213. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  9214. </entry>
  9215. <entry>
  9216. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9217. </entry>
  9218. </row>
  9219. <row>
  9220. <entry>
  9221. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9222. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9223. </imageobject></mediaobject>
  9224. </literallayout></para>
  9225. </entry>
  9226. <entry>
  9227. <para><literallayout xml:space='preserve' class='monospaced'>Loop Segment</literallayout></para>
  9228. </entry>
  9229. <entry>
  9230. <para><literallayout xml:space='preserve' class='monospaced'>A loop segment is a relationship instance participating in a composition loop.
  9231. </literallayout></para>
  9232. </entry>
  9233. </row>
  9234. <row>
  9235. <entry>
  9236. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9237. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9238. </imageobject></mediaobject>
  9239. </literallayout></para>
  9240. </entry>
  9241. <entry>
  9242. <para><literallayout xml:space='preserve' class='monospaced'>relationship_number:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9243. </entry>
  9244. <entry>
  9245. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9246. </entry>
  9247. </row>
  9248. <row>
  9249. <entry>
  9250. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9251. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9252. </imageobject></mediaobject>
  9253. </literallayout></para>
  9254. </entry>
  9255. <entry>
  9256. <para><literallayout xml:space='preserve' class='monospaced'>loop_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9257. </entry>
  9258. <entry>
  9259. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9260. </entry>
  9261. </row>
  9262. <row>
  9263. <entry>
  9264. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9265. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9266. </imageobject></mediaobject>
  9267. </literallayout></para>
  9268. </entry>
  9269. <entry>
  9270. <para><literallayout xml:space='preserve' class='monospaced'>Non-composition</literallayout></para>
  9271. </entry>
  9272. <entry>
  9273. <para><literallayout xml:space='preserve' class='monospaced'>Per [OL:MWS], the basis of the composition definition is the composition of
  9274. functions in mathematics, so a function in this usage is a relationship
  9275. instance that is used to compose the composition relationship instance.</literallayout></para>
  9276. </entry>
  9277. </row>
  9278. <row>
  9279. <entry>
  9280. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9281. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9282. </imageobject></mediaobject>
  9283. </literallayout></para>
  9284. </entry>
  9285. <entry>
  9286. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  9287. </entry>
  9288. <entry>
  9289. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9290. </entry>
  9291. </row>
  9292. <row>
  9293. <entry>
  9294. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9295. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9296. </imageobject></mediaobject>
  9297. </literallayout></para>
  9298. </entry>
  9299. <entry>
  9300. <para><literallayout xml:space='preserve' class='monospaced'>number:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9301. </entry>
  9302. <entry>
  9303. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9304. </entry>
  9305. </row>
  9306. <row>
  9307. <entry>
  9308. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9309. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9310. </imageobject></mediaobject>
  9311. </literallayout></para>
  9312. </entry>
  9313. <entry>
  9314. <para><literallayout xml:space='preserve' class='monospaced'>Perspective</literallayout></para>
  9315. </entry>
  9316. <entry>
  9317. <para><literallayout xml:space='preserve' class='monospaced'>&quot;A Perspective is a point of view from a hypothetical Instance on an
  9318. Association.&quot; [miUML]
  9319. Perspective was taken from the miUML metamodel, which doesn&apos;&apos;t have an instance
  9320. object, so in this metamodel, instance isn&apos;&apos;t hypothetical and always has a
  9321. perspective when involved in a relationship.
  9322. Further discussion on perspective can be found in the chapter 4, &quot;Reflexive
  9323. Relationships&quot;, in [OOA96]. </literallayout></para>
  9324. </entry>
  9325. </row>
  9326. <row>
  9327. <entry>
  9328. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9329. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9330. </imageobject></mediaobject>
  9331. </literallayout></para>
  9332. </entry>
  9333. <entry>
  9334. <para><literallayout xml:space='preserve' class='monospaced'>reference_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9335. </entry>
  9336. <entry>
  9337. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9338. </entry>
  9339. </row>
  9340. <row>
  9341. <entry>
  9342. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9343. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9344. </imageobject></mediaobject>
  9345. </literallayout></para>
  9346. </entry>
  9347. <entry>
  9348. <para><literallayout xml:space='preserve' class='monospaced'>conditional:boolean</literallayout></para>
  9349. </entry>
  9350. <entry>
  9351. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9352. </entry>
  9353. </row>
  9354. <row>
  9355. <entry>
  9356. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9357. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9358. </imageobject></mediaobject>
  9359. </literallayout></para>
  9360. </entry>
  9361. <entry>
  9362. <para><literallayout xml:space='preserve' class='monospaced'>phrase:string</literallayout></para>
  9363. </entry>
  9364. <entry>
  9365. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9366. </entry>
  9367. </row>
  9368. <row>
  9369. <entry>
  9370. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9371. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9372. </imageobject></mediaobject>
  9373. </literallayout></para>
  9374. </entry>
  9375. <entry>
  9376. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  9377. </entry>
  9378. <entry>
  9379. <para><literallayout xml:space='preserve' class='monospaced'>The unique identifier for the perspective.</literallayout></para>
  9380. </entry>
  9381. </row>
  9382. <row>
  9383. <entry>
  9384. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9385. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9386. </imageobject></mediaobject>
  9387. </literallayout></para>
  9388. </entry>
  9389. <entry>
  9390. <para><literallayout xml:space='preserve' class='monospaced'>Relationship</literallayout></para>
  9391. </entry>
  9392. <entry>
  9393. <para><literallayout xml:space='preserve' class='monospaced'>&quot;A relationship is an abstraction of a set of associations that hold
  9394. systematically between different kinds of things in the real world.&quot; [OL:MWS]
  9395. The relationship represents a table containing a row for every instance of the
  9396. relationship, and a column for each object participating in the relationship.
  9397. When looking at the object model, the relationship represent the empty table.
  9398. In the process model, the rows of the table are populated. The rows of the
  9399. table, then represent relationship instance values.</literallayout></para>
  9400. </entry>
  9401. </row>
  9402. <row>
  9403. <entry>
  9404. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9405. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9406. </imageobject></mediaobject>
  9407. </literallayout></para>
  9408. </entry>
  9409. <entry>
  9410. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  9411. </entry>
  9412. <entry>
  9413. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9414. </entry>
  9415. </row>
  9416. <row>
  9417. <entry>
  9418. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9419. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9420. </imageobject></mediaobject>
  9421. </literallayout></para>
  9422. </entry>
  9423. <entry>
  9424. <para><literallayout xml:space='preserve' class='monospaced'>Symmetric Reflexive</literallayout></para>
  9425. </entry>
  9426. <entry>
  9427. <para><literallayout xml:space='preserve' class='monospaced'>The symmetric reflexive relationship is described in [OOA96]. A symmetric
  9428. reflexive relationship has the same multiplicity,conditionality, and verb
  9429. phrase at both ends of the relationship, so those specifiers are squished into
  9430. one perspective.</literallayout></para>
  9431. </entry>
  9432. </row>
  9433. <row>
  9434. <entry>
  9435. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9436. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9437. </imageobject></mediaobject>
  9438. </literallayout></para>
  9439. </entry>
  9440. <entry>
  9441. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  9442. </entry>
  9443. <entry>
  9444. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9445. </entry>
  9446. </row>
  9447. <row>
  9448. <entry>
  9449. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9450. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9451. </imageobject></mediaobject>
  9452. </literallayout></para>
  9453. </entry>
  9454. <entry>
  9455. <para><literallayout xml:space='preserve' class='monospaced'>number:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9456. </entry>
  9457. <entry>
  9458. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9459. </entry>
  9460. </row>
  9461. <row>
  9462. <entry>
  9463. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9464. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9465. </imageobject></mediaobject>
  9466. </literallayout></para>
  9467. </entry>
  9468. <entry>
  9469. <para><literallayout xml:space='preserve' class='monospaced'>Traverse Direction</literallayout></para>
  9470. </entry>
  9471. <entry>
  9472. <para><literallayout xml:space='preserve' class='monospaced'>The direction set by the perspective on a relationship to use to traverse the
  9473. relationship to the linked object instance.</literallayout></para>
  9474. </entry>
  9475. </row>
  9476. <row>
  9477. <entry>
  9478. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9479. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9480. </imageobject></mediaobject>
  9481. </literallayout></para>
  9482. </entry>
  9483. <entry>
  9484. <para><literallayout xml:space='preserve' class='monospaced'>relationshipInstance_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9485. </entry>
  9486. <entry>
  9487. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9488. </entry>
  9489. </row>
  9490. <row>
  9491. <entry>
  9492. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9493. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9494. </imageobject></mediaobject>
  9495. </literallayout></para>
  9496. </entry>
  9497. <entry>
  9498. <para><literallayout xml:space='preserve' class='monospaced'>perspective_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9499. </entry>
  9500. <entry>
  9501. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9502. </entry>
  9503. </row>
  9504. <row>
  9505. <entry>
  9506. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9507. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9508. </imageobject></mediaobject>
  9509. </literallayout></para>
  9510. </entry>
  9511. <entry>
  9512. <para><literallayout xml:space='preserve' class='monospaced'>Symmetric Perspective</literallayout></para>
  9513. </entry>
  9514. <entry>
  9515. <para><literallayout xml:space='preserve' class='monospaced'>&quot;A Unary Association has only one Perspective. Given two Objects (or the same
  9516. Object linked to itself) on a Unary Association, the role played by either side
  9517. of the Link is identical. There is, consequently, just one Symmetric
  9518. Perspective.
  9519. Therefore, only one phrase name, one multiplicity and one conditionality need
  9520. be specified for a Unary Association.&quot; [miUML]
  9521. A Unary Association in this metamodel always involves just one Object. Unary
  9522. Association is the same as Symmetric Reflexive Relationship in [OOA96].</literallayout></para>
  9523. </entry>
  9524. </row>
  9525. <row>
  9526. <entry>
  9527. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9528. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9529. </imageobject></mediaobject>
  9530. </literallayout></para>
  9531. </entry>
  9532. <entry>
  9533. <para><literallayout xml:space='preserve' class='monospaced'>Rid:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9534. </entry>
  9535. <entry>
  9536. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9537. </entry>
  9538. </row>
  9539. <row>
  9540. <entry>
  9541. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9542. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9543. </imageobject></mediaobject>
  9544. </literallayout></para>
  9545. </entry>
  9546. <entry>
  9547. <para><literallayout xml:space='preserve' class='monospaced'>Rnumber:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9548. </entry>
  9549. <entry>
  9550. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9551. </entry>
  9552. </row>
  9553. <row>
  9554. <entry>
  9555. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9556. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9557. </imageobject></mediaobject>
  9558. </literallayout></para>
  9559. </entry>
  9560. <entry>
  9561. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9562. </entry>
  9563. <entry>
  9564. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9565. </entry>
  9566. </row>
  9567. <row>
  9568. <entry>
  9569. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9570. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9571. </imageobject></mediaobject>
  9572. </literallayout></para>
  9573. </entry>
  9574. <entry>
  9575. <para><literallayout xml:space='preserve' class='monospaced'>Passive Perspective</literallayout></para>
  9576. </entry>
  9577. <entry>
  9578. <para><literallayout xml:space='preserve' class='monospaced'>&quot;A Binary Association has two Perspectives, one Active and one Passive
  9579. Perspective. In fact, the two sides of an Association could have just as easily
  9580. been designated as the A side and the B side. Using the terms Active / Passive
  9581. offers the modeler a systematic way to choose the phrase to apply to each side.
  9582. For example, the phrase pair configures / is configured by readily establishes
  9583. the Perspective sides.
  9584. If it’s not clear from the phrase names which side should be active or passive,
  9585. then arbitrarily assign each role and be done with it. You can always query the
  9586. metamodel later to find out which is which. Any miUML class diagram editor
  9587. should provide easy UI access to this query (highlight the A/P sides).&quot; [miUML]</literallayout></para>
  9588. </entry>
  9589. </row>
  9590. <row>
  9591. <entry>
  9592. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9593. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9594. </imageobject></mediaobject>
  9595. </literallayout></para>
  9596. </entry>
  9597. <entry>
  9598. <para><literallayout xml:space='preserve' class='monospaced'>Rid:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9599. </entry>
  9600. <entry>
  9601. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9602. </entry>
  9603. </row>
  9604. <row>
  9605. <entry>
  9606. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9607. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9608. </imageobject></mediaobject>
  9609. </literallayout></para>
  9610. </entry>
  9611. <entry>
  9612. <para><literallayout xml:space='preserve' class='monospaced'>Rnumber:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9613. </entry>
  9614. <entry>
  9615. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9616. </entry>
  9617. </row>
  9618. <row>
  9619. <entry>
  9620. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9621. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9622. </imageobject></mediaobject>
  9623. </literallayout></para>
  9624. </entry>
  9625. <entry>
  9626. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9627. </entry>
  9628. <entry>
  9629. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9630. </entry>
  9631. </row>
  9632. <row>
  9633. <entry>
  9634. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9635. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9636. </imageobject></mediaobject>
  9637. </literallayout></para>
  9638. </entry>
  9639. <entry>
  9640. <para><literallayout xml:space='preserve' class='monospaced'>One Perspective</literallayout></para>
  9641. </entry>
  9642. <entry>
  9643. <para><literallayout xml:space='preserve' class='monospaced'>&quot;This is a Perspective with a multiplicity of one.&quot; [miUML]</literallayout></para>
  9644. </entry>
  9645. </row>
  9646. <row>
  9647. <entry>
  9648. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9649. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9650. </imageobject></mediaobject>
  9651. </literallayout></para>
  9652. </entry>
  9653. <entry>
  9654. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9655. </entry>
  9656. <entry>
  9657. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9658. </entry>
  9659. </row>
  9660. <row>
  9661. <entry>
  9662. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9663. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9664. </imageobject></mediaobject>
  9665. </literallayout></para>
  9666. </entry>
  9667. <entry>
  9668. <para><literallayout xml:space='preserve' class='monospaced'>Many Perspective</literallayout></para>
  9669. </entry>
  9670. <entry>
  9671. <para><literallayout xml:space='preserve' class='monospaced'>This is a Perspective with a multiplicity of many. [miUML]</literallayout></para>
  9672. </entry>
  9673. </row>
  9674. <row>
  9675. <entry>
  9676. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9677. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9678. </imageobject></mediaobject>
  9679. </literallayout></para>
  9680. </entry>
  9681. <entry>
  9682. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9683. </entry>
  9684. <entry>
  9685. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9686. </entry>
  9687. </row>
  9688. <row>
  9689. <entry>
  9690. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9691. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9692. </imageobject></mediaobject>
  9693. </literallayout></para>
  9694. </entry>
  9695. <entry>
  9696. <para><literallayout xml:space='preserve' class='monospaced'>Instance Relationship</literallayout></para>
  9697. </entry>
  9698. <entry>
  9699. <para><literallayout xml:space='preserve' class='monospaced'>An instance relationship describes the constraints and associations imposed on
  9700. instantiation of related objects. </literallayout></para>
  9701. </entry>
  9702. </row>
  9703. <row>
  9704. <entry>
  9705. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9706. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9707. </imageobject></mediaobject>
  9708. </literallayout></para>
  9709. </entry>
  9710. <entry>
  9711. <para><literallayout xml:space='preserve' class='monospaced'>left_object_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9712. </entry>
  9713. <entry>
  9714. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9715. </entry>
  9716. </row>
  9717. <row>
  9718. <entry>
  9719. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9720. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9721. </imageobject></mediaobject>
  9722. </literallayout></para>
  9723. </entry>
  9724. <entry>
  9725. <para><literallayout xml:space='preserve' class='monospaced'>right_object_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9726. </entry>
  9727. <entry>
  9728. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9729. </entry>
  9730. </row>
  9731. <row>
  9732. <entry>
  9733. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9734. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9735. </imageobject></mediaobject>
  9736. </literallayout></para>
  9737. </entry>
  9738. <entry>
  9739. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9740. </entry>
  9741. <entry>
  9742. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9743. </entry>
  9744. </row>
  9745. <row>
  9746. <entry>
  9747. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9748. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9749. </imageobject></mediaobject>
  9750. </literallayout></para>
  9751. </entry>
  9752. <entry>
  9753. <para><literallayout xml:space='preserve' class='monospaced'>number:integer</literallayout></para>
  9754. </entry>
  9755. <entry>
  9756. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9757. </entry>
  9758. </row>
  9759. <row>
  9760. <entry>
  9761. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9762. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9763. </imageobject></mediaobject>
  9764. </literallayout></para>
  9765. </entry>
  9766. <entry>
  9767. <para><literallayout xml:space='preserve' class='monospaced'>Composition</literallayout></para>
  9768. </entry>
  9769. <entry>
  9770. <para><literallayout xml:space='preserve' class='monospaced'>An instance of composition is the loop segment containing the relationship
  9771. instance that is the result of the composition equation.
  9772. &quot;[When a relationship is the logical consequence of other relationships,]
  9773. Such a relationship is said to be formed by composition (as in composition of
  9774. functions in mathematics. [...] A relationship formed by composition cannot be
  9775. formalized in referential attributes, since the connections between the
  9776. instances is already given by the connections between the [composing
  9777. relationships].
  9778. A relationship formed by composition is annotated on the model as [composed
  9779. relationship = 1st composing relationship + 2nd composing relationship [+ nth
  9780. composing relationship ...]].&quot; [OL:MWS]
  9781. &quot;Composed Relationships. Another special case occurs when the constraint on the
  9782. referential attribute is such that it identifies a single instance of the
  9783. associated object. [...] Composition of relationships captures the constraint
  9784. directly in data [...] However the use of composition is limited in that it
  9785. requires that the constraint always identify a single associated instance.&quot;
  9786. [OOA96]
  9787. Both definitions identify compositions as relationship combinations that loop
  9788. back to the originating instance. [miUML] calls compositions, &quot;Constrained
  9789. Loops&quot;, because the compostion equation forms a constraint on the object
  9790. instances allowed to participate.
  9791. [OOA96] also discusses collapsed referentials, but the example shows them
  9792. to be an alternative way to draw compositions on the object model. This
  9793. metamodel will only model a composition and leave the way to display it up to
  9794. the model editor.</literallayout></para>
  9795. </entry>
  9796. </row>
  9797. <row>
  9798. <entry>
  9799. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9800. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9801. </imageobject></mediaobject>
  9802. </literallayout></para>
  9803. </entry>
  9804. <entry>
  9805. <para><literallayout xml:space='preserve' class='monospaced'>loop_id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9806. </entry>
  9807. <entry>
  9808. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9809. </entry>
  9810. </row>
  9811. <row>
  9812. <entry>
  9813. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9814. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9815. </imageobject></mediaobject>
  9816. </literallayout></para>
  9817. </entry>
  9818. <entry>
  9819. <para><literallayout xml:space='preserve' class='monospaced'>number:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9820. </entry>
  9821. <entry>
  9822. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9823. </entry>
  9824. </row>
  9825. <row>
  9826. <entry>
  9827. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9828. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9829. </imageobject></mediaobject>
  9830. </literallayout></para>
  9831. </entry>
  9832. <entry>
  9833. <para><literallayout xml:space='preserve' class='monospaced'>Binary</literallayout></para>
  9834. </entry>
  9835. <entry>
  9836. <para><literallayout xml:space='preserve' class='monospaced'>&quot;The term &apos;&apos;binary’ means that there are exactly two perspectives on this type
  9837. of Association. It does NOT mean that there are two Classes. A reflexive Binary
  9838. Association may be created on a single Class such that each of the two
  9839. Perspectives is viewed from the same Class.&quot; [miUML]</literallayout></para>
  9840. </entry>
  9841. </row>
  9842. <row>
  9843. <entry>
  9844. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9845. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9846. </imageobject></mediaobject>
  9847. </literallayout></para>
  9848. </entry>
  9849. <entry>
  9850. <para><literallayout xml:space='preserve' class='monospaced'>id:unique_id</literallayout></para>
  9851. </entry>
  9852. <entry>
  9853. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9854. </entry>
  9855. </row>
  9856. <row>
  9857. <entry>
  9858. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9859. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9860. </imageobject></mediaobject>
  9861. </literallayout></para>
  9862. </entry>
  9863. <entry>
  9864. <para><literallayout xml:space='preserve' class='monospaced'>number:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9865. </entry>
  9866. <entry>
  9867. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9868. </entry>
  9869. </row>
  9870. <row>
  9871. <entry>
  9872. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9873. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9874. </imageobject></mediaobject>
  9875. </literallayout></para>
  9876. </entry>
  9877. <entry>
  9878. <para><literallayout xml:space='preserve' class='monospaced'>Asymmetric Perspective</literallayout></para>
  9879. </entry>
  9880. <entry>
  9881. <para><literallayout xml:space='preserve' class='monospaced'>&quot;Each side of a Binary Association has a distinct Perspective, either Active or
  9882. Passive. Since each side is from a different point of view, it establishes an
  9883. Asymmetric Perspective.&quot; [miUML]</literallayout></para>
  9884. </entry>
  9885. </row>
  9886. <row>
  9887. <entry>
  9888. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9889. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9890. </imageobject></mediaobject>
  9891. </literallayout></para>
  9892. </entry>
  9893. <entry>
  9894. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9895. </entry>
  9896. <entry>
  9897. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9898. </entry>
  9899. </row>
  9900. <row>
  9901. <entry>
  9902. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9903. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9904. </imageobject></mediaobject>
  9905. </literallayout></para>
  9906. </entry>
  9907. <entry>
  9908. <para><literallayout xml:space='preserve' class='monospaced'>Associative Relationship</literallayout></para>
  9909. </entry>
  9910. <entry>
  9911. <para><literallayout xml:space='preserve' class='monospaced'>An associative relationship requires further abstraction by an object. The set
  9912. defined by the object allows instances of relationships to have further
  9913. relationships, data properties, and dynamic processing.
  9914. An associative relationship relates the associative object to a
  9915. relationship between object instances.</literallayout></para>
  9916. </entry>
  9917. </row>
  9918. <row>
  9919. <entry>
  9920. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9921. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9922. </imageobject></mediaobject>
  9923. </literallayout></para>
  9924. </entry>
  9925. <entry>
  9926. <para><literallayout xml:space='preserve' class='monospaced'>object_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9927. </entry>
  9928. <entry>
  9929. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9930. </entry>
  9931. </row>
  9932. <row>
  9933. <entry>
  9934. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9935. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9936. </imageobject></mediaobject>
  9937. </literallayout></para>
  9938. </entry>
  9939. <entry>
  9940. <para><literallayout xml:space='preserve' class='monospaced'>irl_number:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9941. </entry>
  9942. <entry>
  9943. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9944. </entry>
  9945. </row>
  9946. <row>
  9947. <entry>
  9948. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9949. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9950. </imageobject></mediaobject>
  9951. </literallayout></para>
  9952. </entry>
  9953. <entry>
  9954. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9955. </entry>
  9956. <entry>
  9957. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9958. </entry>
  9959. </row>
  9960. <row>
  9961. <entry>
  9962. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9963. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  9964. </imageobject></mediaobject>
  9965. </literallayout></para>
  9966. </entry>
  9967. <entry>
  9968. <para><literallayout xml:space='preserve' class='monospaced'>Active Perspective</literallayout></para>
  9969. </entry>
  9970. <entry>
  9971. <para><literallayout xml:space='preserve' class='monospaced'>&quot;A Binary Association has two Perspectives, one Active and one Passive
  9972. Perspective. In fact, the two sides of an Association could have just as easily
  9973. been designated as the A side and the B side. Using the terms Active / Passive
  9974. offers the modeler a systematic way to choose the phrase to apply to each side.
  9975. For example, the phrase pair configures / is configured by readily establishes
  9976. the Perspective sides.
  9977. If it’s not clear from the phrase names which side should be active or passive,
  9978. then arbitrarily assign each role and be done with it. You can always query the
  9979. metamodel later to find out which is which. Any miUML class diagram editor
  9980. should provide easy UI access to this query (highlight the A/P sides).&quot; [miUML]</literallayout></para>
  9981. </entry>
  9982. </row>
  9983. <row>
  9984. <entry>
  9985. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  9986. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  9987. </imageobject></mediaobject>
  9988. </literallayout></para>
  9989. </entry>
  9990. <entry>
  9991. <para><literallayout xml:space='preserve' class='monospaced'>Rid:same_as&lt;Base_Attribute&gt;</literallayout></para>
  9992. </entry>
  9993. <entry>
  9994. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  9995. </entry>
  9996. </row>
  9997. <row>
  9998. <entry>
  9999. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10000. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10001. </imageobject></mediaobject>
  10002. </literallayout></para>
  10003. </entry>
  10004. <entry>
  10005. <para><literallayout xml:space='preserve' class='monospaced'>Rnumber:same_as&lt;Base_Attribute&gt;</literallayout></para>
  10006. </entry>
  10007. <entry>
  10008. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10009. </entry>
  10010. </row>
  10011. <row>
  10012. <entry>
  10013. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10014. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10015. </imageobject></mediaobject>
  10016. </literallayout></para>
  10017. </entry>
  10018. <entry>
  10019. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  10020. </entry>
  10021. <entry>
  10022. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10023. </entry>
  10024. </row>
  10025. </tbody>
  10026. </tgroup>
  10027. </table>
  10028. </literallayout></para>
  10029. <section>
  10030. <title>Class Activities</title>
  10031. <subtitle></subtitle>
  10032. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  10033. <section>
  10034. <title>Class Operations</title>
  10035. <subtitle></subtitle>
  10036. <section>
  10037. <title>Relationship:Instance Relationship: createReferentials</title>
  10038. <subtitle></subtitle>
  10039. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10040. <para><programlisting>select any sub from instances of SUB where selected.name == param.objectName;
  10041. select many idps related by sub-&gt;OBJ[R107]-&gt;OA[R129]-&gt;ATR[R124]-&gt;IDP[R102];
  10042. if (empty idps)
  10043. select many idps related by sub-&gt;PRP[R107]-&gt;SPA[R130]-&gt;ATR[R124]-&gt;IDP[R102];
  10044. end if;
  10045. for each idp in idps
  10046. select one atr related by idp-&gt;ATR[R102];
  10047. create object instance refatr of ATR;
  10048. refatr.name = atr.name + &quot;(R&quot; + TC::intToString( i:self.number ) + &quot;)&quot;;
  10049. create object instance ref of REF;
  10050. relate ref to refatr across R103;
  10051. relate idp to ref across R137;
  10052. select one ncm related by self-&gt;NCM[R213];
  10053. relate ref to ncm across R128;
  10054. end for;
  10055. </programlisting></para>
  10056. </section>
  10057. </section>
  10058. </section>
  10059. </section>
  10060. <section>
  10061. <title>Associations</title>
  10062. <subtitle>Associations</subtitle>
  10063. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  10064. <title>Relationship</title>
  10065. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  10066. <thead>
  10067. <row>
  10068. <entry>
  10069. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10070. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10071. </imageobject></mediaobject>
  10072. </literallayout></para>
  10073. </entry>
  10074. <entry>
  10075. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  10076. </entry>
  10077. <entry>
  10078. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  10079. </entry>
  10080. </row>
  10081. </thead>
  10082. <tbody>
  10083. <row>
  10084. <entry>
  10085. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10086. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10087. </imageobject></mediaobject>
  10088. </literallayout></para>
  10089. </entry>
  10090. <entry>
  10091. <para><literallayout xml:space='preserve' class='monospaced'>200</literallayout></para>
  10092. </entry>
  10093. <entry>
  10094. <para><literallayout xml:space='preserve' class='monospaced'>Two types of relationships exist in a Shlaer-Mellor model: instance-based and
  10095. associative.</literallayout></para>
  10096. </entry>
  10097. </row>
  10098. <row>
  10099. <entry>
  10100. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10101. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10102. </imageobject></mediaobject>
  10103. </literallayout></para>
  10104. </entry>
  10105. <entry>
  10106. <para><literallayout xml:space='preserve' class='monospaced'>201</literallayout></para>
  10107. </entry>
  10108. <entry>
  10109. <para><literallayout xml:space='preserve' class='monospaced'>The two types of instance-based relationships are unary and binary. The
  10110. designation of unary and binary refer to the number of perspectives of the
  10111. instances involved, and not the number of instances.</literallayout></para>
  10112. </entry>
  10113. </row>
  10114. <row>
  10115. <entry>
  10116. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10117. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10118. </imageobject></mediaobject>
  10119. </literallayout></para>
  10120. </entry>
  10121. <entry>
  10122. <para><literallayout xml:space='preserve' class='monospaced'>204</literallayout></para>
  10123. </entry>
  10124. <entry>
  10125. <para><literallayout xml:space='preserve' class='monospaced'>A perspective is an asymmetric perspective or symmetric perspective.</literallayout></para>
  10126. </entry>
  10127. </row>
  10128. <row>
  10129. <entry>
  10130. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10131. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10132. </imageobject></mediaobject>
  10133. </literallayout></para>
  10134. </entry>
  10135. <entry>
  10136. <para><literallayout xml:space='preserve' class='monospaced'>205</literallayout></para>
  10137. </entry>
  10138. <entry>
  10139. <para><literallayout xml:space='preserve' class='monospaced'>An assymetric perspective can be viewed in active or passive tense.</literallayout></para>
  10140. </entry>
  10141. </row>
  10142. <row>
  10143. <entry>
  10144. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10145. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10146. </imageobject></mediaobject>
  10147. </literallayout></para>
  10148. </entry>
  10149. <entry>
  10150. <para><literallayout xml:space='preserve' class='monospaced'>206</literallayout></para>
  10151. </entry>
  10152. <entry>
  10153. <para><literallayout xml:space='preserve' class='monospaced'>The symmetric perspective is the view both from and on the unary relationship.</literallayout></para>
  10154. </entry>
  10155. </row>
  10156. <row>
  10157. <entry>
  10158. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10159. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10160. </imageobject></mediaobject>
  10161. </literallayout></para>
  10162. </entry>
  10163. <entry>
  10164. <para><literallayout xml:space='preserve' class='monospaced'>207</literallayout></para>
  10165. </entry>
  10166. <entry>
  10167. <para><literallayout xml:space='preserve' class='monospaced'>The active perspective is viewed from one side of the binary relationship.</literallayout></para>
  10168. </entry>
  10169. </row>
  10170. <row>
  10171. <entry>
  10172. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10173. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10174. </imageobject></mediaobject>
  10175. </literallayout></para>
  10176. </entry>
  10177. <entry>
  10178. <para><literallayout xml:space='preserve' class='monospaced'>208</literallayout></para>
  10179. </entry>
  10180. <entry>
  10181. <para><literallayout xml:space='preserve' class='monospaced'>The passive perspective is viewed from one side of the binary relationship.
  10182. </literallayout></para>
  10183. </entry>
  10184. </row>
  10185. <row>
  10186. <entry>
  10187. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10188. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10189. </imageobject></mediaobject>
  10190. </literallayout></para>
  10191. </entry>
  10192. <entry>
  10193. <para><literallayout xml:space='preserve' class='monospaced'>210</literallayout></para>
  10194. </entry>
  10195. <entry>
  10196. <para><literallayout xml:space='preserve' class='monospaced'>&quot;The direction of reference of a Referential Attribute is determined by the
  10197. availability of a One Perspective. Conditionality is less significant in this
  10198. regard. So to capture the basic reference rule that ‘it is always possible to
  10199. refer to a One Perspective’ it is necessary to abstract the One / Many
  10200. specialization. See the Formalization Subsystem to see how it is used.
  10201. Regardless of conditionality, every Perspective is either One or Many (1, M)
  10202. or, in UML terminology, ( 0..1, 1 or 0..*, 1..* ).&quot; [miUML]</literallayout></para>
  10203. </entry>
  10204. </row>
  10205. <row>
  10206. <entry>
  10207. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10208. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10209. </imageobject></mediaobject>
  10210. </literallayout></para>
  10211. </entry>
  10212. <entry>
  10213. <para><literallayout xml:space='preserve' class='monospaced'>212</literallayout></para>
  10214. </entry>
  10215. <entry>
  10216. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10217. </entry>
  10218. </row>
  10219. <row>
  10220. <entry>
  10221. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10222. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10223. </imageobject></mediaobject>
  10224. </literallayout></para>
  10225. </entry>
  10226. <entry>
  10227. <para><literallayout xml:space='preserve' class='monospaced'>213</literallayout></para>
  10228. </entry>
  10229. <entry>
  10230. <para><literallayout xml:space='preserve' class='monospaced'>An instance relationship can be a non-composition (formalized by referential
  10231. attributes) or a composition (formalized by a relationship loop) instance
  10232. relationship.</literallayout></para>
  10233. </entry>
  10234. </row>
  10235. <row>
  10236. <entry>
  10237. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10238. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10239. </imageobject></mediaobject>
  10240. </literallayout></para>
  10241. </entry>
  10242. <entry>
  10243. <para><literallayout xml:space='preserve' class='monospaced'>214</literallayout></para>
  10244. </entry>
  10245. <entry>
  10246. <para><literallayout xml:space='preserve' class='monospaced'>A composition is bounded by a composition loop. The composition loop bounds
  10247. the composition.</literallayout></para>
  10248. </entry>
  10249. </row>
  10250. <row>
  10251. <entry>
  10252. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10253. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10254. </imageobject></mediaobject>
  10255. </literallayout></para>
  10256. </entry>
  10257. <entry>
  10258. <para><literallayout xml:space='preserve' class='monospaced'>215</literallayout></para>
  10259. </entry>
  10260. <entry>
  10261. <para><literallayout xml:space='preserve' class='monospaced'>An instance relationship can belong to one or more composition loops. The
  10262. composition loop requires a contiguous, closed path from many instance
  10263. relationships.</literallayout></para>
  10264. </entry>
  10265. </row>
  10266. <row>
  10267. <entry>
  10268. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10269. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10270. </imageobject></mediaobject>
  10271. </literallayout></para>
  10272. </entry>
  10273. <entry>
  10274. <para><literallayout xml:space='preserve' class='monospaced'>202</literallayout></para>
  10275. </entry>
  10276. <entry>
  10277. <para><literallayout xml:space='preserve' class='monospaced'>An associative relationship is always abstracted by an object or subset of an
  10278. object. When an object is used to abstract an associative relationship, it&apos;&apos;s
  10279. life span is the same as the relationship&apos;&apos;s life span.</literallayout></para>
  10280. </entry>
  10281. </row>
  10282. <row>
  10283. <entry>
  10284. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10285. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  10286. </imageobject></mediaobject>
  10287. </literallayout></para>
  10288. </entry>
  10289. <entry>
  10290. <para><literallayout xml:space='preserve' class='monospaced'>216</literallayout></para>
  10291. </entry>
  10292. <entry>
  10293. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10294. </entry>
  10295. </row>
  10296. </tbody>
  10297. </tgroup>
  10298. </table>
  10299. </literallayout></para>
  10300. </section>
  10301. </section>
  10302. <section>
  10303. <title>Type</title>
  10304. <subtitle>Package</subtitle>
  10305. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-PackageDiagram-figure'>
  10306. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-PackageDiagram-figure-title'>Type Package Diagram</title>
  10307. <mediaobject><imageobject>
  10308. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Package Diagram.png' scalefit='1' width='100%'/>
  10309. </imageobject></mediaobject>
  10310. </figure>
  10311. </literallayout></para>
  10312. <section>
  10313. <title>Classes</title>
  10314. <subtitle></subtitle>
  10315. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  10316. <title>Classes</title>
  10317. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  10318. <thead>
  10319. <row>
  10320. <entry>
  10321. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10322. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  10323. </imageobject></mediaobject>
  10324. </literallayout></para>
  10325. </entry>
  10326. <entry>
  10327. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  10328. </entry>
  10329. <entry>
  10330. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  10331. </entry>
  10332. </row>
  10333. </thead>
  10334. <tbody>
  10335. <row>
  10336. <entry>
  10337. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10338. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  10339. </imageobject></mediaobject>
  10340. </literallayout></para>
  10341. </entry>
  10342. <entry>
  10343. <para><literallayout xml:space='preserve' class='monospaced'>Enumeration Value</literallayout></para>
  10344. </entry>
  10345. <entry>
  10346. <para><literallayout xml:space='preserve' class='monospaced'>An enumeration value is one of the enumerators that compose an enumeration. The
  10347. uses of enumeration values are constrained by the operations supported by the
  10348. enumeration type.
  10349. An enumeration value can never be identified by just the value name; it
  10350. must always use the enumeration definition name as well. e.g., def::value</literallayout></para>
  10351. </entry>
  10352. </row>
  10353. <row>
  10354. <entry>
  10355. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10356. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10357. </imageobject></mediaobject>
  10358. </literallayout></para>
  10359. </entry>
  10360. <entry>
  10361. <para><literallayout xml:space='preserve' class='monospaced'>enum_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  10362. </entry>
  10363. <entry>
  10364. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10365. </entry>
  10366. </row>
  10367. <row>
  10368. <entry>
  10369. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10370. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10371. </imageobject></mediaobject>
  10372. </literallayout></para>
  10373. </entry>
  10374. <entry>
  10375. <para><literallayout xml:space='preserve' class='monospaced'>name:string</literallayout></para>
  10376. </entry>
  10377. <entry>
  10378. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10379. </entry>
  10380. </row>
  10381. <row>
  10382. <entry>
  10383. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10384. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10385. </imageobject></mediaobject>
  10386. </literallayout></para>
  10387. </entry>
  10388. <entry>
  10389. <para><literallayout xml:space='preserve' class='monospaced'>id:same_as&lt;Base_Attribute&gt;</literallayout></para>
  10390. </entry>
  10391. <entry>
  10392. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10393. </entry>
  10394. </row>
  10395. <row>
  10396. <entry>
  10397. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10398. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  10399. </imageobject></mediaobject>
  10400. </literallayout></para>
  10401. </entry>
  10402. <entry>
  10403. <para><literallayout xml:space='preserve' class='monospaced'>Operator</literallayout></para>
  10404. </entry>
  10405. <entry>
  10406. <para><literallayout xml:space='preserve' class='monospaced'>An Operator represents a function that may be defined for a Type.
  10407. Not all Operators will be visible in implementation. e.g., an action
  10408. language may choose to allow automatic conversion from one type to another,
  10409. 5 + &quot;5&quot; = 10. In such a case, a string to numeric Operator must be defined as
  10410. part of the instantiation of the metamodel.</literallayout></para>
  10411. </entry>
  10412. </row>
  10413. <row>
  10414. <entry>
  10415. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10416. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10417. </imageobject></mediaobject>
  10418. </literallayout></para>
  10419. </entry>
  10420. <entry>
  10421. <para><literallayout xml:space='preserve' class='monospaced'>symbol:string</literallayout></para>
  10422. </entry>
  10423. <entry>
  10424. <para><literallayout xml:space='preserve' class='monospaced'>&quot;A short, often single character, name to represent an Operator in a written
  10425. expression. Common examples are + , - , * , ++ , next , etc.&quot; [miUML]</literallayout></para>
  10426. </entry>
  10427. </row>
  10428. <row>
  10429. <entry>
  10430. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10431. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10432. </imageobject></mediaobject>
  10433. </literallayout></para>
  10434. </entry>
  10435. <entry>
  10436. <para><literallayout xml:space='preserve' class='monospaced'>name:string</literallayout></para>
  10437. </entry>
  10438. <entry>
  10439. <para><literallayout xml:space='preserve' class='monospaced'>&quot;A descriptive name applicable to multiple Types such as add, multiply,
  10440. increment, etc.&quot; [miUML]</literallayout></para>
  10441. </entry>
  10442. </row>
  10443. <row>
  10444. <entry>
  10445. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10446. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  10447. </imageobject></mediaobject>
  10448. </literallayout></para>
  10449. </entry>
  10450. <entry>
  10451. <para><literallayout xml:space='preserve' class='monospaced'>Type</literallayout></para>
  10452. </entry>
  10453. <entry>
  10454. <para><literallayout xml:space='preserve' class='monospaced'>&quot;A Type is a named finite or infinite set of values.&quot; [miUML]
  10455. &quot;RULE: All data elements that appear in the OOA models of a domain must be
  10456. typed.&quot; [OOAData]</literallayout></para>
  10457. </entry>
  10458. </row>
  10459. <row>
  10460. <entry>
  10461. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10462. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10463. </imageobject></mediaobject>
  10464. </literallayout></para>
  10465. </entry>
  10466. <entry>
  10467. <para><literallayout xml:space='preserve' class='monospaced'>name:string</literallayout></para>
  10468. </entry>
  10469. <entry>
  10470. <para><literallayout xml:space='preserve' class='monospaced'>Types are uniquely identified by a string designation. The type name is unique
  10471. within its context.</literallayout></para>
  10472. </entry>
  10473. </row>
  10474. <row>
  10475. <entry>
  10476. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10477. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  10478. </imageobject></mediaobject>
  10479. </literallayout></para>
  10480. </entry>
  10481. <entry>
  10482. <para><literallayout xml:space='preserve' class='monospaced'>Typed Operator</literallayout></para>
  10483. </entry>
  10484. <entry>
  10485. <para><literallayout xml:space='preserve' class='monospaced'>&quot;An Operator is polymorphic in that it may be applied to multiple Types.&quot;
  10486. [miUML]
  10487. The Typed Operator is the mapping of a Type to an Operator. The context of
  10488. the result of the operation is the same as the context of the Typed Operator
  10489. chosen. This implies precedence must be built into the process model, if auto-
  10490. matic type conversion is desired, because the result of e.g., 5 + &quot;5&quot; is
  10491. different if &apos;&apos;+&apos;&apos; is a string operator vs a numeric operator. (This also
  10492. requires that the corresponding conversion operator is defined.)</literallayout></para>
  10493. </entry>
  10494. </row>
  10495. <row>
  10496. <entry>
  10497. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10498. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10499. </imageobject></mediaobject>
  10500. </literallayout></para>
  10501. </entry>
  10502. <entry>
  10503. <para><literallayout xml:space='preserve' class='monospaced'>result_type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  10504. </entry>
  10505. <entry>
  10506. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10507. </entry>
  10508. </row>
  10509. <row>
  10510. <entry>
  10511. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10512. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10513. </imageobject></mediaobject>
  10514. </literallayout></para>
  10515. </entry>
  10516. <entry>
  10517. <para><literallayout xml:space='preserve' class='monospaced'>definition:boolean</literallayout></para>
  10518. </entry>
  10519. <entry>
  10520. <para><literallayout xml:space='preserve' class='monospaced'>&quot;This is a precise specification of the processing required to transform the
  10521. Operands to produce either a return value or an update result, depending on the
  10522. Typed Operator specialization.&quot; [miUML]
  10523. NOTE: miUML has this typed as &quot;psuedocode&quot;, because of not yet having an
  10524. &quot;Operator definition language&quot;. In BridgePoint, it&apos;&apos;s declared as a derived
  10525. type, so OAL can be used to define the operator.</literallayout></para>
  10526. </entry>
  10527. </row>
  10528. <row>
  10529. <entry>
  10530. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10531. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10532. </imageobject></mediaobject>
  10533. </literallayout></para>
  10534. </entry>
  10535. <entry>
  10536. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  10537. </entry>
  10538. <entry>
  10539. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10540. </entry>
  10541. </row>
  10542. <row>
  10543. <entry>
  10544. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10545. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10546. </imageobject></mediaobject>
  10547. </literallayout></para>
  10548. </entry>
  10549. <entry>
  10550. <para><literallayout xml:space='preserve' class='monospaced'>operation_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  10551. </entry>
  10552. <entry>
  10553. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10554. </entry>
  10555. </row>
  10556. <row>
  10557. <entry>
  10558. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10559. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  10560. </imageobject></mediaobject>
  10561. </literallayout></para>
  10562. </entry>
  10563. <entry>
  10564. <para><literallayout xml:space='preserve' class='monospaced'>Time</literallayout></para>
  10565. </entry>
  10566. <entry>
  10567. <para><literallayout xml:space='preserve' class='monospaced'>&quot;To define a data type that represents calendar-clock time, write:
  10568. data type &lt;data type name&gt; is time
  10569. range is from &lt;year-mon-day&gt; (&lt;hour:min:sec &gt;) to &lt;year-mon-day&gt;
  10570. (&lt;hour:min:sec &gt;)
  10571. precision is &lt;smallest discriminated value&gt; [ year | month | day |
  10572. hour | minute | second | millisec | microsec ]
  10573. The operations permitted using data types based on time and duration are:
  10574. time := time ± duration
  10575. duration := duration ± duration
  10576. duration := duration * numeric
  10577. duration := duration / numeric
  10578. duration := time - time
  10579. as well as the standard comparisons of &lt; (read as &quot;before&quot;), &gt;, ≤ , and ≥ .
  10580. Each such comparison yields a data element of base type boolean.
  10581. Comparisons are defined only between elements of the same base type.&quot;
  10582. [OOAData]
  10583. </literallayout></para>
  10584. </entry>
  10585. </row>
  10586. <row>
  10587. <entry>
  10588. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10589. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10590. </imageobject></mediaobject>
  10591. </literallayout></para>
  10592. </entry>
  10593. <entry>
  10594. <para><literallayout xml:space='preserve' class='monospaced'>current_state:state&lt;State_Model&gt;</literallayout></para>
  10595. </entry>
  10596. <entry>
  10597. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10598. </entry>
  10599. </row>
  10600. <row>
  10601. <entry>
  10602. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10603. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10604. </imageobject></mediaobject>
  10605. </literallayout></para>
  10606. </entry>
  10607. <entry>
  10608. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  10609. </entry>
  10610. <entry>
  10611. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10612. </entry>
  10613. </row>
  10614. <row>
  10615. <entry>
  10616. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10617. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  10618. </imageobject></mediaobject>
  10619. </literallayout></para>
  10620. </entry>
  10621. <entry>
  10622. <para><literallayout xml:space='preserve' class='monospaced'>Symbolic</literallayout></para>
  10623. </entry>
  10624. <entry>
  10625. <para><literallayout xml:space='preserve' class='monospaced'>&quot;For data elements that have the nature of names, we need to be able to define
  10626. symbolic data types:
  10627. data type &lt;data type name&gt; is symbolic
  10628. length is (from &lt;minimum number of characters&gt; to )
  10629. &lt;maximum number of characters&gt;
  10630. (default value is &lt;character string&gt;)
  10631. The analyst specifies the maximum and minimum number of characters required
  10632. based on his or her knowledge of the longest and shortest plausible values.
  10633. Hence:
  10634. data type gas name is symbolic
  10635. length is from 2 to 15
  10636. default value is Helium
  10637. The operations defined for symbolic data types are:
  10638. - concatenate (represented as +); the result of concatenation is a data
  10639. element of base type symbolic.
  10640. - comparison for identical value, represented as = (identical in value) and
  10641. != (not identical in value). The result of such a comparison yields a
  10642. data element of base type boolean.
  10643. - comparison for position in a collating sequence[5], represented as &lt;
  10644. (before), &gt; (after), &lt;= (before or identical), and &gt;= (identical or
  10645. after). The result of such a comparison yields a data element of base
  10646. type boolean.
  10647. [5] A collating sequence prescribes the order of all the characters in a
  10648. specified character set, typically including letters, numbers, and punctuation
  10649. marks. Collating sequences are defined in the implementation environment, and
  10650. may vary from country to country depending on the concept of &quot;alphabetical
  10651. order&quot; and the repertoire of characters or symbols used in the natural
  10652. language.&quot; [OOAData] </literallayout></para>
  10653. </entry>
  10654. </row>
  10655. <row>
  10656. <entry>
  10657. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10658. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10659. </imageobject></mediaobject>
  10660. </literallayout></para>
  10661. </entry>
  10662. <entry>
  10663. <para><literallayout xml:space='preserve' class='monospaced'>current_state:state&lt;State_Model&gt;</literallayout></para>
  10664. </entry>
  10665. <entry>
  10666. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10667. </entry>
  10668. </row>
  10669. <row>
  10670. <entry>
  10671. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10672. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10673. </imageobject></mediaobject>
  10674. </literallayout></para>
  10675. </entry>
  10676. <entry>
  10677. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  10678. </entry>
  10679. <entry>
  10680. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10681. </entry>
  10682. </row>
  10683. <row>
  10684. <entry>
  10685. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10686. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  10687. </imageobject></mediaobject>
  10688. </literallayout></para>
  10689. </entry>
  10690. <entry>
  10691. <para><literallayout xml:space='preserve' class='monospaced'>Relationship Instance Reference</literallayout></para>
  10692. </entry>
  10693. <entry>
  10694. <para><literallayout xml:space='preserve' class='monospaced'>A relationship instance reference is the type to which all relationship
  10695. instances must conform.
  10696. This is a core type that says relationship instances have a common set of
  10697. operations defined for usage.</literallayout></para>
  10698. </entry>
  10699. </row>
  10700. <row>
  10701. <entry>
  10702. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10703. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10704. </imageobject></mediaobject>
  10705. </literallayout></para>
  10706. </entry>
  10707. <entry>
  10708. <para><literallayout xml:space='preserve' class='monospaced'>current_state:state&lt;State_Model&gt;</literallayout></para>
  10709. </entry>
  10710. <entry>
  10711. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10712. </entry>
  10713. </row>
  10714. <row>
  10715. <entry>
  10716. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10717. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10718. </imageobject></mediaobject>
  10719. </literallayout></para>
  10720. </entry>
  10721. <entry>
  10722. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  10723. </entry>
  10724. <entry>
  10725. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10726. </entry>
  10727. </row>
  10728. <row>
  10729. <entry>
  10730. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10731. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  10732. </imageobject></mediaobject>
  10733. </literallayout></para>
  10734. </entry>
  10735. <entry>
  10736. <para><literallayout xml:space='preserve' class='monospaced'>Ordinal</literallayout></para>
  10737. </entry>
  10738. <entry>
  10739. <para><literallayout xml:space='preserve' class='monospaced'>The ordinal core type automatically populated in the metamodel is specified as
  10740. ascending and based upon identifier, because the only known operation is for
  10741. traversing a collection of object instances.
  10742. To support other ordinal uses in a process model, the user must create a
  10743. user-defined ordinal type.
  10744. The below gives more detail on ordinals:
  10745. &quot;Ordinal data types are used to express order, such as first, second, and so on.
  10746. However, the subject of ordering is a lot more interesting that just this
  10747. common example; hence the following digression.
  10748. An ordering is always applied to a set of elements. The set can be finite or
  10749. infinite. There are two types of orderings to consider. The first is the most
  10750. familiar; it is a complete ordering. What this means is that you can express
  10751. the concept of &quot;before&quot; (represented as &lt;) between any two members of the set.
  10752. Hence, 7 is before 26 ( 7 &lt; 26 ). A complete ordering has the property of
  10753. transitivity:
  10754. If A is before B, and B is before C, then A is before C.
  10755. A practical example would be the ordering of the cars that make up a freight
  10756. train. Assume we define a first car. Then we could pick any two cars and easily
  10757. determine which one was before the other.
  10758. Far more interesting are the partial orderings. Consider this sketch of a
  10759. partial ordering.
  10760. A -&gt; B -&gt; C -&gt; D
  10761. + -&gt; E -&gt; F -&gt; G
  10762. Using the obvious interpretation, we can say that A &lt; B (A is before B), C &lt; D,
  10763. C &lt; E, and E &lt; F. But we cannot say anything about the relationship between D
  10764. and F: They are non-comparable.
  10765. Examples of structures that are partially ordered include PERT charts, trees
  10766. used for any purpose, interlock chains, the connectivity of an electric grid,
  10767. and the like. All of these can be modeled in complete detail using standard OOA
  10768. relationships; for examples see [Starr96] and Chapter 4 of Shlaer-Mellor
  10769. Method: The OOA96 Report. Note, however, that when modeling such a structure,
  10770. one frequently finds it necessary to employ quite a number of ancillary objects
  10771. (such as root node, parent node, child node, and leaf node) together with a
  10772. significant set of relationships  all required to express a generally
  10773. well-known concept. While this can be quite satisfying when one is in a purist
  10774. frame of mind, the pragmatist points out that such constructions are often of
  10775. limited value, obscuring, as they can, the true purpose of the model. This
  10776. becomes particularly pertinent when constructing models of an architecture,
  10777. where ordering is a particularly prominent theme (see The Timepoint
  10778. Architecture chapter). Hence we have defined the ordinal base data type,
  10779. leaving it to the judgment of the analyst as for when to use an ordinal
  10780. attribute as opposed to using more fully expressive OOA objects and
  10781. relationships.
  10782. Returning now to the main theme, an ordinal data type is defined by:
  10783. data type &lt;data type name&gt; is ordinal
  10784. The operations permitted for ordinal data types are
  10785. - the comparisons = and != (identical and not identical in value)
  10786. - the comparisons &lt; (read as &quot;before&quot;), &gt;, &lt;= , and &gt;= . Each such
  10787. comparison yields a data element of base type boolean if the ordering
  10788. is complete, and of base type extended boolean if the ordering is
  10789. partial.&quot; [OOAData]
  10790. NOTE: This metamodel doesn&apos;&apos;t support an extended boolean type, so a
  10791. comp</literallayout></para>
  10792. </entry>
  10793. </row>
  10794. <row>
  10795. <entry>
  10796. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10797. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10798. </imageobject></mediaobject>
  10799. </literallayout></para>
  10800. </entry>
  10801. <entry>
  10802. <para><literallayout xml:space='preserve' class='monospaced'>current_state:state&lt;State_Model&gt;</literallayout></para>
  10803. </entry>
  10804. <entry>
  10805. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10806. </entry>
  10807. </row>
  10808. <row>
  10809. <entry>
  10810. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10811. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10812. </imageobject></mediaobject>
  10813. </literallayout></para>
  10814. </entry>
  10815. <entry>
  10816. <para><literallayout xml:space='preserve' class='monospaced'>direction:integer</literallayout></para>
  10817. </entry>
  10818. <entry>
  10819. <para><literallayout xml:space='preserve' class='monospaced'>Direction of ordering is either ascending or descending. The direction can be
  10820. dynamically changed in the process models. A loop operation on the ordinal will
  10821. follow the set direction.
  10822. </literallayout></para>
  10823. </entry>
  10824. </row>
  10825. <row>
  10826. <entry>
  10827. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10828. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10829. </imageobject></mediaobject>
  10830. </literallayout></para>
  10831. </entry>
  10832. <entry>
  10833. <para><literallayout xml:space='preserve' class='monospaced'>order_specifier:string</literallayout></para>
  10834. </entry>
  10835. <entry>
  10836. <para><literallayout xml:space='preserve' class='monospaced'>The order specifier attribute determines the basis of the ordering. The order
  10837. specifier can be an object attribute, if the ordinal is composed of objects, a
  10838. meta-attribute, e.g., identifier, name, etc., common ordering based upon data
  10839. type, i.e., numeric +/- 1, alphabetical for strings, etc., or physical
  10840. placement. (A TBD symbol or keytword will be defined to indicate placement.)
  10841. Placement is to be considered ordered by a means external to the data.
  10842. e.g., an array. A placement ordinal will have means of inserting, moving, and
  10843. removing ordered elements. Placement ordinals will also have associated marks,
  10844. so placement can be based on platform considerations. e.g., memory location,
  10845. timestamp, etc.
  10846. All ordinals will have the ability to add and remove elements.
  10847. The order specifier can be dynamically changed in the process models. </literallayout></para>
  10848. </entry>
  10849. </row>
  10850. <row>
  10851. <entry>
  10852. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10853. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10854. </imageobject></mediaobject>
  10855. </literallayout></para>
  10856. </entry>
  10857. <entry>
  10858. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  10859. </entry>
  10860. <entry>
  10861. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10862. </entry>
  10863. </row>
  10864. <row>
  10865. <entry>
  10866. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10867. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  10868. </imageobject></mediaobject>
  10869. </literallayout></para>
  10870. </entry>
  10871. <entry>
  10872. <para><literallayout xml:space='preserve' class='monospaced'>Numeric</literallayout></para>
  10873. </entry>
  10874. <entry>
  10875. <para><literallayout xml:space='preserve' class='monospaced'>Numeric is as described in [OOAData] below. NOTE: The description isn&apos;&apos;t a model.
  10876. Some seeming attributes of numeric in the description might be modeled as
  10877. their own objects. e.g., &quot;units&quot; aren&apos;&apos;t always used, so cannot be an attribute.
  10878. &quot;If a data type is numeric in nature, write:
  10879. data type &lt;data type name&gt; is numeric (base &lt;N&gt;)
  10880. range is from &lt;low limit&gt; to &lt;high limit&gt;
  10881. units are &lt;unit symbol&gt;
  10882. precision is &lt;smallest discriminant&gt;
  10883. ( default value is &lt;value&gt; )
  10884. where base N specifies the base of the quantities &lt;low limit&gt;, &lt;high limit&gt;,
  10885. &lt;smallest discriminant&gt; and &lt;value&gt;. If base N is omitted, base 10 is assumed.
  10886. Hence:
  10887. data type ring diameter is numeric
  10888. range is from 0 to 39
  10889. units are cm
  10890. precision is 0.01
  10891. data type bit pattern is numeric base 8
  10892. range is from 0 to 177777
  10893. units are octal bits
  10894. precision is 1
  10895. Note that the analyst does not specify whether a numeric data type will be
  10896. implemented as an integer or a real number. This will ultimately be determined
  10897. by the architecture, based on the native types available in the implementation
  10898. language, the word length of these native types, and the range and precision
  10899. required for the data type. As a result, the OOA models of any domain are
  10900. entirely decoupled from the implementation technology, thereby maximizing the
  10901. potential for reuse across a wide range of platforms and implementation
  10902. languages.
  10903. The operations permitted for numeric data types are:
  10904. - the standard arithmetic operations +, -, * (multiplication), / (division),
  10905. %% (division modulo N), and ** (exponentiation). The result of such an
  10906. operation is again of base type numeric.
  10907. - the standard arithmetic comparisons of = , != , &lt;, &gt;, &lt;= , and &gt;= . The
  10908. result of such a comparison yields a data element of base type
  10909. boolean.&quot; [OOAData]</literallayout></para>
  10910. </entry>
  10911. </row>
  10912. <row>
  10913. <entry>
  10914. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10915. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10916. </imageobject></mediaobject>
  10917. </literallayout></para>
  10918. </entry>
  10919. <entry>
  10920. <para><literallayout xml:space='preserve' class='monospaced'>current_state:state&lt;State_Model&gt;</literallayout></para>
  10921. </entry>
  10922. <entry>
  10923. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10924. </entry>
  10925. </row>
  10926. <row>
  10927. <entry>
  10928. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10929. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10930. </imageobject></mediaobject>
  10931. </literallayout></para>
  10932. </entry>
  10933. <entry>
  10934. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  10935. </entry>
  10936. <entry>
  10937. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10938. </entry>
  10939. </row>
  10940. <row>
  10941. <entry>
  10942. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10943. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  10944. </imageobject></mediaobject>
  10945. </literallayout></para>
  10946. </entry>
  10947. <entry>
  10948. <para><literallayout xml:space='preserve' class='monospaced'>Keyword</literallayout></para>
  10949. </entry>
  10950. <entry>
  10951. <para><literallayout xml:space='preserve' class='monospaced'>A keyword is a special processing directive.</literallayout></para>
  10952. </entry>
  10953. </row>
  10954. <row>
  10955. <entry>
  10956. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10957. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10958. </imageobject></mediaobject>
  10959. </literallayout></para>
  10960. </entry>
  10961. <entry>
  10962. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  10963. </entry>
  10964. <entry>
  10965. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10966. </entry>
  10967. </row>
  10968. <row>
  10969. <entry>
  10970. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10971. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  10972. </imageobject></mediaobject>
  10973. </literallayout></para>
  10974. </entry>
  10975. <entry>
  10976. <para><literallayout xml:space='preserve' class='monospaced'>Instance Reference</literallayout></para>
  10977. </entry>
  10978. <entry>
  10979. <para><literallayout xml:space='preserve' class='monospaced'>An instance reference is the type to which all object instances must conform.
  10980. This is a core type that says object instances have a common set of
  10981. operations defined for usage.</literallayout></para>
  10982. </entry>
  10983. </row>
  10984. <row>
  10985. <entry>
  10986. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  10987. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  10988. </imageobject></mediaobject>
  10989. </literallayout></para>
  10990. </entry>
  10991. <entry>
  10992. <para><literallayout xml:space='preserve' class='monospaced'>current_state:state&lt;State_Model&gt;</literallayout></para>
  10993. </entry>
  10994. <entry>
  10995. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  10996. </entry>
  10997. </row>
  10998. <row>
  10999. <entry>
  11000. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11001. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11002. </imageobject></mediaobject>
  11003. </literallayout></para>
  11004. </entry>
  11005. <entry>
  11006. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  11007. </entry>
  11008. <entry>
  11009. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11010. </entry>
  11011. </row>
  11012. <row>
  11013. <entry>
  11014. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11015. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  11016. </imageobject></mediaobject>
  11017. </literallayout></para>
  11018. </entry>
  11019. <entry>
  11020. <para><literallayout xml:space='preserve' class='monospaced'>Enumeration</literallayout></para>
  11021. </entry>
  11022. <entry>
  11023. <para><literallayout xml:space='preserve' class='monospaced'>&quot;If a data type permits a finite set of values, define it as:
  11024. data type &lt;name&gt; is enumerated
  11025. values are &lt;value 1 &gt;, &lt;value 2 &gt;, . . . &lt;value N &gt;
  11026. ( default value is &lt;value k &gt; ) 4
  11027. as in:
  11028. data type IC color is enumerated
  11029. values are red, blue, black, green, silver
  11030. The only operations permitted for data elements of an enumerated data type are
  11031. the comparison operations, represented as = (identical in value) and
  11032. != (not identical in value). The result of either comparison yields a data
  11033. element of type boolean.&quot; [OOAData]</literallayout></para>
  11034. </entry>
  11035. </row>
  11036. <row>
  11037. <entry>
  11038. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11039. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11040. </imageobject></mediaobject>
  11041. </literallayout></para>
  11042. </entry>
  11043. <entry>
  11044. <para><literallayout xml:space='preserve' class='monospaced'>current_state:state&lt;State_Model&gt;</literallayout></para>
  11045. </entry>
  11046. <entry>
  11047. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11048. </entry>
  11049. </row>
  11050. <row>
  11051. <entry>
  11052. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11053. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11054. </imageobject></mediaobject>
  11055. </literallayout></para>
  11056. </entry>
  11057. <entry>
  11058. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  11059. </entry>
  11060. <entry>
  11061. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11062. </entry>
  11063. </row>
  11064. <row>
  11065. <entry>
  11066. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11067. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  11068. </imageobject></mediaobject>
  11069. </literallayout></para>
  11070. </entry>
  11071. <entry>
  11072. <para><literallayout xml:space='preserve' class='monospaced'>Enumeration Definition</literallayout></para>
  11073. </entry>
  11074. <entry>
  11075. <para><literallayout xml:space='preserve' class='monospaced'>An enumeration definition bounds the set of enumeration values allowed when an
  11076. enumeration type is used. A variable is declared as an enumeration definition
  11077. as if the enumeration definition was the type. This is typical of how most
  11078. programming languages support the use of enumerations.
  11079. e.g., &lt;enum keyword&gt; &lt;type name&gt; &lt;enumerator value list&gt; &lt;variable name&gt;</literallayout></para>
  11080. </entry>
  11081. </row>
  11082. <row>
  11083. <entry>
  11084. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11085. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11086. </imageobject></mediaobject>
  11087. </literallayout></para>
  11088. </entry>
  11089. <entry>
  11090. <para><literallayout xml:space='preserve' class='monospaced'>type_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  11091. </entry>
  11092. <entry>
  11093. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11094. </entry>
  11095. </row>
  11096. <row>
  11097. <entry>
  11098. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11099. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11100. </imageobject></mediaobject>
  11101. </literallayout></para>
  11102. </entry>
  11103. <entry>
  11104. <para><literallayout xml:space='preserve' class='monospaced'>name:string</literallayout></para>
  11105. </entry>
  11106. <entry>
  11107. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11108. </entry>
  11109. </row>
  11110. <row>
  11111. <entry>
  11112. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11113. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  11114. </imageobject></mediaobject>
  11115. </literallayout></para>
  11116. </entry>
  11117. <entry>
  11118. <para><literallayout xml:space='preserve' class='monospaced'>Duration</literallayout></para>
  11119. </entry>
  11120. <entry>
  11121. <para><literallayout xml:space='preserve' class='monospaced'>&quot;Similarly, to define a data type that represents duration, write
  11122. data type &lt;data type name&gt; is duration
  11123. range is from &lt;low limit&gt; to &lt;high limit&gt;
  11124. units are [ year | month | day | hour | minute | second | millisec |
  11125. microsec ]
  11126. precision is &lt;smallest discriminated value&gt;
  11127. The operations permitted using data types based on time and duration are:
  11128. time := time ± duration
  11129. duration := duration ± duration
  11130. duration := duration * numeric
  11131. duration := duration / numeric
  11132. duration := time - time
  11133. as well as the standard comparisons of &lt; (read as &quot;before&quot;), &gt;, ≤ , and ≥ .
  11134. Each such comparison yields a data element of base type boolean.
  11135. Comparisons are defined only between elements of the same base type.&quot;
  11136. [OOAData]</literallayout></para>
  11137. </entry>
  11138. </row>
  11139. <row>
  11140. <entry>
  11141. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11142. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11143. </imageobject></mediaobject>
  11144. </literallayout></para>
  11145. </entry>
  11146. <entry>
  11147. <para><literallayout xml:space='preserve' class='monospaced'>current_state:state&lt;State_Model&gt;</literallayout></para>
  11148. </entry>
  11149. <entry>
  11150. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11151. </entry>
  11152. </row>
  11153. <row>
  11154. <entry>
  11155. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11156. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11157. </imageobject></mediaobject>
  11158. </literallayout></para>
  11159. </entry>
  11160. <entry>
  11161. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  11162. </entry>
  11163. <entry>
  11164. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11165. </entry>
  11166. </row>
  11167. <row>
  11168. <entry>
  11169. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11170. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  11171. </imageobject></mediaobject>
  11172. </literallayout></para>
  11173. </entry>
  11174. <entry>
  11175. <para><literallayout xml:space='preserve' class='monospaced'>Domain</literallayout></para>
  11176. </entry>
  11177. <entry>
  11178. <para><literallayout xml:space='preserve' class='monospaced'>Domain types are unique within the context of the domain. Domain types are
  11179. often also called user-defined types, because they are defined by the analyst
  11180. when modeling the domain. Often domain types will have a known name within the
  11181. subject matter of the domain.
  11182. Domain types are formed using a core type as a base.</literallayout></para>
  11183. </entry>
  11184. </row>
  11185. <row>
  11186. <entry>
  11187. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11188. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11189. </imageobject></mediaobject>
  11190. </literallayout></para>
  11191. </entry>
  11192. <entry>
  11193. <para><literallayout xml:space='preserve' class='monospaced'>domain_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  11194. </entry>
  11195. <entry>
  11196. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11197. </entry>
  11198. </row>
  11199. <row>
  11200. <entry>
  11201. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11202. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11203. </imageobject></mediaobject>
  11204. </literallayout></para>
  11205. </entry>
  11206. <entry>
  11207. <para><literallayout xml:space='preserve' class='monospaced'>current_state:state&lt;State_Model&gt;</literallayout></para>
  11208. </entry>
  11209. <entry>
  11210. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11211. </entry>
  11212. </row>
  11213. <row>
  11214. <entry>
  11215. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11216. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11217. </imageobject></mediaobject>
  11218. </literallayout></para>
  11219. </entry>
  11220. <entry>
  11221. <para><literallayout xml:space='preserve' class='monospaced'>base_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  11222. </entry>
  11223. <entry>
  11224. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11225. </entry>
  11226. </row>
  11227. <row>
  11228. <entry>
  11229. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11230. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11231. </imageobject></mediaobject>
  11232. </literallayout></para>
  11233. </entry>
  11234. <entry>
  11235. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  11236. </entry>
  11237. <entry>
  11238. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11239. </entry>
  11240. </row>
  11241. <row>
  11242. <entry>
  11243. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11244. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  11245. </imageobject></mediaobject>
  11246. </literallayout></para>
  11247. </entry>
  11248. <entry>
  11249. <para><literallayout xml:space='preserve' class='monospaced'>Core</literallayout></para>
  11250. </entry>
  11251. <entry>
  11252. <para><literallayout xml:space='preserve' class='monospaced'>Core types are defined within the context of the Shlaer-Mellor Method. Every
  11253. Shlaer-Mellor model, adhering to this metamodel, will support these types.
  11254. Core types are not intended to be multiply instantiated. Each core type is
  11255. defined only once in the metamodel. Specialization of the core types are done
  11256. through definitions based on the core types. These definitions are considered
  11257. domain types, so they aren&apos;&apos;t modeled in this metamodel. The enumeration
  11258. definition is an exception to this rule, as it has a known structure.</literallayout></para>
  11259. </entry>
  11260. </row>
  11261. <row>
  11262. <entry>
  11263. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11264. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11265. </imageobject></mediaobject>
  11266. </literallayout></para>
  11267. </entry>
  11268. <entry>
  11269. <para><literallayout xml:space='preserve' class='monospaced'>operator_name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  11270. </entry>
  11271. <entry>
  11272. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11273. </entry>
  11274. </row>
  11275. <row>
  11276. <entry>
  11277. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11278. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11279. </imageobject></mediaobject>
  11280. </literallayout></para>
  11281. </entry>
  11282. <entry>
  11283. <para><literallayout xml:space='preserve' class='monospaced'>type:data_t</literallayout></para>
  11284. </entry>
  11285. <entry>
  11286. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11287. </entry>
  11288. </row>
  11289. <row>
  11290. <entry>
  11291. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11292. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11293. </imageobject></mediaobject>
  11294. </literallayout></para>
  11295. </entry>
  11296. <entry>
  11297. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  11298. </entry>
  11299. <entry>
  11300. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11301. </entry>
  11302. </row>
  11303. <row>
  11304. <entry>
  11305. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11306. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  11307. </imageobject></mediaobject>
  11308. </literallayout></para>
  11309. </entry>
  11310. <entry>
  11311. <para><literallayout xml:space='preserve' class='monospaced'>Composite</literallayout></para>
  11312. </entry>
  11313. <entry>
  11314. <para><literallayout xml:space='preserve' class='monospaced'>&quot;A type may be composite, but the corresponding attribute must always be
  11315. treated by the domain as a single unit&quot; [xtUML]
  11316. The operations permitted using data types based on composite are limited to
  11317. equality comparison and assignment to another composite type.
  11318. If individual elements of a composite type are to be operated on within the
  11319. passed-to domain, then they must be sent individually. If they need to be
  11320. treated as a group, then a class must be declared within the domain that
  11321. supports them.
  11322. The operations external to the domain to support these two mechanisms consist
  11323. of ungrouping the data from the composite, making the data available to the
  11324. domain, and then regrouping the processed data. NOTE: while this process sounds
  11325. onerous, the architecture can perform coping mechanisms, such as mapping
  11326. instances of the class in the domain to point to memory locations in the
  11327. composite external to the domain. In this case, the whole ungroup, pass-in, and
  11328. regroup is done automatically and the external operation only needs to ensure
  11329. the sequence occurs without interference.</literallayout></para>
  11330. </entry>
  11331. </row>
  11332. <row>
  11333. <entry>
  11334. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11335. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11336. </imageobject></mediaobject>
  11337. </literallayout></para>
  11338. </entry>
  11339. <entry>
  11340. <para><literallayout xml:space='preserve' class='monospaced'>current_state:state&lt;State_Model&gt;</literallayout></para>
  11341. </entry>
  11342. <entry>
  11343. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11344. </entry>
  11345. </row>
  11346. <row>
  11347. <entry>
  11348. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11349. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11350. </imageobject></mediaobject>
  11351. </literallayout></para>
  11352. </entry>
  11353. <entry>
  11354. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  11355. </entry>
  11356. <entry>
  11357. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11358. </entry>
  11359. </row>
  11360. <row>
  11361. <entry>
  11362. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11363. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  11364. </imageobject></mediaobject>
  11365. </literallayout></para>
  11366. </entry>
  11367. <entry>
  11368. <para><literallayout xml:space='preserve' class='monospaced'>Boolean</literallayout></para>
  11369. </entry>
  11370. <entry>
  11371. <para><literallayout xml:space='preserve' class='monospaced'>&quot;The boolean base data type is exactly what you expect: a pre-defined
  11372. enumerated data type with values True and False. To define a domain-specific
  11373. data type based on a boolean base type, write:
  11374. data type &lt;name&gt; is boolean
  11375. (default value is &lt;value&gt;)
  11376. The operations permitted for data elements based on these base types include
  11377. the comparison operations, represented as = (identical in value) and != (not
  11378. identical in value). The result of either comparison yields a data element of
  11379. base type boolean. The logical operations, not, and, &amp; or, are defined in the
  11380. standard way.&quot; [OOAData]</literallayout></para>
  11381. </entry>
  11382. </row>
  11383. <row>
  11384. <entry>
  11385. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11386. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11387. </imageobject></mediaobject>
  11388. </literallayout></para>
  11389. </entry>
  11390. <entry>
  11391. <para><literallayout xml:space='preserve' class='monospaced'>current_state:state&lt;State_Model&gt;</literallayout></para>
  11392. </entry>
  11393. <entry>
  11394. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11395. </entry>
  11396. </row>
  11397. <row>
  11398. <entry>
  11399. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11400. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11401. </imageobject></mediaobject>
  11402. </literallayout></para>
  11403. </entry>
  11404. <entry>
  11405. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  11406. </entry>
  11407. <entry>
  11408. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11409. </entry>
  11410. </row>
  11411. <row>
  11412. <entry>
  11413. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11414. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  11415. </imageobject></mediaobject>
  11416. </literallayout></para>
  11417. </entry>
  11418. <entry>
  11419. <para><literallayout xml:space='preserve' class='monospaced'>Arbitrary</literallayout></para>
  11420. </entry>
  11421. <entry>
  11422. <para><literallayout xml:space='preserve' class='monospaced'>&quot;To define a data type for data elements that represent arbitrary identifiers:
  11423. data type &lt;data type name&gt; is arbitrary
  11424. The implementation of an arbitrary type  like all the base data types  is
  11425. determined by the architecture domain. Hence the analyst should make no
  11426. assumptions as to how this is done: the arbitrary type may be implemented as a
  11427. handle, an integer, a character string, or by any other scheme the architects
  11428. devise. For this reason, the analyst cannot specify a default value for the
  11429. base data type arbitrary.&quot; [OOAData]</literallayout></para>
  11430. </entry>
  11431. </row>
  11432. <row>
  11433. <entry>
  11434. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11435. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11436. </imageobject></mediaobject>
  11437. </literallayout></para>
  11438. </entry>
  11439. <entry>
  11440. <para><literallayout xml:space='preserve' class='monospaced'>current_state:state&lt;State_Model&gt;</literallayout></para>
  11441. </entry>
  11442. <entry>
  11443. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11444. </entry>
  11445. </row>
  11446. <row>
  11447. <entry>
  11448. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11449. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11450. </imageobject></mediaobject>
  11451. </literallayout></para>
  11452. </entry>
  11453. <entry>
  11454. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  11455. </entry>
  11456. <entry>
  11457. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11458. </entry>
  11459. </row>
  11460. <row>
  11461. <entry>
  11462. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11463. <imagedata fileref='images/Class.gif' scalefit='1' width='100%'/>
  11464. </imageobject></mediaobject>
  11465. </literallayout></para>
  11466. </entry>
  11467. <entry>
  11468. <para><literallayout xml:space='preserve' class='monospaced'>Accessor Reference</literallayout></para>
  11469. </entry>
  11470. <entry>
  11471. <para><literallayout xml:space='preserve' class='monospaced'>An accessor reference is the type to which a variable with an accessor as a
  11472. value must conform. In OAL this is an event instance; in C it would be like a
  11473. function pointer.</literallayout></para>
  11474. </entry>
  11475. </row>
  11476. <row>
  11477. <entry>
  11478. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11479. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11480. </imageobject></mediaobject>
  11481. </literallayout></para>
  11482. </entry>
  11483. <entry>
  11484. <para><literallayout xml:space='preserve' class='monospaced'>current_state:state&lt;State_Model&gt;</literallayout></para>
  11485. </entry>
  11486. <entry>
  11487. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11488. </entry>
  11489. </row>
  11490. <row>
  11491. <entry>
  11492. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  11493. <imagedata fileref='images/Attribute.gif' scalefit='1' width='100%'/>
  11494. </imageobject></mediaobject>
  11495. </literallayout></para>
  11496. </entry>
  11497. <entry>
  11498. <para><literallayout xml:space='preserve' class='monospaced'>name:same_as&lt;Base_Attribute&gt;</literallayout></para>
  11499. </entry>
  11500. <entry>
  11501. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11502. </entry>
  11503. </row>
  11504. </tbody>
  11505. </tgroup>
  11506. </table>
  11507. </literallayout></para>
  11508. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-TypedOperator-ClassStateMachine-figure'>
  11509. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-TypedOperator-ClassStateMachine-figure-title'>Type Typed Operator Class State Machine</title>
  11510. <mediaobject><imageobject>
  11511. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Typed Operator-Class State Machine.png' scalefit='1' width='100%'/>
  11512. </imageobject></mediaobject>
  11513. </figure>
  11514. </literallayout></para>
  11515. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Time-InstanceStateMachine-figure'>
  11516. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Time-InstanceStateMachine-figure-title'>Type Time Instance State Machine</title>
  11517. <mediaobject><imageobject>
  11518. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Time-Instance State Machine.png' scalefit='1' width='100%'/>
  11519. </imageobject></mediaobject>
  11520. </figure>
  11521. </literallayout></para>
  11522. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Symbolic-InstanceStateMachine-figure'>
  11523. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Symbolic-InstanceStateMachine-figure-title'>Type Symbolic Instance State Machine</title>
  11524. <mediaobject><imageobject>
  11525. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Symbolic-Instance State Machine.png' scalefit='1' width='100%'/>
  11526. </imageobject></mediaobject>
  11527. </figure>
  11528. </literallayout></para>
  11529. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-RelationshipInstanceReference-InstanceStateMachine-figure'>
  11530. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-RelationshipInstanceReference-InstanceStateMachine-figure-title'>Type Relationship Instance Reference Instance State Machine</title>
  11531. <mediaobject><imageobject>
  11532. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Relationship Instance Reference-Instance State Machine.png' scalefit='1' width='100%'/>
  11533. </imageobject></mediaobject>
  11534. </figure>
  11535. </literallayout></para>
  11536. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Ordinal-InstanceStateMachine-figure'>
  11537. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Ordinal-InstanceStateMachine-figure-title'>Type Ordinal Instance State Machine</title>
  11538. <mediaobject><imageobject>
  11539. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Ordinal-Instance State Machine.png' scalefit='1' width='100%'/>
  11540. </imageobject></mediaobject>
  11541. </figure>
  11542. </literallayout></para>
  11543. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Numeric-InstanceStateMachine-figure'>
  11544. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Numeric-InstanceStateMachine-figure-title'>Type Numeric Instance State Machine</title>
  11545. <mediaobject><imageobject>
  11546. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Numeric-Instance State Machine.png' scalefit='1' width='100%'/>
  11547. </imageobject></mediaobject>
  11548. </figure>
  11549. </literallayout></para>
  11550. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-InstanceReference-InstanceStateMachine-figure'>
  11551. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-InstanceReference-InstanceStateMachine-figure-title'>Type Instance Reference Instance State Machine</title>
  11552. <mediaobject><imageobject>
  11553. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Instance Reference-Instance State Machine.png' scalefit='1' width='100%'/>
  11554. </imageobject></mediaobject>
  11555. </figure>
  11556. </literallayout></para>
  11557. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Enumeration-InstanceStateMachine-figure'>
  11558. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Enumeration-InstanceStateMachine-figure-title'>Type Enumeration Instance State Machine</title>
  11559. <mediaobject><imageobject>
  11560. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Enumeration-Instance State Machine.png' scalefit='1' width='100%'/>
  11561. </imageobject></mediaobject>
  11562. </figure>
  11563. </literallayout></para>
  11564. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Duration-InstanceStateMachine-figure'>
  11565. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Duration-InstanceStateMachine-figure-title'>Type Duration Instance State Machine</title>
  11566. <mediaobject><imageobject>
  11567. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Duration-Instance State Machine.png' scalefit='1' width='100%'/>
  11568. </imageobject></mediaobject>
  11569. </figure>
  11570. </literallayout></para>
  11571. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Domain-InstanceStateMachine-figure'>
  11572. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Domain-InstanceStateMachine-figure-title'>Type Domain Instance State Machine</title>
  11573. <mediaobject><imageobject>
  11574. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Domain-Instance State Machine.png' scalefit='1' width='100%'/>
  11575. </imageobject></mediaobject>
  11576. </figure>
  11577. </literallayout></para>
  11578. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Composite-InstanceStateMachine-figure'>
  11579. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Composite-InstanceStateMachine-figure-title'>Type Composite Instance State Machine</title>
  11580. <mediaobject><imageobject>
  11581. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Composite-Instance State Machine.png' scalefit='1' width='100%'/>
  11582. </imageobject></mediaobject>
  11583. </figure>
  11584. </literallayout></para>
  11585. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Boolean-InstanceStateMachine-figure'>
  11586. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Boolean-InstanceStateMachine-figure-title'>Type Boolean Instance State Machine</title>
  11587. <mediaobject><imageobject>
  11588. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Boolean-Instance State Machine.png' scalefit='1' width='100%'/>
  11589. </imageobject></mediaobject>
  11590. </figure>
  11591. </literallayout></para>
  11592. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Arbitrary-InstanceStateMachine-figure'>
  11593. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-Arbitrary-InstanceStateMachine-figure-title'>Type Arbitrary Instance State Machine</title>
  11594. <mediaobject><imageobject>
  11595. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Arbitrary-Instance State Machine.png' scalefit='1' width='100%'/>
  11596. </imageobject></mediaobject>
  11597. </figure>
  11598. </literallayout></para>
  11599. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-AccessorReference-InstanceStateMachine-figure'>
  11600. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-Type-AccessorReference-InstanceStateMachine-figure-title'>Type Accessor Reference Instance State Machine</title>
  11601. <mediaobject><imageobject>
  11602. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Type-Accessor Reference-Instance State Machine.png' scalefit='1' width='100%'/>
  11603. </imageobject></mediaobject>
  11604. </figure>
  11605. </literallayout></para>
  11606. <section>
  11607. <title>Class Activities</title>
  11608. <subtitle></subtitle>
  11609. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  11610. <section>
  11611. <title>Class Operations</title>
  11612. <subtitle></subtitle>
  11613. <section>
  11614. <title>Type:Operator: associate</title>
  11615. <subtitle></subtitle>
  11616. <para><literallayout xml:space='preserve' class='monospaced'>Operator association associates the operator for use in an equation.</literallayout></para>
  11617. <para><programlisting>
  11618. </programlisting></para>
  11619. </section>
  11620. <section>
  11621. <title>Type:Operator: unassign</title>
  11622. <subtitle></subtitle>
  11623. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11624. <para><programlisting>select any type related by self-&gt;TYPE[R406] where selected.name == param.type;
  11625. select many tyops related by self-&gt;TYOP[R406] where selected.type_name == param.type;
  11626. for each tyop in tyops
  11627. unrelate self from type across R406 using tyop;
  11628. select one restype related by tyop-&gt;TYPE[R415];
  11629. unrelate restype from tyop across R415;
  11630. delete object instance tyop;
  11631. end for;
  11632. </programlisting></para>
  11633. </section>
  11634. </section>
  11635. </section>
  11636. <section>
  11637. <title>Class Activities</title>
  11638. <subtitle></subtitle>
  11639. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  11640. <section>
  11641. <title>Class Operations</title>
  11642. <subtitle></subtitle>
  11643. <section>
  11644. <title>Type:Type: remove</title>
  11645. <subtitle></subtitle>
  11646. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11647. <para><programlisting>select many operators related by self-&gt;OPER[R406];
  11648. for each operator in operators
  11649. operator.unassign(type:self.name);
  11650. select any type related by operator-&gt;TYPE[R406.&apos;&apos;is used in a context established by&apos;&apos;];
  11651. if (empty type)
  11652. delete object instance operator;
  11653. end if;
  11654. end for;
  11655. </programlisting></para>
  11656. </section>
  11657. </section>
  11658. </section>
  11659. <section>
  11660. <title>Class Activities</title>
  11661. <subtitle></subtitle>
  11662. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  11663. <section>
  11664. <title>Class State Machine Actions</title>
  11665. <subtitle></subtitle>
  11666. <section>
  11667. <title>Typed Operator State[1]:Creating</title>
  11668. <subtitle></subtitle>
  11669. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11670. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11671. <para><programlisting>select any result from instances of TYPE where selected.name == rcvd_evt.result;
  11672. if (empty result)
  11673. // Wait 10 milliseconds and retry, since type creation is asynchronous. This
  11674. // code could launch a creation event, but the responsibility lies outside of
  11675. // this process. This process only has to understand the asynchronous nature
  11676. // of type creation and acommodate it.
  11677. create event instance recreate of TYOP_A1:create(name:rcvd_evt.name, symbol:rcvd_evt.symbol, type:rcvd_evt.type, result:rcvd_evt.result) to TYOP class;
  11678. bridge retry_timer = TIM::timer_start(microseconds:10000, event_inst:recreate);
  11679. else
  11680. select any operator from instances of OPER where (selected.name == rcvd_evt.name) and (selected.symbol == rcvd_evt.symbol);
  11681. if (empty operator)
  11682. create object instance operator of OPER;
  11683. operator.name = rcvd_evt.name;
  11684. operator.symbol = rcvd_evt.symbol;
  11685. end if;
  11686. select any type from instances of TYPE where selected.name == rcvd_evt.type;
  11687. create object instance typed_op of TYOP;
  11688. relate operator to type across R406 using typed_op;
  11689. relate typed_op to result across R415;
  11690. // For assignment operators, make them the required operator if requestor is
  11691. // a core type (which it probably is).
  11692. if (operator.name == &quot;assignment&quot;)
  11693. select one core related by type-&gt;CORE[R401];
  11694. if (not empty core)
  11695. relate core to operator across R419;
  11696. end if;
  11697. end if;
  11698. end if;
  11699. </programlisting></para>
  11700. </section>
  11701. </section>
  11702. <section>
  11703. <title>Derived (Mathematically Dependent) Attributes</title>
  11704. <subtitle></subtitle>
  11705. <section>
  11706. <title>Type:Typed Operator: definition</title>
  11707. <subtitle></subtitle>
  11708. <para><literallayout xml:space='preserve' class='monospaced'>&quot;This is a precise specification of the processing required to transform the
  11709. Operands to produce either a return value or an update result, depending on the
  11710. Typed Operator specialization.&quot; [miUML]
  11711. NOTE: miUML has this typed as &quot;psuedocode&quot;, because of not yet having an
  11712. &quot;Operator definition language&quot;. In BridgePoint, it&apos;&apos;s declared as a derived
  11713. type, so OAL can be used to define the operator.</literallayout></para>
  11714. <para><programlisting>self.definition=false;
  11715. </programlisting></para>
  11716. </section>
  11717. </section>
  11718. </section>
  11719. <section>
  11720. <title>Class Activities</title>
  11721. <subtitle></subtitle>
  11722. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  11723. <section>
  11724. <title>Instance State Machine Actions</title>
  11725. <subtitle></subtitle>
  11726. <section>
  11727. <title>Time State[1]:Creating</title>
  11728. <subtitle></subtitle>
  11729. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11730. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11731. <para><programlisting>// Only create if type doesn&apos;&apos;t exist
  11732. select many timds from instances of TIMD;
  11733. if (cardinality timds == 1)
  11734. create object instance type of TYPE;
  11735. create object instance core of CORE;
  11736. relate type to core across R401;
  11737. type.name = &quot;time&quot;;
  11738. core.type = data_t::TIME;
  11739. relate core to self across R403;
  11740. self.generateSupportedOperators();
  11741. else
  11742. LOG::LogFailure(message:&quot;Multiple creation of TIMD attempted!&quot;);
  11743. generate TIMD2:destroy to self;
  11744. end if;
  11745. </programlisting></para>
  11746. </section>
  11747. <section>
  11748. <title>Time State[2]:Destroying</title>
  11749. <subtitle></subtitle>
  11750. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11751. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11752. <para><programlisting>select one core related by self-&gt;CORE[R403];
  11753. if (not empty core)
  11754. core.destroy();
  11755. unrelate core from self across R403;
  11756. delete object instance core;
  11757. end if;
  11758. </programlisting></para>
  11759. </section>
  11760. </section>
  11761. <section>
  11762. <title>Class Operations</title>
  11763. <subtitle></subtitle>
  11764. <section>
  11765. <title>Type:Time: generateSupportedOperators</title>
  11766. <subtitle></subtitle>
  11767. <para><literallayout xml:space='preserve' class='monospaced'>&quot;The operations permitted using data types based on time ... are:
  11768. time := time ± duration
  11769. as well as the standard comparisons of &lt; (read as &quot;before&quot;), &gt;, ≤ , and ≥ .
  11770. Each such comparison yields a data element of base type boolean.
  11771. Comparisons are defined only between elements of the same base type.&quot;
  11772. [OOAData]
  11773. time := time ± time
  11774. NOTE: For mixed type operations, conversion operators must be supported.
  11775. The explicit conversion cases are:
  11776. duration := time: time-&gt;duration
  11777. NOTE: The architecture should add boundary checks on this conversion, as
  11778. durations are often expressed in (e.g.,) microseconds. The system needs to
  11779. be able to support very large numbers if values are more than one hour.</literallayout></para>
  11780. <para><programlisting>generate TYOP_A1:create(name:&quot;assignment&quot;, symbol:&quot;:=&quot;, type:&quot;time&quot;, result:&quot;time&quot;) to TYOP class;
  11781. generate TYOP_A1:create(name:&quot;addition&quot;, symbol:&quot;+&quot;, type:&quot;time&quot;, result:&quot;time&quot;) to TYOP class;
  11782. generate TYOP_A1:create(name:&quot;subtraction&quot;, symbol:&quot;-&quot;, type:&quot;time&quot;, result:&quot;time&quot;) to TYOP class;
  11783. generate TYOP_A1:create(name:&quot;equal&quot;, symbol:&quot;=&quot;, type:&quot;time&quot;, result:&quot;boolean&quot;) to TYOP class;
  11784. generate TYOP_A1:create(name:&quot;not equal&quot;, symbol:&quot;!=&quot;, type:&quot;time&quot;, result:&quot;boolean&quot;) to TYOP class;
  11785. generate TYOP_A1:create(name:&quot;greater&quot;, symbol:&quot;&gt;&quot;, type:&quot;time&quot;, result:&quot;boolean&quot;) to TYOP class;
  11786. generate TYOP_A1:create(name:&quot;lesser&quot;, symbol:&quot;&lt;&quot;, type:&quot;time&quot;, result:&quot;boolean&quot;) to TYOP class;
  11787. generate TYOP_A1:create(name:&quot;greater or equal&quot;, symbol:&quot;&gt;=&quot;, type:&quot;time&quot;, result:&quot;boolean&quot;) to TYOP class;
  11788. generate TYOP_A1:create(name:&quot;lesser or equal&quot;, symbol:&quot;&lt;=&quot;, type:&quot;time&quot;, result:&quot;boolean&quot;) to TYOP class;
  11789. </programlisting></para>
  11790. </section>
  11791. </section>
  11792. </section>
  11793. <section>
  11794. <title>Class Activities</title>
  11795. <subtitle></subtitle>
  11796. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  11797. <section>
  11798. <title>Instance State Machine Actions</title>
  11799. <subtitle></subtitle>
  11800. <section>
  11801. <title>Symbolic State[1]:Creating</title>
  11802. <subtitle></subtitle>
  11803. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11804. <para><literallayout xml:space='preserve' class='monospaced'>Responsible for instantiating this core data type and all operations associated
  11805. with it.
  11806. NOTE: At the time of this writing, core data types are never expected to be
  11807. deleted, as deleting a core type would require deletion of all user data types
  11808. based on the core type and all attributes and synchronous functionality
  11809. ultimately based on the core type. There is no logical default value to use as
  11810. a fall back.</literallayout></para>
  11811. <para><programlisting>// Only create if type doesn&apos;&apos;t exist
  11812. select many symds from instances of SYMD;
  11813. if (cardinality symds == 1)
  11814. create object instance type of TYPE;
  11815. create object instance core of CORE;
  11816. relate type to core across R401;
  11817. type.name=&quot;symbolic&quot;;
  11818. core.type = data_t::SYMBOLIC;
  11819. relate core to self across R403;
  11820. self.generateSupportedOperators();
  11821. else
  11822. LOG::LogFailure(message:&quot;Multiple creation of SYMD attempted!&quot;);
  11823. generate SYMD2:destroy to self;
  11824. end if;
  11825. </programlisting></para>
  11826. </section>
  11827. <section>
  11828. <title>Symbolic State[2]:Destroying</title>
  11829. <subtitle></subtitle>
  11830. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11831. <para><literallayout xml:space='preserve' class='monospaced'>Responsible for instantiating this core data type and all operations associated
  11832. with it.
  11833. NOTE: At the time of this writing, core data types are never expected to be
  11834. deleted, as deleting a core type would require deletion of all user data types
  11835. based on the core type and all attributes and synchronous functionality
  11836. ultimately based on the core type. There is no logical default value to use as
  11837. a fall back.</literallayout></para>
  11838. <para><programlisting>select one core related by self-&gt;CORE[R403];
  11839. if (not empty core)
  11840. core.destroy();
  11841. unrelate core from self across R403;
  11842. delete object instance core;
  11843. end if;
  11844. </programlisting></para>
  11845. </section>
  11846. </section>
  11847. <section>
  11848. <title>Class Operations</title>
  11849. <subtitle></subtitle>
  11850. <section>
  11851. <title>Type:Symbolic: generateSupportedOperators</title>
  11852. <subtitle></subtitle>
  11853. <para><literallayout xml:space='preserve' class='monospaced'>&quot;The operations defined for symbolic data types are:
  11854. - concatenate (represented as +); the result of concatenation is a data
  11855. element of base type symbolic.
  11856. - comparison for identical value, represented as = (identical in value) and
  11857. != (not identical in value). The result of such a comparison yields a
  11858. data element of base type boolean.
  11859. - comparison for position in a collating sequence[5], represented as &lt;
  11860. (before), &gt; (after), &lt;= (before or identical), and &gt;= (identical or
  11861. after). The result of such a comparison yields a data element of base
  11862. type boolean.
  11863. [5] A collating sequence prescribes the order of all the characters in a
  11864. specified character set, typically including letters, numbers, and punctuation
  11865. marks. Collating sequences are defined in the implementation environment, and
  11866. may vary from country to country depending on the concept of &quot;alphabetical
  11867. order&quot; and the repertoire of characters or symbols used in the natural
  11868. language.&quot; [OOAData] </literallayout></para>
  11869. <para><programlisting>generate TYOP_A1:create(name:&quot;assignment&quot;, symbol:&quot;:=&quot;, type:&quot;symbolic&quot;, result:&quot;symbolic&quot;) to TYOP class;
  11870. generate TYOP_A1:create(name:&quot;concatenate&quot;, symbol:&quot;+&quot;, type:&quot;symbolic&quot;, result:&quot;symbolic&quot;) to TYOP class;
  11871. generate TYOP_A1:create(name:&quot;equal&quot;, symbol:&quot;=&quot;, type:&quot;symbolic&quot;, result:&quot;boolean&quot;) to TYOP class;
  11872. generate TYOP_A1:create(name:&quot;not equal&quot;, symbol:&quot;!=&quot;, type:&quot;symbolic&quot;, result:&quot;boolean&quot;) to TYOP class;
  11873. generate TYOP_A1:create(name:&quot;greater&quot;, symbol:&quot;&gt;&quot;, type:&quot;symbolic&quot;, result:&quot;boolean&quot;) to TYOP class;
  11874. generate TYOP_A1:create(name:&quot;lesser&quot;, symbol:&quot;&lt;&quot;, type:&quot;symbolic&quot;, result:&quot;boolean&quot;) to TYOP class;
  11875. generate TYOP_A1:create(name:&quot;greater or equal&quot;, symbol:&quot;&gt;=&quot;, type:&quot;symbolic&quot;, result:&quot;boolean&quot;) to TYOP class;
  11876. generate TYOP_A1:create(name:&quot;lesser or equal&quot;, symbol:&quot;&lt;=&quot;, type:&quot;symbolic&quot;, result:&quot;boolean&quot;) to TYOP class;
  11877. </programlisting></para>
  11878. </section>
  11879. </section>
  11880. </section>
  11881. <section>
  11882. <title>Class Activities</title>
  11883. <subtitle></subtitle>
  11884. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  11885. <section>
  11886. <title>Instance State Machine Actions</title>
  11887. <subtitle></subtitle>
  11888. <section>
  11889. <title>Relationship Instance Reference State[1]:Creating</title>
  11890. <subtitle></subtitle>
  11891. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11892. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11893. <para><programlisting>// Only create if type doesn&apos;&apos;t exist
  11894. select many rrefs from instances of RREF;
  11895. if (cardinality rrefs == 1)
  11896. create object instance type of TYPE;
  11897. create object instance core of CORE;
  11898. relate type to core across R401;
  11899. type.name = &quot;relationship instance reference&quot;;
  11900. core.type = data_t::RELATIONSHIP_INSTANCE_REFERENCE;
  11901. relate core to self across R403;
  11902. self.generateSupportedOperators();
  11903. else
  11904. LOG::LogFailure(message:&quot;Multiple creation of type RREF attempted!&quot;);
  11905. generate RREF2:destroy to self;
  11906. end if;
  11907. </programlisting></para>
  11908. </section>
  11909. <section>
  11910. <title>Relationship Instance Reference State[2]:Destroying</title>
  11911. <subtitle></subtitle>
  11912. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11913. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11914. <para><programlisting>select one core related by self-&gt;CORE[R403];
  11915. if (not empty core)
  11916. core.destroy();
  11917. unrelate core from self across R403;
  11918. delete object instance core;
  11919. end if;
  11920. </programlisting></para>
  11921. </section>
  11922. </section>
  11923. <section>
  11924. <title>Class Operations</title>
  11925. <subtitle></subtitle>
  11926. <section>
  11927. <title>Type:Relationship Instance Reference: generateSupportedOperators</title>
  11928. <subtitle></subtitle>
  11929. <para><literallayout xml:space='preserve' class='monospaced'>The operations permitted for instance reference data types are
  11930. - the comparisons = and != (identical and not identical in value)
  11931. - the set existence checks of empty and not empty.</literallayout></para>
  11932. <para><programlisting>generate TYOP_A1:create(name:&quot;assignment&quot;, symbol:&quot;:=&quot;, type:&quot;relationship instance reference&quot;, result:&quot;relationship instance reference&quot;) to TYOP class;
  11933. generate TYOP_A1:create(name:&quot;equal&quot;, symbol:&quot;=&quot;, type:&quot;relationship instance reference&quot;, result:&quot;boolean&quot;) to TYOP class;
  11934. generate TYOP_A1:create(name:&quot;not equal&quot;, symbol:&quot;!=&quot;, type:&quot;relationship instance reference&quot;, result:&quot;boolean&quot;) to TYOP class;
  11935. generate TYOP_A1:create(name:&quot;empty&quot;, symbol:&quot;empty&quot;, type:&quot;relationship instance reference&quot;, result:&quot;boolean&quot;) to TYOP class;
  11936. generate TYOP_A1:create(name:&quot;not empty&quot;, symbol:&quot;not empty&quot;, type:&quot;relationship instance reference&quot;, result:&quot;boolean&quot;) to TYOP class;
  11937. </programlisting></para>
  11938. </section>
  11939. </section>
  11940. </section>
  11941. <section>
  11942. <title>Class Activities</title>
  11943. <subtitle></subtitle>
  11944. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  11945. <section>
  11946. <title>Instance State Machine Actions</title>
  11947. <subtitle></subtitle>
  11948. <section>
  11949. <title>Ordinal State[1]:Creating</title>
  11950. <subtitle></subtitle>
  11951. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11952. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11953. <para><programlisting>// Only create if type doesn&apos;&apos;t exist
  11954. select many ordds from instances of ORDD;
  11955. if (cardinality ordds == 1)
  11956. create object instance type of TYPE;
  11957. create object instance core of CORE;
  11958. relate type to core across R401;
  11959. type.name = &quot;ordinal&quot;;
  11960. core.type = data_t::ORDINAL;
  11961. relate core to self across R403;
  11962. self.generateSupportedOperators();
  11963. else
  11964. LOG::LogFailure(message:&quot;Multiple creation of ORDD attempted!&quot;);
  11965. generate ORDD2:destroy to self;
  11966. end if;
  11967. </programlisting></para>
  11968. </section>
  11969. <section>
  11970. <title>Ordinal State[2]:Destroying</title>
  11971. <subtitle></subtitle>
  11972. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11973. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  11974. <para><programlisting>select one core related by self-&gt;CORE[R403];
  11975. if (not empty core)
  11976. core.destroy();
  11977. unrelate core from self across R403;
  11978. delete object instance core;
  11979. end if;
  11980. </programlisting></para>
  11981. </section>
  11982. </section>
  11983. <section>
  11984. <title>Class Operations</title>
  11985. <subtitle></subtitle>
  11986. <section>
  11987. <title>Type:Ordinal: generateSupportedOperators</title>
  11988. <subtitle></subtitle>
  11989. <para><literallayout xml:space='preserve' class='monospaced'>The operations permitted for instance reference data types are
  11990. - the comparisons = and != (identical and not identical in value)
  11991. - the set existence checks of empty and not empty.</literallayout></para>
  11992. <para><programlisting>generate TYOP_A1:create(name:&quot;assignment&quot;, symbol:&quot;:=&quot;, type:&quot;ordinal&quot;, result:&quot;ordinal&quot;) to TYOP class;
  11993. generate TYOP_A1:create(name:&quot;join&quot;, symbol:&quot;+&quot;, type:&quot;ordinal&quot;, result:&quot;ordinal&quot;) to TYOP class;
  11994. generate TYOP_A1:create(name:&quot;equal&quot;, symbol:&quot;=&quot;, type:&quot;ordinal&quot;, result:&quot;boolean&quot;) to TYOP class;
  11995. generate TYOP_A1:create(name:&quot;not equal&quot;, symbol:&quot;!=&quot;, type:&quot;ordinal&quot;, result:&quot;boolean&quot;) to TYOP class;
  11996. generate TYOP_A1:create(name:&quot;empty&quot;, symbol:&quot;empty&quot;, type:&quot;ordinal&quot;, result:&quot;boolean&quot;) to TYOP class;
  11997. generate TYOP_A1:create(name:&quot;not empty&quot;, symbol:&quot;not empty&quot;, type:&quot;ordinal&quot;, result:&quot;boolean&quot;) to TYOP class;
  11998. generate TYOP_A1:create(name:&quot;insert&quot;, symbol:&quot;insert into&quot;, type:&quot;numeric&quot;, result:&quot;ordinal&quot;) to TYOP class;
  11999. generate TYOP_A1:create(name:&quot;remove&quot;, symbol:&quot;remove from&quot;, type:&quot;numeric&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12000. generate TYOP_A1:create(name:&quot;insert&quot;, symbol:&quot;insert into&quot;, type:&quot;symbolic&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12001. generate TYOP_A1:create(name:&quot;remove&quot;, symbol:&quot;remove from&quot;, type:&quot;symbolic&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12002. generate TYOP_A1:create(name:&quot;insert&quot;, symbol:&quot;insert into&quot;, type:&quot;boolean&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12003. generate TYOP_A1:create(name:&quot;remove&quot;, symbol:&quot;remove from&quot;, type:&quot;boolean&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12004. generate TYOP_A1:create(name:&quot;insert&quot;, symbol:&quot;insert into&quot;, type:&quot;arbitrary&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12005. generate TYOP_A1:create(name:&quot;remove&quot;, symbol:&quot;remove from&quot;, type:&quot;arbitrary&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12006. generate TYOP_A1:create(name:&quot;insert&quot;, symbol:&quot;insert into&quot;, type:&quot;duration&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12007. generate TYOP_A1:create(name:&quot;remove&quot;, symbol:&quot;remove from&quot;, type:&quot;duration&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12008. generate TYOP_A1:create(name:&quot;insert&quot;, symbol:&quot;insert into&quot;, type:&quot;time&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12009. generate TYOP_A1:create(name:&quot;remove&quot;, symbol:&quot;remove from&quot;, type:&quot;time&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12010. generate TYOP_A1:create(name:&quot;insert&quot;, symbol:&quot;insert into&quot;, type:&quot;instance reference&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12011. generate TYOP_A1:create(name:&quot;remove&quot;, symbol:&quot;remove from&quot;, type:&quot;instance reference&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12012. generate TYOP_A1:create(name:&quot;insert&quot;, symbol:&quot;insert into&quot;, type:&quot;function reference&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12013. generate TYOP_A1:create(name:&quot;remove&quot;, symbol:&quot;remove from&quot;, type:&quot;function reference&quot;, result:&quot;ordinal&quot;) to TYOP class;
  12014. </programlisting></para>
  12015. </section>
  12016. </section>
  12017. </section>
  12018. <section>
  12019. <title>Class Activities</title>
  12020. <subtitle></subtitle>
  12021. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  12022. <section>
  12023. <title>Instance State Machine Actions</title>
  12024. <subtitle></subtitle>
  12025. <section>
  12026. <title>Numeric State[1]:Creating</title>
  12027. <subtitle></subtitle>
  12028. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12029. <para><literallayout xml:space='preserve' class='monospaced'>Responsible for instantiating this core data type and all operations associated
  12030. with it.
  12031. NOTE: At the time of this writing, core data types are never expected to be
  12032. deleted, as deleting a core type would require deletion of all user data types
  12033. based on the core type and all attributes and synchronous functionality
  12034. ultimately based on the core type. There is no logical default value to use as
  12035. a fall back.</literallayout></para>
  12036. <para><programlisting>// Only create if type doesn&apos;&apos;t exist
  12037. select many numis from instances of NUMI;
  12038. if (cardinality numis == 1)
  12039. create object instance type of TYPE;
  12040. create object instance core of CORE;
  12041. relate type to core across R401;
  12042. type.name = &quot;numeric&quot;;
  12043. core.type = data_t::NUMERIC;
  12044. relate core to self across R403;
  12045. self.generateSupportedOperators();
  12046. else
  12047. LOG::LogFailure(message:&quot;Multiple creation of NUMI attempted!&quot;);
  12048. generate NUMI2:destroy to self;
  12049. end if;
  12050. </programlisting></para>
  12051. </section>
  12052. <section>
  12053. <title>Numeric State[2]:Destroying</title>
  12054. <subtitle></subtitle>
  12055. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12056. <para><literallayout xml:space='preserve' class='monospaced'>Responsible for instantiating this core data type and all operations associated
  12057. with it.
  12058. NOTE: At the time of this writing, core data types are never expected to be
  12059. deleted, as deleting a core type would require deletion of all user data types
  12060. based on the core type and all attributes and synchronous functionality
  12061. ultimately based on the core type. There is no logical default value to use as
  12062. a fall back.</literallayout></para>
  12063. <para><programlisting>select one core related by self-&gt;CORE[R403];
  12064. if (not empty core)
  12065. core.destroy();
  12066. unrelate core from self across R403;
  12067. delete object instance core;
  12068. end if;
  12069. </programlisting></para>
  12070. </section>
  12071. </section>
  12072. <section>
  12073. <title>Class Operations</title>
  12074. <subtitle></subtitle>
  12075. <section>
  12076. <title>Type:Numeric: generateSupportedOperators</title>
  12077. <subtitle></subtitle>
  12078. <para><literallayout xml:space='preserve' class='monospaced'>&quot;the standard arithmetic operations +, -, * (multiplication), / (division),
  12079. %% (division modulo N), and ** (exponentiation). The result of such an
  12080. operation is again of base type numeric.
  12081. the standard arithmetic comparisons of = , != , &lt;, &gt;, &lt;= , and &gt;=. The
  12082. result of such an operation is of base type boolean.&quot; [OOAData] </literallayout></para>
  12083. <para><programlisting>generate TYOP_A1:create(name:&quot;assignment&quot;, symbol:&quot;:=&quot;, type:&quot;numeric&quot;, result:&quot;numeric&quot;) to TYOP class;
  12084. generate TYOP_A1:create(name:&quot;addition&quot;, symbol:&quot;+&quot;, type:&quot;numeric&quot;, result:&quot;numeric&quot;) to TYOP class;
  12085. generate TYOP_A1:create(name:&quot;subtraction&quot;, symbol:&quot;-&quot;, type:&quot;numeric&quot;, result:&quot;numeric&quot;) to TYOP class;
  12086. generate TYOP_A1:create(name:&quot;multiplication&quot;, symbol:&quot;*&quot;, type:&quot;numeric&quot;, result:&quot;numeric&quot;) to TYOP class;
  12087. generate TYOP_A1:create(name:&quot;division&quot;, symbol:&quot;/&quot;, type:&quot;numeric&quot;, result:&quot;numeric&quot;) to TYOP class;
  12088. generate TYOP_A1:create(name:&quot;modulo&quot;, symbol:&quot;%%&quot;, type:&quot;numeric&quot;, result:&quot;numeric&quot;) to TYOP class;
  12089. generate TYOP_A1:create(name:&quot;exponentiation&quot;, symbol:&quot;**&quot;, type:&quot;numeric&quot;, result:&quot;numeric&quot;) to TYOP class;
  12090. generate TYOP_A1:create(name:&quot;equal&quot;, symbol:&quot;=&quot;, type:&quot;numeric&quot;, result:&quot;boolean&quot;) to TYOP class;
  12091. generate TYOP_A1:create(name:&quot;not equal&quot;, symbol:&quot;!=&quot;, type:&quot;numeric&quot;, result:&quot;boolean&quot;) to TYOP class;
  12092. generate TYOP_A1:create(name:&quot;greater&quot;, symbol:&quot;&gt;&quot;, type:&quot;numeric&quot;, result:&quot;boolean&quot;) to TYOP class;
  12093. generate TYOP_A1:create(name:&quot;lesser&quot;, symbol:&quot;&lt;&quot;, type:&quot;numeric&quot;, result:&quot;boolean&quot;) to TYOP class;
  12094. generate TYOP_A1:create(name:&quot;greater or equal&quot;, symbol:&quot;&gt;=&quot;, type:&quot;numeric&quot;, result:&quot;boolean&quot;) to TYOP class;
  12095. generate TYOP_A1:create(name:&quot;lesser or equal&quot;, symbol:&quot;&lt;=&quot;, type:&quot;numeric&quot;, result:&quot;boolean&quot;) to TYOP class;
  12096. </programlisting></para>
  12097. </section>
  12098. </section>
  12099. </section>
  12100. <section>
  12101. <title>Class Activities</title>
  12102. <subtitle></subtitle>
  12103. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  12104. <section>
  12105. <title>Instance State Machine Actions</title>
  12106. <subtitle></subtitle>
  12107. <section>
  12108. <title>Instance Reference State[1]:Creating</title>
  12109. <subtitle></subtitle>
  12110. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12111. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12112. <para><programlisting>// Only create if type doesn&apos;&apos;t exist
  12113. select many irefs from instances of IREF;
  12114. if (cardinality irefs == 1)
  12115. create object instance type of TYPE;
  12116. create object instance core of CORE;
  12117. relate type to core across R401;
  12118. type.name = &quot;instance reference&quot;;
  12119. core.type = data_t::INSTANCE_REFERENCE;
  12120. relate core to self across R403;
  12121. self.generateSupportedOperators();
  12122. else
  12123. LOG::LogFailure(message:&quot;Multiple creation of type IREF attempted!&quot;);
  12124. generate IREF2:destroy to self;
  12125. end if;
  12126. </programlisting></para>
  12127. </section>
  12128. <section>
  12129. <title>Instance Reference State[2]:Destroying</title>
  12130. <subtitle></subtitle>
  12131. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12132. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12133. <para><programlisting>select one core related by self-&gt;CORE[R403];
  12134. if (not empty core)
  12135. core.destroy();
  12136. unrelate core from self across R403;
  12137. delete object instance core;
  12138. end if;
  12139. </programlisting></para>
  12140. </section>
  12141. </section>
  12142. <section>
  12143. <title>Class Operations</title>
  12144. <subtitle></subtitle>
  12145. <section>
  12146. <title>Type:Instance Reference: generateSupportedOperators</title>
  12147. <subtitle></subtitle>
  12148. <para><literallayout xml:space='preserve' class='monospaced'>The operations permitted for instance reference data types are
  12149. - the comparisons = and != (identical and not identical in value)
  12150. - the set existence checks of empty and not empty.</literallayout></para>
  12151. <para><programlisting>generate TYOP_A1:create(name:&quot;assignment&quot;, symbol:&quot;:=&quot;, type:&quot;instance reference&quot;, result:&quot;instance reference&quot;) to TYOP class;
  12152. generate TYOP_A1:create(name:&quot;equal&quot;, symbol:&quot;=&quot;, type:&quot;instance reference&quot;, result:&quot;boolean&quot;) to TYOP class;
  12153. generate TYOP_A1:create(name:&quot;not equal&quot;, symbol:&quot;!=&quot;, type:&quot;instance reference&quot;, result:&quot;boolean&quot;) to TYOP class;
  12154. generate TYOP_A1:create(name:&quot;empty&quot;, symbol:&quot;empty&quot;, type:&quot;instance reference&quot;, result:&quot;boolean&quot;) to TYOP class;
  12155. generate TYOP_A1:create(name:&quot;not empty&quot;, symbol:&quot;not empty&quot;, type:&quot;instance reference&quot;, result:&quot;boolean&quot;) to TYOP class;
  12156. </programlisting></para>
  12157. </section>
  12158. </section>
  12159. </section>
  12160. <section>
  12161. <title>Class Activities</title>
  12162. <subtitle></subtitle>
  12163. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  12164. <section>
  12165. <title>Instance State Machine Actions</title>
  12166. <subtitle></subtitle>
  12167. <section>
  12168. <title>Enumeration State[1]:Creating</title>
  12169. <subtitle></subtitle>
  12170. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12171. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12172. <para><programlisting>// Only create if type doesn&apos;&apos;t exist
  12173. select many enums from instances of ENUM;
  12174. if (cardinality enums == 1)
  12175. create object instance type of TYPE;
  12176. create object instance core of CORE;
  12177. relate type to core across R401;
  12178. type.name = &quot;enumeration&quot;;
  12179. core.type = data_t::ENUMERATION;
  12180. relate core to self across R403;
  12181. self.generateSupportedOperators();
  12182. else
  12183. LOG::LogFailure(message:&quot;Multiple creation of ENUM attempted!&quot;);
  12184. generate ENUM2:destroy to self;
  12185. end if;
  12186. </programlisting></para>
  12187. </section>
  12188. <section>
  12189. <title>Enumeration State[2]:Destroying</title>
  12190. <subtitle></subtitle>
  12191. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12192. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12193. <para><programlisting>select one core related by self-&gt;CORE[R403];
  12194. if (not empty core)
  12195. core.destroy();
  12196. unrelate core from self across R403;
  12197. delete object instance core;
  12198. end if;
  12199. </programlisting></para>
  12200. </section>
  12201. </section>
  12202. <section>
  12203. <title>Class Operations</title>
  12204. <subtitle></subtitle>
  12205. <section>
  12206. <title>Type:Enumeration: generateSupportedOperators</title>
  12207. <subtitle></subtitle>
  12208. <para><literallayout xml:space='preserve' class='monospaced'>&quot;The only operations permitted for data elements of an enumerated data type are
  12209. the comparison operations, represented as = (identical in value) and
  12210. != (not identical in value). The result of either comparison yields a data
  12211. element of type boolean.&quot; [OOAData]</literallayout></para>
  12212. <para><programlisting>generate TYOP_A1:create(name:&quot;assignment&quot;, symbol:&quot;:=&quot;, type:&quot;enumeration&quot;, result:&quot;enumeration&quot;) to TYOP class;
  12213. generate TYOP_A1:create(name:&quot;equal&quot;, symbol:&quot;=&quot;, type:&quot;enumeration&quot;, result:&quot;boolean&quot;) to TYOP class;
  12214. generate TYOP_A1:create(name:&quot;not equal&quot;, symbol:&quot;!=&quot;, type:&quot;enumeration&quot;, result:&quot;boolean&quot;) to TYOP class;
  12215. </programlisting></para>
  12216. </section>
  12217. </section>
  12218. </section>
  12219. <section>
  12220. <title>Class Activities</title>
  12221. <subtitle></subtitle>
  12222. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  12223. <section>
  12224. <title>Instance State Machine Actions</title>
  12225. <subtitle></subtitle>
  12226. <section>
  12227. <title>Duration State[1]:Creating</title>
  12228. <subtitle></subtitle>
  12229. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12230. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12231. <para><programlisting>// Only create if type doesn&apos;&apos;t exist
  12232. select many durds from instances of DURD;
  12233. if (cardinality durds == 1)
  12234. create object instance type of TYPE;
  12235. create object instance core of CORE;
  12236. relate type to core across R401;
  12237. type.name = &quot;duration&quot;;
  12238. core.type = data_t::DURATION;
  12239. relate core to self across R403;
  12240. self.generateSupportedOperators();
  12241. else
  12242. LOG::LogFailure(message:&quot;Multiple creation of DURD attempted!&quot;);
  12243. generate DURD2:destroy to self;
  12244. end if;
  12245. </programlisting></para>
  12246. </section>
  12247. <section>
  12248. <title>Duration State[2]:Destroying</title>
  12249. <subtitle></subtitle>
  12250. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12251. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12252. <para><programlisting>select one core related by self-&gt;CORE[R403];
  12253. if (not empty core)
  12254. core.destroy();
  12255. unrelate core from self across R403;
  12256. delete object instance core;
  12257. end if;
  12258. </programlisting></para>
  12259. </section>
  12260. </section>
  12261. <section>
  12262. <title>Class Operations</title>
  12263. <subtitle></subtitle>
  12264. <section>
  12265. <title>Type:Duration: generateSupportedOperators</title>
  12266. <subtitle></subtitle>
  12267. <para><literallayout xml:space='preserve' class='monospaced'>&quot;The operations permitted using data types based on ... duration are:
  12268. duration := duration ± duration
  12269. duration := duration * numeric
  12270. duration := duration / numeric
  12271. duration := time - time
  12272. as well as the standard comparisons of &lt; (read as &quot;before&quot;), &gt;, ≤ , and ≥ .
  12273. Each such comparison yields a data element of base type boolean.
  12274. Comparisons are defined only between elements of the same base type.&quot;
  12275. [OOAData]
  12276. NOTE: For mixed type operations, conversion operators must be supported.
  12277. The explicit conversion cases are:
  12278. duration * numeric: duration-&gt;numeric result: numeric
  12279. duration / numeric: duration-&gt;numeric result: numeric
  12280. duration := numeric: numeric-&gt;duration
  12281. duration := time: time-&gt;duration</literallayout></para>
  12282. <para><programlisting>generate TYOP_A1:create(name:&quot;assignment&quot;, symbol:&quot;:=&quot;, type:&quot;duration&quot;, result:&quot;duration&quot;) to TYOP class;
  12283. generate TYOP_A1:create(name:&quot;addition&quot;, symbol:&quot;+&quot;, type:&quot;duration&quot;, result:&quot;duration&quot;) to TYOP class;
  12284. generate TYOP_A1:create(name:&quot;subtraction&quot;, symbol:&quot;-&quot;, type:&quot;duration&quot;, result:&quot;duration&quot;) to TYOP class;
  12285. generate TYOP_A1:create(name:&quot;equal&quot;, symbol:&quot;=&quot;, type:&quot;duration&quot;, result:&quot;boolean&quot;) to TYOP class;
  12286. generate TYOP_A1:create(name:&quot;not equal&quot;, symbol:&quot;!=&quot;, type:&quot;duration&quot;, result:&quot;boolean&quot;) to TYOP class;
  12287. generate TYOP_A1:create(name:&quot;greater&quot;, symbol:&quot;&gt;&quot;, type:&quot;duration&quot;, result:&quot;boolean&quot;) to TYOP class;
  12288. generate TYOP_A1:create(name:&quot;lesser&quot;, symbol:&quot;&lt;&quot;, type:&quot;duration&quot;, result:&quot;boolean&quot;) to TYOP class;
  12289. generate TYOP_A1:create(name:&quot;greater or equal&quot;, symbol:&quot;&gt;=&quot;, type:&quot;duration&quot;, result:&quot;boolean&quot;) to TYOP class;
  12290. generate TYOP_A1:create(name:&quot;lesser or equal&quot;, symbol:&quot;&lt;=&quot;, type:&quot;duration&quot;, result:&quot;boolean&quot;) to TYOP class;
  12291. // It is highly recommended that the architecture handle conversions auto-
  12292. // matically, so the analyst doesn&apos;&apos;t have to explicitly add the conversion
  12293. // operator.
  12294. generate TYOP_A1:create(name:&quot;convert to numeric&quot;, symbol:&quot;-&gt;NUMI&quot;, type:&quot;duration&quot;, result:&quot;numeric&quot;) to TYOP class;
  12295. </programlisting></para>
  12296. </section>
  12297. </section>
  12298. </section>
  12299. <section>
  12300. <title>Class Activities</title>
  12301. <subtitle></subtitle>
  12302. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  12303. <section>
  12304. <title>Instance State Machine Actions</title>
  12305. <subtitle></subtitle>
  12306. <section>
  12307. <title>Domain State[1]:Creating</title>
  12308. <subtitle></subtitle>
  12309. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12310. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12311. <para><programlisting>create object instance type of TYPE;
  12312. type.name = param.name;
  12313. create object instance domd of DOMD;
  12314. relate domd to type across R401;
  12315. select any mdom from instances of MDOM where selected.name == param.domain;
  12316. relate domd to mdom across R412;
  12317. select many cores from instances of CORE;
  12318. for each core in cores
  12319. if (core.type == param.coreType)
  12320. relate core to domd across R402;
  12321. break;
  12322. end if;
  12323. end for;
  12324. </programlisting></para>
  12325. </section>
  12326. <section>
  12327. <title>Domain State[2]:Destroying</title>
  12328. <subtitle></subtitle>
  12329. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12330. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12331. <para><programlisting>select one type related by self-&gt;TYPE[R401];
  12332. if (not empty type)
  12333. type.remove();
  12334. unrelate type from self across R401;
  12335. delete object instance type;
  12336. end if;
  12337. select one core related by self-&gt;CORE[R402.&apos;&apos;is based on&apos;&apos;];
  12338. unrelate self from core across R402.&apos;&apos;is based on&apos;&apos;;
  12339. </programlisting></para>
  12340. </section>
  12341. </section>
  12342. </section>
  12343. <section>
  12344. <title>Class Activities</title>
  12345. <subtitle></subtitle>
  12346. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  12347. <section>
  12348. <title>Class Operations</title>
  12349. <subtitle></subtitle>
  12350. <section>
  12351. <title>Type:Core: destroy</title>
  12352. <subtitle></subtitle>
  12353. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12354. <para><programlisting>select one operator related by self-&gt;OPER[R419];
  12355. unrelate self from operator across R419;
  12356. select one type related by self-&gt;TYPE[R401];
  12357. if (not empty type)
  12358. type.remove();
  12359. unrelate type from self across R401;
  12360. delete object instance type;
  12361. end if;
  12362. select many udts related by self-&gt;DOMD[R402];
  12363. for each udt in udts
  12364. unrelate self from udt across R402;
  12365. generate DOMD2:destroy() to udt;
  12366. end for;
  12367. </programlisting></para>
  12368. </section>
  12369. </section>
  12370. </section>
  12371. <section>
  12372. <title>Class Activities</title>
  12373. <subtitle></subtitle>
  12374. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  12375. <section>
  12376. <title>Instance State Machine Actions</title>
  12377. <subtitle></subtitle>
  12378. <section>
  12379. <title>Composite State[1]:Creating</title>
  12380. <subtitle></subtitle>
  12381. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12382. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12383. <para><programlisting>// Only create if type doesn&apos;&apos;t exist
  12384. select many comps from instances of COMP;
  12385. if (cardinality comps == 1)
  12386. create object instance type of TYPE;
  12387. create object instance core of CORE;
  12388. relate type to core across R401;
  12389. type.name = &quot;composite&quot;;
  12390. core.type = data_t::COMPOSITE;
  12391. relate core to self across R403;
  12392. self.generateSupportedOperators();
  12393. else
  12394. LOG::LogFailure(message:&quot;Multiple creation of COMP attempted!&quot;);
  12395. generate COMP2:destroy to self;
  12396. end if;
  12397. </programlisting></para>
  12398. </section>
  12399. <section>
  12400. <title>Composite State[2]:Destroying</title>
  12401. <subtitle></subtitle>
  12402. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12403. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12404. <para><programlisting>select one core related by self-&gt;CORE[R403];
  12405. if (not empty core)
  12406. core.destroy();
  12407. unrelate core from self across R403;
  12408. delete object instance core;
  12409. end if;
  12410. </programlisting></para>
  12411. </section>
  12412. </section>
  12413. <section>
  12414. <title>Class Operations</title>
  12415. <subtitle></subtitle>
  12416. <section>
  12417. <title>Type:Composite: generateSupportedOperators</title>
  12418. <subtitle></subtitle>
  12419. <para><literallayout xml:space='preserve' class='monospaced'>The operations permitted using data types based on composite are limited to
  12420. equality comparison and assignment to another composite type.</literallayout></para>
  12421. <para><programlisting>generate TYOP_A1:create(name:&quot;assignment&quot;, symbol:&quot;:=&quot;, type:&quot;composite&quot;, result:&quot;composite&quot;) to TYOP class;
  12422. generate TYOP_A1:create(name:&quot;equal&quot;, symbol:&quot;=&quot;, type:&quot;composite&quot;, result:&quot;boolean&quot;) to TYOP class;
  12423. generate TYOP_A1:create(name:&quot;not equal&quot;, symbol:&quot;!=&quot;, type:&quot;composite&quot;, result:&quot;boolean&quot;) to TYOP class;
  12424. </programlisting></para>
  12425. </section>
  12426. </section>
  12427. </section>
  12428. <section>
  12429. <title>Class Activities</title>
  12430. <subtitle></subtitle>
  12431. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  12432. <section>
  12433. <title>Instance State Machine Actions</title>
  12434. <subtitle></subtitle>
  12435. <section>
  12436. <title>Boolean State[1]:Creating</title>
  12437. <subtitle></subtitle>
  12438. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12439. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12440. <para><programlisting>// Only create if type doesn&apos;&apos;t exist
  12441. select many bools from instances of BOOL;
  12442. if (cardinality bools == 1)
  12443. create object instance type of TYPE;
  12444. create object instance core of CORE;
  12445. relate type to core across R401;
  12446. relate core to self across R403;
  12447. type.name = &quot;boolean&quot;;
  12448. core.type = data_t::BOOLEAN;
  12449. self.generateSupportedOperators();
  12450. else
  12451. LOG::LogFailure(message:&quot;Multiple creation of BOOL attempted!&quot;);
  12452. generate BOOL2:destroy to self;
  12453. end if;
  12454. </programlisting></para>
  12455. </section>
  12456. <section>
  12457. <title>Boolean State[2]:Destroying</title>
  12458. <subtitle></subtitle>
  12459. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12460. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12461. <para><programlisting>select one core related by self-&gt;CORE[R403];
  12462. if (not empty core)
  12463. core.destroy();
  12464. unrelate core from self across R403;
  12465. delete object instance core;
  12466. end if;
  12467. </programlisting></para>
  12468. </section>
  12469. </section>
  12470. <section>
  12471. <title>Class Operations</title>
  12472. <subtitle></subtitle>
  12473. <section>
  12474. <title>Type:Boolean: generateSupportedOperators</title>
  12475. <subtitle></subtitle>
  12476. <para><literallayout xml:space='preserve' class='monospaced'>&quot;The operations permitted for data elements based on these base types include
  12477. the comparison operations, represented as = (identical in value) and != (not
  12478. identical in value). The result of either comparison yields a data element of
  12479. base type boolean. The logical operations, not, and, &amp; or, are defined in the
  12480. standard way.&quot; [OOAData]</literallayout></para>
  12481. <para><programlisting>generate TYOP_A1:create(name:&quot;assignment&quot;, symbol:&quot;:=&quot;, type:&quot;boolean&quot;, result:&quot;boolean&quot;) to TYOP class;
  12482. generate TYOP_A1:create(name:&quot;equal&quot;, symbol:&quot;=&quot;, type:&quot;boolean&quot;, result:&quot;boolean&quot;) to TYOP class;
  12483. generate TYOP_A1:create(name:&quot;not equal&quot;, symbol:&quot;!=&quot;, type:&quot;boolean&quot;, result:&quot;boolean&quot;) to TYOP class;
  12484. generate TYOP_A1:create(name:&quot;logical not&quot;, symbol:&quot;not&quot;, type:&quot;boolean&quot;, result:&quot;boolean&quot;) to TYOP class;
  12485. generate TYOP_A1:create(name:&quot;logical and&quot;, symbol:&quot;and&quot;, type:&quot;boolean&quot;, result:&quot;boolean&quot;) to TYOP class;
  12486. generate TYOP_A1:create(name:&quot;logical or&quot;, symbol:&quot;or&quot;, type:&quot;boolean&quot;, result:&quot;boolean&quot;) to TYOP class;
  12487. </programlisting></para>
  12488. </section>
  12489. </section>
  12490. </section>
  12491. <section>
  12492. <title>Class Activities</title>
  12493. <subtitle></subtitle>
  12494. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  12495. <section>
  12496. <title>Instance State Machine Actions</title>
  12497. <subtitle></subtitle>
  12498. <section>
  12499. <title>Arbitrary State[1]:Creating</title>
  12500. <subtitle></subtitle>
  12501. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12502. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12503. <para><programlisting>// Only create if type doesn&apos;&apos;t exist
  12504. select many arids from instances of ARID;
  12505. if (cardinality arids == 1)
  12506. create object instance type of TYPE;
  12507. create object instance core of CORE;
  12508. relate type to core across R401;
  12509. type.name = &quot;arbitrary&quot;;
  12510. core.type = data_t::ARBITRARY;
  12511. relate core to self across R403;
  12512. self.generateSupportedOperators();
  12513. else
  12514. LOG::LogFailure(message:&quot;Multiple creation of ARID attempted!&quot;);
  12515. generate ARID2:destroy to self;
  12516. end if;
  12517. </programlisting></para>
  12518. </section>
  12519. <section>
  12520. <title>Arbitrary State[2]:Destroying</title>
  12521. <subtitle></subtitle>
  12522. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12523. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12524. <para><programlisting>select one core related by self-&gt;CORE[R403];
  12525. if (not empty core)
  12526. core.destroy();
  12527. unrelate core from self across R403;
  12528. delete object instance core;
  12529. end if;
  12530. </programlisting></para>
  12531. </section>
  12532. </section>
  12533. <section>
  12534. <title>Class Operations</title>
  12535. <subtitle></subtitle>
  12536. <section>
  12537. <title>Type:Arbitrary: generateSupportedOperators</title>
  12538. <subtitle></subtitle>
  12539. <para><literallayout xml:space='preserve' class='monospaced'>[OOAData] prescribes no operators for arbitrary. Arbitrary is treated like a
  12540. composite, where the internals are unknown, so the only valid operations
  12541. permitted using data types based on arbitrary are limited to equality
  12542. comparison and assignment to another arbitrary type.</literallayout></para>
  12543. <para><programlisting>generate TYOP_A1:create(name:&quot;assignment&quot;, symbol:&quot;:=&quot;, type:&quot;arbitrary&quot;, result:&quot;boolean&quot;) to TYOP class;
  12544. generate TYOP_A1:create(name:&quot;equal&quot;, symbol:&quot;=&quot;, type:&quot;arbitrary&quot;, result:&quot;boolean&quot;) to TYOP class;
  12545. generate TYOP_A1:create(name:&quot;not equal&quot;, symbol:&quot;!=&quot;, type:&quot;arbitrary&quot;, result:&quot;boolean&quot;) to TYOP class;
  12546. </programlisting></para>
  12547. </section>
  12548. </section>
  12549. </section>
  12550. <section>
  12551. <title>Class Activities</title>
  12552. <subtitle></subtitle>
  12553. <para><literallayout xml:space='preserve' class='monospaced'>Here are listings of all of the activies in the class and its state machine(s).</literallayout></para>
  12554. <section>
  12555. <title>Instance State Machine Actions</title>
  12556. <subtitle></subtitle>
  12557. <section>
  12558. <title>Accessor Reference State[1]:Creating</title>
  12559. <subtitle></subtitle>
  12560. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12561. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12562. <para><programlisting>// Only create if type doesn&apos;&apos;t exist
  12563. select many arefs from instances of AREF;
  12564. if (cardinality arefs == 1)
  12565. create object instance type of TYPE;
  12566. create object instance core of CORE;
  12567. relate type to core across R401;
  12568. type.name = &quot;accessor reference&quot;;
  12569. core.type = data_t::ACCESSOR_REFERENCE;
  12570. relate core to self across R403;
  12571. self.generateSupportedOperators();
  12572. else
  12573. LOG::LogFailure(message:&quot;Multiple creation of type AREF attempted!&quot;);
  12574. generate AREF2:destroy to self;
  12575. end if;
  12576. </programlisting></para>
  12577. </section>
  12578. <section>
  12579. <title>Accessor Reference State[2]:Destroying</title>
  12580. <subtitle></subtitle>
  12581. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12582. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12583. <para><programlisting>select one core related by self-&gt;CORE[R403];
  12584. if (not empty core)
  12585. core.destroy();
  12586. unrelate core from self across R403;
  12587. delete object instance core;
  12588. end if;
  12589. </programlisting></para>
  12590. </section>
  12591. </section>
  12592. <section>
  12593. <title>Class Operations</title>
  12594. <subtitle></subtitle>
  12595. <section>
  12596. <title>Type:Accessor Reference: generateSupportedOperators</title>
  12597. <subtitle></subtitle>
  12598. <para><literallayout xml:space='preserve' class='monospaced'>The operations permitted for instance reference data types are
  12599. - the comparisons = and != (identical and not identical in value)
  12600. - the set existence checks of empty and not empty.</literallayout></para>
  12601. <para><programlisting>generate TYOP_A1:create(name:&quot;assignment&quot;, symbol:&quot;:=&quot;, type:&quot;accessor reference&quot;, result:&quot;accessor reference&quot;) to TYOP class;
  12602. </programlisting></para>
  12603. </section>
  12604. </section>
  12605. </section>
  12606. </section>
  12607. <section>
  12608. <title>Associations</title>
  12609. <subtitle>Associations</subtitle>
  12610. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  12611. <title>Type</title>
  12612. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  12613. <thead>
  12614. <row>
  12615. <entry>
  12616. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12617. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  12618. </imageobject></mediaobject>
  12619. </literallayout></para>
  12620. </entry>
  12621. <entry>
  12622. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  12623. </entry>
  12624. <entry>
  12625. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  12626. </entry>
  12627. </row>
  12628. </thead>
  12629. <tbody>
  12630. <row>
  12631. <entry>
  12632. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12633. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  12634. </imageobject></mediaobject>
  12635. </literallayout></para>
  12636. </entry>
  12637. <entry>
  12638. <para><literallayout xml:space='preserve' class='monospaced'>401</literallayout></para>
  12639. </entry>
  12640. <entry>
  12641. <para><literallayout xml:space='preserve' class='monospaced'>Data types in OOA are all based on a set of core data types defined by the
  12642. Shlaer-Mellor method, but the method allows the types to be further constrained
  12643. to meet the requirements of the domain being modeled.</literallayout></para>
  12644. </entry>
  12645. </row>
  12646. <row>
  12647. <entry>
  12648. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12649. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  12650. </imageobject></mediaobject>
  12651. </literallayout></para>
  12652. </entry>
  12653. <entry>
  12654. <para><literallayout xml:space='preserve' class='monospaced'>402</literallayout></para>
  12655. </entry>
  12656. <entry>
  12657. <para><literallayout xml:space='preserve' class='monospaced'>A domain data type is based on one of the core data types. A domain data type
  12658. is used to further constrain the core types to meet the requirements of the
  12659. domain more closely.</literallayout></para>
  12660. </entry>
  12661. </row>
  12662. <row>
  12663. <entry>
  12664. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12665. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  12666. </imageobject></mediaobject>
  12667. </literallayout></para>
  12668. </entry>
  12669. <entry>
  12670. <para><literallayout xml:space='preserve' class='monospaced'>403</literallayout></para>
  12671. </entry>
  12672. <entry>
  12673. <para><literallayout xml:space='preserve' class='monospaced'>The core data type is subtyped into all the supported core types defined by the
  12674. Shlaer-Mellor method.</literallayout></para>
  12675. </entry>
  12676. </row>
  12677. <row>
  12678. <entry>
  12679. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12680. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  12681. </imageobject></mediaobject>
  12682. </literallayout></para>
  12683. </entry>
  12684. <entry>
  12685. <para><literallayout xml:space='preserve' class='monospaced'>406</literallayout></para>
  12686. </entry>
  12687. <entry>
  12688. <para><literallayout xml:space='preserve' class='monospaced'>&quot;An Operator has no utility unless it is relevant to at least one Type. The
  12689. same Operator may be used with many Types making it polymorphic.
  12690. A Type has no utility without at least one Operator. Since assignment and
  12691. equality must be defined for all Types, there should at the very least be two
  12692. Operators defined for any given Type.&quot; [miUML]
  12693. A Domain Type can have its own defined operators, or it can just make use of
  12694. its associated Core Type operators, so &quot;Type&quot; in the second paragraph quoted
  12695. above should be read as &quot;Core Type&quot; with respect to this metamodel. This makes
  12696. the relationship conditional on the Operator end.</literallayout></para>
  12697. </entry>
  12698. </row>
  12699. <row>
  12700. <entry>
  12701. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12702. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  12703. </imageobject></mediaobject>
  12704. </literallayout></para>
  12705. </entry>
  12706. <entry>
  12707. <para><literallayout xml:space='preserve' class='monospaced'>412</literallayout></para>
  12708. </entry>
  12709. <entry>
  12710. <para><literallayout xml:space='preserve' class='monospaced'>A domain type is defined and unique within a modeled domain. The modeled domain
  12711. encapsulates the definition of the domain type, such that the domain type can
  12712. only be used within the modeled domain.</literallayout></para>
  12713. </entry>
  12714. </row>
  12715. <row>
  12716. <entry>
  12717. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12718. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  12719. </imageobject></mediaobject>
  12720. </literallayout></para>
  12721. </entry>
  12722. <entry>
  12723. <para><literallayout xml:space='preserve' class='monospaced'>415</literallayout></para>
  12724. </entry>
  12725. <entry>
  12726. <para><literallayout xml:space='preserve' class='monospaced'>A typed operator will result in a type that can differ from it&apos;&apos;s assigned type.
  12727. A type can be a result type for many typed operators.</literallayout></para>
  12728. </entry>
  12729. </row>
  12730. <row>
  12731. <entry>
  12732. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12733. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  12734. </imageobject></mediaobject>
  12735. </literallayout></para>
  12736. </entry>
  12737. <entry>
  12738. <para><literallayout xml:space='preserve' class='monospaced'>416</literallayout></para>
  12739. </entry>
  12740. <entry>
  12741. <para><literallayout xml:space='preserve' class='monospaced'>Enumeration definitions are typed as an enumeration, but the enumeration type
  12742. can exist without any enumeration definitions.</literallayout></para>
  12743. </entry>
  12744. </row>
  12745. <row>
  12746. <entry>
  12747. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12748. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  12749. </imageobject></mediaobject>
  12750. </literallayout></para>
  12751. </entry>
  12752. <entry>
  12753. <para><literallayout xml:space='preserve' class='monospaced'>417</literallayout></para>
  12754. </entry>
  12755. <entry>
  12756. <para><literallayout xml:space='preserve' class='monospaced'>An Instance Reference types an Object Instance used as a value. Many Object
  12757. Instances can be typed as Instance Reference.</literallayout></para>
  12758. </entry>
  12759. </row>
  12760. <row>
  12761. <entry>
  12762. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12763. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  12764. </imageobject></mediaobject>
  12765. </literallayout></para>
  12766. </entry>
  12767. <entry>
  12768. <para><literallayout xml:space='preserve' class='monospaced'>419</literallayout></para>
  12769. </entry>
  12770. <entry>
  12771. <para><literallayout xml:space='preserve' class='monospaced'>A core type always has at least one operator defined for it, but an operator
  12772. might be defined for a domain type instead of a core type.
  12773. The assignment operator would be good to establish this relationship, as all
  12774. types have an assignment operator. i.e., what good is a datatype that can&apos;&apos;t be
  12775. assigned?</literallayout></para>
  12776. </entry>
  12777. </row>
  12778. <row>
  12779. <entry>
  12780. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12781. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  12782. </imageobject></mediaobject>
  12783. </literallayout></para>
  12784. </entry>
  12785. <entry>
  12786. <para><literallayout xml:space='preserve' class='monospaced'>420</literallayout></para>
  12787. </entry>
  12788. <entry>
  12789. <para><literallayout xml:space='preserve' class='monospaced'>An enumeration value is assigned to one enumeration definition, and an
  12790. enumeration has one or more enumeration values.
  12791. </literallayout></para>
  12792. </entry>
  12793. </row>
  12794. <row>
  12795. <entry>
  12796. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12797. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  12798. </imageobject></mediaobject>
  12799. </literallayout></para>
  12800. </entry>
  12801. <entry>
  12802. <para><literallayout xml:space='preserve' class='monospaced'>421</literallayout></para>
  12803. </entry>
  12804. <entry>
  12805. <para><literallayout xml:space='preserve' class='monospaced'>A Relationship Instance Reference types a Relationship Instance used as a value.
  12806. Many Relationship Instances can be typed as a Relationship Instance Reference.
  12807. </literallayout></para>
  12808. </entry>
  12809. </row>
  12810. <row>
  12811. <entry>
  12812. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12813. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  12814. </imageobject></mediaobject>
  12815. </literallayout></para>
  12816. </entry>
  12817. <entry>
  12818. <para><literallayout xml:space='preserve' class='monospaced'>422</literallayout></para>
  12819. </entry>
  12820. <entry>
  12821. <para><literallayout xml:space='preserve' class='monospaced'>An Accessor Reference types an Accessor Instance used as a value. Many Accessor
  12822. Instances can be typed as Accessor Reference.
  12823. </literallayout></para>
  12824. </entry>
  12825. </row>
  12826. <row>
  12827. <entry>
  12828. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12829. <imagedata fileref='images/Association.gif' scalefit='1' width='100%'/>
  12830. </imageobject></mediaobject>
  12831. </literallayout></para>
  12832. </entry>
  12833. <entry>
  12834. <para><literallayout xml:space='preserve' class='monospaced'>423</literallayout></para>
  12835. </entry>
  12836. <entry>
  12837. <para><literallayout xml:space='preserve' class='monospaced'>A Keyword types a Keyword Instance used as a value.
  12838. Many Keyword Instances can be typed as a Keyword.
  12839. </literallayout></para>
  12840. </entry>
  12841. </row>
  12842. </tbody>
  12843. </tgroup>
  12844. </table>
  12845. </literallayout></para>
  12846. </section>
  12847. <section>
  12848. <title>Functions</title>
  12849. <subtitle>Functions</subtitle>
  12850. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  12851. <title>Type</title>
  12852. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  12853. <thead>
  12854. <row>
  12855. <entry>
  12856. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12857. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  12858. </imageobject></mediaobject>
  12859. </literallayout></para>
  12860. </entry>
  12861. <entry>
  12862. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  12863. </entry>
  12864. <entry>
  12865. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  12866. </entry>
  12867. </row>
  12868. </thead>
  12869. <tbody>
  12870. <row>
  12871. <entry>
  12872. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12873. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  12874. </imageobject></mediaobject>
  12875. </literallayout></para>
  12876. </entry>
  12877. <entry>
  12878. <para><literallayout xml:space='preserve' class='monospaced'>createCoreTypes()</literallayout></para>
  12879. </entry>
  12880. <entry>
  12881. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12882. </entry>
  12883. </row>
  12884. </tbody>
  12885. </tgroup>
  12886. </table>
  12887. </literallayout></para>
  12888. <section>
  12889. <title>Function Activities</title>
  12890. <subtitle></subtitle>
  12891. <section>
  12892. <title>createCoreTypes</title>
  12893. <subtitle></subtitle>
  12894. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  12895. <para><programlisting>// Each core type is responsible for it&apos;&apos;s own creation.
  12896. generate BOOL1:create() to BOOL creator;
  12897. generate COMP1:create() to COMP creator;
  12898. generate DURD1:create() to DURD creator;
  12899. generate TIMD1:create() to TIMD creator;
  12900. generate NUMI1:create() to NUMI creator;
  12901. generate ARID1:create() to ARID creator;
  12902. generate ENUM1:create() to ENUM creator;
  12903. generate ORDD1:create() to ORDD creator;
  12904. generate SYMD1:create() to SYMD creator;
  12905. generate IREF1:create() to IREF creator;
  12906. generate AREF1:create() to AREF creator;
  12907. </programlisting></para>
  12908. </section>
  12909. </section>
  12910. </section>
  12911. </section>
  12912. <section>
  12913. <title>Outgoing Bridges</title>
  12914. <subtitle>Package</subtitle>
  12915. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-OutgoingBridges-PackageDiagram-figure'>
  12916. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-OutgoingBridges-PackageDiagram-figure-title'>Outgoing Bridges Package Diagram</title>
  12917. <mediaobject><imageobject>
  12918. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Outgoing Bridges-Package Diagram.png' scalefit='1' width='100%'/>
  12919. </imageobject></mediaobject>
  12920. </figure>
  12921. </literallayout></para>
  12922. </section>
  12923. <section>
  12924. <title>Incoming Bridges</title>
  12925. <subtitle>Package</subtitle>
  12926. <para><literallayout xml:space='preserve' class='monospaced'>Bridges into the metamodel domain.<figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-IncomingBridges-PackageDiagram-figure'>
  12927. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-IncomingBridges-PackageDiagram-figure-title'>Incoming Bridges Package Diagram</title>
  12928. <mediaobject><imageobject>
  12929. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Incoming Bridges-Package Diagram.png' scalefit='1' width='100%'/>
  12930. </imageobject></mediaobject>
  12931. </figure>
  12932. </literallayout></para>
  12933. <section>
  12934. <title>Incoming Bridges Packages</title>
  12935. <subtitle></subtitle>
  12936. <para><literallayout xml:space='preserve' class='monospaced'>Rendered here are the contained package diagrams.</literallayout></para>
  12937. <section>
  12938. <title>Process Model Bridges</title>
  12939. <subtitle>Package</subtitle>
  12940. <para><literallayout xml:space='preserve' class='monospaced'>Incoming bridges for creating model elements of the Process Model subsystem as
  12941. metamodel instances.
  12942. <figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-IncomingBridges-ProcessModelBridges-PackageDiagram-figure'>
  12943. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-IncomingBridges-ProcessModelBridges-PackageDiagram-figure-title'>Process Model Bridges Package Diagram</title>
  12944. <mediaobject><imageobject>
  12945. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Incoming Bridges-Process Model Bridges-Package Diagram.png' scalefit='1' width='100%'/>
  12946. </imageobject></mediaobject>
  12947. </figure>
  12948. </literallayout></para>
  12949. <section>
  12950. <title>Functions</title>
  12951. <subtitle>Functions</subtitle>
  12952. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  12953. <title>Process Model Bridges</title>
  12954. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  12955. <thead>
  12956. <row>
  12957. <entry>
  12958. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12959. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  12960. </imageobject></mediaobject>
  12961. </literallayout></para>
  12962. </entry>
  12963. <entry>
  12964. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  12965. </entry>
  12966. <entry>
  12967. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  12968. </entry>
  12969. </row>
  12970. </thead>
  12971. <tbody>
  12972. <row>
  12973. <entry>
  12974. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12975. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  12976. </imageobject></mediaobject>
  12977. </literallayout></para>
  12978. </entry>
  12979. <entry>
  12980. <para><literallayout xml:space='preserve' class='monospaced'>addActionToBridge(domainbridge_name)</literallayout></para>
  12981. </entry>
  12982. <entry>
  12983. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty process model to prepare it for addition of process modeling
  12984. elements.</literallayout></para>
  12985. </entry>
  12986. </row>
  12987. <row>
  12988. <entry>
  12989. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  12990. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  12991. </imageobject></mediaobject>
  12992. </literallayout></para>
  12993. </entry>
  12994. <entry>
  12995. <para><literallayout xml:space='preserve' class='monospaced'>addActionToDerivedAttribute(domainobjectattribute)</literallayout></para>
  12996. </entry>
  12997. <entry>
  12998. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty process model to prepare it for addition of process modeling
  12999. elements.</literallayout></para>
  13000. </entry>
  13001. </row>
  13002. <row>
  13003. <entry>
  13004. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13005. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13006. </imageobject></mediaobject>
  13007. </literallayout></para>
  13008. </entry>
  13009. <entry>
  13010. <para><literallayout xml:space='preserve' class='monospaced'>addActionToMethod(domainobjectmethod)</literallayout></para>
  13011. </entry>
  13012. <entry>
  13013. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty process model to prepare it for addition of process modeling
  13014. elements.
  13015. </literallayout></para>
  13016. </entry>
  13017. </row>
  13018. <row>
  13019. <entry>
  13020. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13021. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13022. </imageobject></mediaobject>
  13023. </literallayout></para>
  13024. </entry>
  13025. <entry>
  13026. <para><literallayout xml:space='preserve' class='monospaced'>addActionToState(domainobjectstate)</literallayout></para>
  13027. </entry>
  13028. <entry>
  13029. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty process model to prepare it for addition of process modeling
  13030. elements.
  13031. </literallayout></para>
  13032. </entry>
  13033. </row>
  13034. <row>
  13035. <entry>
  13036. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13037. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13038. </imageobject></mediaobject>
  13039. </literallayout></para>
  13040. </entry>
  13041. <entry>
  13042. <para><literallayout xml:space='preserve' class='monospaced'>addAttributeToOperand(domainactionIdprocessPositionexpressionPositionobjectattributeleftHandinstance)</literallayout></para>
  13043. </entry>
  13044. <entry>
  13045. <para><literallayout xml:space='preserve' class='monospaced'>Add an attribute of an object instance, already added to the process model, to
  13046. the left-hand or right-hand operand of the specified expression.</literallayout></para>
  13047. </entry>
  13048. </row>
  13049. <row>
  13050. <entry>
  13051. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13052. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13053. </imageobject></mediaobject>
  13054. </literallayout></para>
  13055. </entry>
  13056. <entry>
  13057. <para><literallayout xml:space='preserve' class='monospaced'>addEquationToProcess(domainactionIdordinalPosition)</literallayout></para>
  13058. </entry>
  13059. <entry>
  13060. <para><literallayout xml:space='preserve' class='monospaced'>Add an equation without expressions to the process specified within the action
  13061. specified.</literallayout></para>
  13062. </entry>
  13063. </row>
  13064. <row>
  13065. <entry>
  13066. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13067. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13068. </imageobject></mediaobject>
  13069. </literallayout></para>
  13070. </entry>
  13071. <entry>
  13072. <para><literallayout xml:space='preserve' class='monospaced'>addExpressionToEquation(domainactionIdprocessPositionordinalPosition)</literallayout></para>
  13073. </entry>
  13074. <entry>
  13075. <para><literallayout xml:space='preserve' class='monospaced'>Add an expression, without operands, operation, or outcome, at the position
  13076. specified to the equation of the process specified in the action specified.</literallayout></para>
  13077. </entry>
  13078. </row>
  13079. <row>
  13080. <entry>
  13081. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13082. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13083. </imageobject></mediaobject>
  13084. </literallayout></para>
  13085. </entry>
  13086. <entry>
  13087. <para><literallayout xml:space='preserve' class='monospaced'>addIterationToAction(domainactionIdordinalPositionclosurePosition)</literallayout></para>
  13088. </entry>
  13089. <entry>
  13090. <para><literallayout xml:space='preserve' class='monospaced'>Add an iteration process to the specified action at the specified ordinal
  13091. position.</literallayout></para>
  13092. </entry>
  13093. </row>
  13094. <row>
  13095. <entry>
  13096. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13097. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13098. </imageobject></mediaobject>
  13099. </literallayout></para>
  13100. </entry>
  13101. <entry>
  13102. <para><literallayout xml:space='preserve' class='monospaced'>addLoopToAction(domainactionIdordinalPositionclosurePosition)</literallayout></para>
  13103. </entry>
  13104. <entry>
  13105. <para><literallayout xml:space='preserve' class='monospaced'>Add a loop process to the specified action at the specified ordinal position.</literallayout></para>
  13106. </entry>
  13107. </row>
  13108. <row>
  13109. <entry>
  13110. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13111. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13112. </imageobject></mediaobject>
  13113. </literallayout></para>
  13114. </entry>
  13115. <entry>
  13116. <para><literallayout xml:space='preserve' class='monospaced'>addObjectInstanceToOperand(domainactionIdprocessPositionexpressionPositionobject)</literallayout></para>
  13117. </entry>
  13118. <entry>
  13119. <para><literallayout xml:space='preserve' class='monospaced'>Add an object to the right-hand operand of the specified expression as an
  13120. instance. The only valid use of this is when you are creating an object
  13121. instance for assignment to a variable for later use in the process model, which
  13122. is why it is always the right-hand operand.</literallayout></para>
  13123. </entry>
  13124. </row>
  13125. <row>
  13126. <entry>
  13127. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13128. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13129. </imageobject></mediaobject>
  13130. </literallayout></para>
  13131. </entry>
  13132. <entry>
  13133. <para><literallayout xml:space='preserve' class='monospaced'>addOperandToExpression(domainactionIdprocessPositionexpressionPositionleftHand)</literallayout></para>
  13134. </entry>
  13135. <entry>
  13136. <para><literallayout xml:space='preserve' class='monospaced'>Add a left-hand or right-hand operand to the expression. The order of addition
  13137. to the expression is left-hand operand, right-hand operand, and then operator,
  13138. and this is strictly enforced.</literallayout></para>
  13139. </entry>
  13140. </row>
  13141. <row>
  13142. <entry>
  13143. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13144. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13145. </imageobject></mediaobject>
  13146. </literallayout></para>
  13147. </entry>
  13148. <entry>
  13149. <para><literallayout xml:space='preserve' class='monospaced'>addPathEvaluationToAction(domainactionIdordinalPositionclosurePosition)</literallayout></para>
  13150. </entry>
  13151. <entry>
  13152. <para><literallayout xml:space='preserve' class='monospaced'>Add a path evaluation process to the specified action at the specified ordinal
  13153. position. This creates the path evaluation specifier and opens the first path
  13154. container.</literallayout></para>
  13155. </entry>
  13156. </row>
  13157. <row>
  13158. <entry>
  13159. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13160. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13161. </imageobject></mediaobject>
  13162. </literallayout></para>
  13163. </entry>
  13164. <entry>
  13165. <para><literallayout xml:space='preserve' class='monospaced'>addReferentialAttributeToOperand(domainactionIdprocessPositionexpressionPositionleftHandobjectattributeinstance)</literallayout></para>
  13166. </entry>
  13167. <entry>
  13168. <para><literallayout xml:space='preserve' class='monospaced'>Add a referential attribute of an object instance, already added to the process
  13169. model, to the left-hand or right-hand operand of the specified expression.
  13170. </literallayout></para>
  13171. </entry>
  13172. </row>
  13173. <row>
  13174. <entry>
  13175. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13176. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13177. </imageobject></mediaobject>
  13178. </literallayout></para>
  13179. </entry>
  13180. <entry>
  13181. <para><literallayout xml:space='preserve' class='monospaced'>addStatementToAction(domainactionIdordinalPosition)</literallayout></para>
  13182. </entry>
  13183. <entry>
  13184. <para><literallayout xml:space='preserve' class='monospaced'>Add a Statement Process to the specified action at the specified ordinal
  13185. position.</literallayout></para>
  13186. </entry>
  13187. </row>
  13188. <row>
  13189. <entry>
  13190. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13191. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13192. </imageobject></mediaobject>
  13193. </literallayout></para>
  13194. </entry>
  13195. <entry>
  13196. <para><literallayout xml:space='preserve' class='monospaced'>getActionOfBridge(domainbridge_name)</literallayout></para>
  13197. </entry>
  13198. <entry>
  13199. <para><literallayout xml:space='preserve' class='monospaced'>Returns the identifier of the action instance associated with the specified
  13200. element. Will return an invalid identifier if the model isn&apos;&apos;t correct for this
  13201. action.</literallayout></para>
  13202. </entry>
  13203. </row>
  13204. <row>
  13205. <entry>
  13206. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13207. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13208. </imageobject></mediaobject>
  13209. </literallayout></para>
  13210. </entry>
  13211. <entry>
  13212. <para><literallayout xml:space='preserve' class='monospaced'>getActionOfDerivedAttribute(domainobjectattribute)</literallayout></para>
  13213. </entry>
  13214. <entry>
  13215. <para><literallayout xml:space='preserve' class='monospaced'>Returns the identifier of the action instance associated with the specified
  13216. element. Will return an invalid identifier if the model isn&apos;&apos;t correct for this
  13217. action.</literallayout></para>
  13218. </entry>
  13219. </row>
  13220. <row>
  13221. <entry>
  13222. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13223. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13224. </imageobject></mediaobject>
  13225. </literallayout></para>
  13226. </entry>
  13227. <entry>
  13228. <para><literallayout xml:space='preserve' class='monospaced'>getActionOfMethod(domainobjectmethod)</literallayout></para>
  13229. </entry>
  13230. <entry>
  13231. <para><literallayout xml:space='preserve' class='monospaced'>Returns the identifier of the action instance associated with the specified
  13232. element. Will return an invalid identifier if the model isn&apos;&apos;t correct for this
  13233. action.</literallayout></para>
  13234. </entry>
  13235. </row>
  13236. <row>
  13237. <entry>
  13238. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13239. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13240. </imageobject></mediaobject>
  13241. </literallayout></para>
  13242. </entry>
  13243. <entry>
  13244. <para><literallayout xml:space='preserve' class='monospaced'>getActionOfState(domainobjectstate)</literallayout></para>
  13245. </entry>
  13246. <entry>
  13247. <para><literallayout xml:space='preserve' class='monospaced'>Returns the identifier of the action instance associated with the specified
  13248. element. Will return an invalid identifier if the model isn&apos;&apos;t correct for this
  13249. action.</literallayout></para>
  13250. </entry>
  13251. </row>
  13252. <row>
  13253. <entry>
  13254. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13255. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13256. </imageobject></mediaobject>
  13257. </literallayout></para>
  13258. </entry>
  13259. <entry>
  13260. <para><literallayout xml:space='preserve' class='monospaced'>addEnumerationValueToOperand(domainactionIdprocessPositionexpressionPositionleftHandenumerationNamevalueName)</literallayout></para>
  13261. </entry>
  13262. <entry>
  13263. <para><literallayout xml:space='preserve' class='monospaced'>Add an enumeration value to the left or right hand operand of an expression.</literallayout></para>
  13264. </entry>
  13265. </row>
  13266. <row>
  13267. <entry>
  13268. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13269. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13270. </imageobject></mediaobject>
  13271. </literallayout></para>
  13272. </entry>
  13273. <entry>
  13274. <para><literallayout xml:space='preserve' class='monospaced'>addVariableToOperand(domainactionIdprocessPositionexpressionPositionleftHandnametypeName)</literallayout></para>
  13275. </entry>
  13276. <entry>
  13277. <para><literallayout xml:space='preserve' class='monospaced'>Add a transient variable to the left or right hand operand of an expression.
  13278. </literallayout></para>
  13279. </entry>
  13280. </row>
  13281. <row>
  13282. <entry>
  13283. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13284. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13285. </imageobject></mediaobject>
  13286. </literallayout></para>
  13287. </entry>
  13288. <entry>
  13289. <para><literallayout xml:space='preserve' class='monospaced'>addConstantToOperand(domainactionIdprocessPositionexpressionPositionleftHandnametypeName)</literallayout></para>
  13290. </entry>
  13291. <entry>
  13292. <para><literallayout xml:space='preserve' class='monospaced'>Add a constant value to the left or right hand operand of an expression.
  13293. As the actual value isn&apos;&apos;t that interesting to the metamodel, the parameter,
  13294. name, is used to allow process model construction within the constraints the
  13295. metamodel. The value of name is symbolic representation of the value is akin to
  13296. using defines in C to represent &quot;magic numbers&quot;.
  13297. </literallayout></para>
  13298. </entry>
  13299. </row>
  13300. <row>
  13301. <entry>
  13302. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13303. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13304. </imageobject></mediaobject>
  13305. </literallayout></para>
  13306. </entry>
  13307. <entry>
  13308. <para><literallayout xml:space='preserve' class='monospaced'>addReturnValueToOperand(domainactionIdprocessPositionexpressionPositionleftHandname)</literallayout></para>
  13309. </entry>
  13310. <entry>
  13311. <para><literallayout xml:space='preserve' class='monospaced'>Add a return value to the left or right operand of an expression. This bridge
  13312. will be called when an accessor is part of an equation. e.g., a = a + sum(b, c)
  13313. If the return value is on the right hand side of an assignment, it can be
  13314. the return from the current process model.
  13315. This call will be used whenever any synchronous accessor (synchronous
  13316. bridge, object method, or attribute action) is added to a process model. </literallayout></para>
  13317. </entry>
  13318. </row>
  13319. <row>
  13320. <entry>
  13321. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13322. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13323. </imageobject></mediaobject>
  13324. </literallayout></para>
  13325. </entry>
  13326. <entry>
  13327. <para><literallayout xml:space='preserve' class='monospaced'>addBridgeAccessorToProcess(domainactionIdordinalPositionname)</literallayout></para>
  13328. </entry>
  13329. <entry>
  13330. <para><literallayout xml:space='preserve' class='monospaced'>Adds an asynchronous bridge call to the process specified in the action
  13331. specified.
  13332. A synchronous bridge call will be added as a return value added to an
  13333. operand.</literallayout></para>
  13334. </entry>
  13335. </row>
  13336. <row>
  13337. <entry>
  13338. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13339. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13340. </imageobject></mediaobject>
  13341. </literallayout></para>
  13342. </entry>
  13343. <entry>
  13344. <para><literallayout xml:space='preserve' class='monospaced'>addEventAccessorToProcess(domainactionIdordinalPositionnameobject)</literallayout></para>
  13345. </entry>
  13346. <entry>
  13347. <para><literallayout xml:space='preserve' class='monospaced'>Adds an event accessor to the process specified in the action specified.
  13348. </literallayout></para>
  13349. </entry>
  13350. </row>
  13351. <row>
  13352. <entry>
  13353. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13354. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13355. </imageobject></mediaobject>
  13356. </literallayout></para>
  13357. </entry>
  13358. <entry>
  13359. <para><literallayout xml:space='preserve' class='monospaced'>addRelationshipInstanceToOperand(domainactionIdprocessPositionexpressionPositionrelationshipNumbertoObjectleftHand)</literallayout></para>
  13360. </entry>
  13361. <entry>
  13362. <para><literallayout xml:space='preserve' class='monospaced'>Creates an instance of the specified relationship and attaches it to the
  13363. operand at the specified position.</literallayout></para>
  13364. </entry>
  13365. </row>
  13366. <row>
  13367. <entry>
  13368. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13369. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13370. </imageobject></mediaobject>
  13371. </literallayout></para>
  13372. </entry>
  13373. <entry>
  13374. <para><literallayout xml:space='preserve' class='monospaced'>addAccessedParameterToOperand(domainactionIdprocessPositionexpressionPositionleftHandparameter)</literallayout></para>
  13375. </entry>
  13376. <entry>
  13377. <para><literallayout xml:space='preserve' class='monospaced'>Add an uninitialized parameter instance to the accessor process model at the
  13378. specified operand. Upon creation of an instance of the accessor and assignment
  13379. of value to the parameter, the uninitialized parameter instance will become
  13380. an initialized parameter instance.</literallayout></para>
  13381. </entry>
  13382. </row>
  13383. <row>
  13384. <entry>
  13385. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13386. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13387. </imageobject></mediaobject>
  13388. </literallayout></para>
  13389. </entry>
  13390. <entry>
  13391. <para><literallayout xml:space='preserve' class='monospaced'>addPerspectiveToOperand(domainactionIdprocessPositionexpressionPositionleftHandperspective)</literallayout></para>
  13392. </entry>
  13393. <entry>
  13394. <para><literallayout xml:space='preserve' class='monospaced'>Add a perspective to the specified relationship instance at the specified
  13395. operand position.</literallayout></para>
  13396. </entry>
  13397. </row>
  13398. <row>
  13399. <entry>
  13400. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13401. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13402. </imageobject></mediaobject>
  13403. </literallayout></para>
  13404. </entry>
  13405. <entry>
  13406. <para><literallayout xml:space='preserve' class='monospaced'>addValueToParameter(domainactionIdprocessPositionexpressionPositionleftHandparametername)</literallayout></para>
  13407. </entry>
  13408. <entry>
  13409. <para><literallayout xml:space='preserve' class='monospaced'>Assigns the named value, or the value help by a named variable, to the named
  13410. parameter at the given position in a process model.</literallayout></para>
  13411. </entry>
  13412. </row>
  13413. <row>
  13414. <entry>
  13415. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13416. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13417. </imageobject></mediaobject>
  13418. </literallayout></para>
  13419. </entry>
  13420. <entry>
  13421. <para><literallayout xml:space='preserve' class='monospaced'>addKeywordToOperand(domainactionIdprocessPositionnameexpressionPositionleftHand)</literallayout></para>
  13422. </entry>
  13423. <entry>
  13424. <para><literallayout xml:space='preserve' class='monospaced'>Adds a the specified keyword value to the process model at the specified
  13425. statement position.</literallayout></para>
  13426. </entry>
  13427. </row>
  13428. <row>
  13429. <entry>
  13430. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  13431. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  13432. </imageobject></mediaobject>
  13433. </literallayout></para>
  13434. </entry>
  13435. <entry>
  13436. <para><literallayout xml:space='preserve' class='monospaced'>addTypedOperatorToExpression(domainactionIdprocessPositionexpressionPositionoperatortyperesultType)</literallayout></para>
  13437. </entry>
  13438. <entry>
  13439. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  13440. </entry>
  13441. </row>
  13442. </tbody>
  13443. </tgroup>
  13444. </table>
  13445. </literallayout></para>
  13446. <section>
  13447. <title>Function Activities</title>
  13448. <subtitle></subtitle>
  13449. <section>
  13450. <title>addActionToBridge</title>
  13451. <subtitle></subtitle>
  13452. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty process model to prepare it for addition of process modeling
  13453. elements.</literallayout></para>
  13454. <para><programlisting>result = creationResult_t::SUCCESS;
  13455. select any mdom from instances of MDOM where selected.name == param.domain;
  13456. if (empty mdom)
  13457. result = creationResult_t::FAILURE;
  13458. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  13459. else
  13460. select any acc from instances of ACC where selected.name == param.bridge_name;
  13461. if (empty acc)
  13462. result = creationResult_t::FAILURE;
  13463. LOG::LogFailure( message:&quot;Bridge, &quot; + param.bridge_name + &quot;, not instantiated!&quot; );
  13464. else
  13465. select one brg related by acc-&gt;ASA[R505]-&gt;ASB[R506]-&gt;BRG[R3];
  13466. if (empty brg)
  13467. select one brg related by acc-&gt;SYA[R505]-&gt;SYB[R524]-&gt;BRG[R3];
  13468. end if;
  13469. select one ae related by brg-&gt;AE[R509];
  13470. select one act related by ae-&gt;ACT[R500];
  13471. if (not empty act)
  13472. result = creationResult_t::DUPLICATE;
  13473. LOG::LogFailure( message:&quot;Action already instantiated for bridge, &quot; + param.bridge_name + &quot;.&quot; );
  13474. else
  13475. create object instance act of ACT;
  13476. relate act to ae across R500;
  13477. LOG::LogInfo( message:&quot;Action added to bridge,&quot; + param.bridge_name + &quot;, without any processes.&quot; );
  13478. end if;
  13479. end if;
  13480. end if;
  13481. return result;
  13482. </programlisting></para>
  13483. </section>
  13484. <section>
  13485. <title>addActionToDerivedAttribute</title>
  13486. <subtitle></subtitle>
  13487. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty process model to prepare it for addition of process modeling
  13488. elements.</literallayout></para>
  13489. <para><programlisting>result = creationResult_t::SUCCESS;
  13490. select any mdom from instances of MDOM where selected.name == param.domain;
  13491. if (empty mdom)
  13492. result = creationResult_t::FAILURE;
  13493. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  13494. else
  13495. select any der from instances of DER where selected.derived_name == param.attribute;
  13496. if (empty der)
  13497. result = creationResult_t::FAILURE;
  13498. LOG::LogFailure( message:&quot;Derived attribute, &quot; + param.attribute + &quot;, not instantiated!&quot; );
  13499. else
  13500. select any atr from instances of ATR where (selected.name == der.value_name) and selected.belongsTo( object:param.object );
  13501. if (empty atr)
  13502. result = creationResult_t::FAILURE;
  13503. LOG::LogFailure( message:&quot;Derived attribute, &quot; + param.attribute + &quot;, not a member of &quot; + param.object + &quot;!&quot;);
  13504. else
  13505. select one ae related by der-&gt;ATA[R522]-&gt;AE[R509];
  13506. select one act related by ae-&gt;ACT[R500];
  13507. if (not empty act)
  13508. result = creationResult_t::DUPLICATE;
  13509. LOG::LogFailure( message:&quot;Action already instantiated for derived attribute, &quot; + param.attribute + &quot;.&quot; );
  13510. else
  13511. create object instance act of ACT;
  13512. relate act to ae across R500;
  13513. LOG::LogInfo( message:&quot;Action added to derived attribute,&quot; + param.attribute + &quot;, without any processes.&quot; );
  13514. end if;
  13515. end if;
  13516. end if;
  13517. end if;
  13518. return result;
  13519. </programlisting></para>
  13520. </section>
  13521. <section>
  13522. <title>addActionToMethod</title>
  13523. <subtitle></subtitle>
  13524. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty process model to prepare it for addition of process modeling
  13525. elements.
  13526. </literallayout></para>
  13527. <para><programlisting>result = creationResult_t::SUCCESS;
  13528. select any mdom from instances of MDOM where selected.name == param.domain;
  13529. if (empty mdom)
  13530. result = creationResult_t::FAILURE;
  13531. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  13532. else
  13533. select any mth from instances of MTH where selected.name == param.method;
  13534. if (empty mth)
  13535. result = creationResult_t::FAILURE;
  13536. LOG::LogFailure( message:&quot;Method, &quot; + param.method + &quot;, not instantiated!&quot; );
  13537. else
  13538. select one ae related by mth-&gt;AE[R509];
  13539. select one act related by ae-&gt;ACT[R500];
  13540. if (not empty act)
  13541. result = creationResult_t::DUPLICATE;
  13542. LOG::LogFailure( message:&quot;Action already instantiated for method, &quot; + param.method + &quot;.&quot; );
  13543. else
  13544. create object instance act of ACT;
  13545. relate act to ae across R500;
  13546. LOG::LogInfo( message:&quot;Action added to method,&quot; + param.method + &quot;, without any processes.&quot; );
  13547. end if;
  13548. end if;
  13549. end if;
  13550. return result;
  13551. </programlisting></para>
  13552. </section>
  13553. <section>
  13554. <title>addActionToState</title>
  13555. <subtitle></subtitle>
  13556. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty process model to prepare it for addition of process modeling
  13557. elements.
  13558. </literallayout></para>
  13559. <para><programlisting>result = creationResult_t::SUCCESS;
  13560. select any mdom from instances of MDOM where selected.name == param.domain;
  13561. if (empty mdom)
  13562. result = creationResult_t::FAILURE;
  13563. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  13564. else
  13565. select any sub from instances of SUB where selected.name == param.object;
  13566. if (empty sub)
  13567. result = creationResult_t::FAILURE;
  13568. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  13569. else
  13570. select any sta related by sub-&gt;LIF[R347]-&gt;SM[R300]-&gt;STA[R341] where selected.name == param.state;
  13571. if (empty sta)
  13572. select any sta related by sub-&gt;ASR[R354]-&gt;SM[R300]-&gt;STA[R341] where selected.name == param.state;
  13573. if (empty sta)
  13574. result = creationResult_t::FAILURE;
  13575. LOG::LogFailure( message:&quot;State, &quot; + param.state + &quot;, not instantiated!&quot; );
  13576. end if;
  13577. end if;
  13578. if ( creationResult_t::SUCCESS == result )
  13579. select one ae related by sta-&gt;AE[R509];
  13580. select one act related by ae-&gt;ACT[R500];
  13581. if (not empty act)
  13582. result = creationResult_t::DUPLICATE;
  13583. LOG::LogFailure( message:&quot;Action already instantiated for state, &quot; + param.state + &quot;.&quot; );
  13584. else
  13585. create object instance act of ACT;
  13586. relate ae to act across R500;
  13587. LOG::LogInfo( message:&quot;Action added to state,&quot; + param.state + &quot;, without any processes.&quot; );
  13588. end if;
  13589. end if;
  13590. end if;
  13591. end if;
  13592. return result;
  13593. </programlisting></para>
  13594. </section>
  13595. <section>
  13596. <title>addAttributeToOperand</title>
  13597. <subtitle></subtitle>
  13598. <para><literallayout xml:space='preserve' class='monospaced'>Add an attribute of an object instance, already added to the process model, to
  13599. the left-hand or right-hand operand of the specified expression.</literallayout></para>
  13600. <para><programlisting>result = creationResult_t::SUCCESS;
  13601. select any mdom from instances of MDOM where selected.name == param.domain;
  13602. if (empty mdom)
  13603. result = creationResult_t::FAILURE;
  13604. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  13605. else
  13606. select any act from instances of ACT where selected.id == param.actionId;
  13607. if (empty act)
  13608. result = creationResult_t::FAILURE;
  13609. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  13610. else
  13611. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  13612. if (empty pro)
  13613. result = creationResult_t::FAILURE;
  13614. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  13615. else
  13616. select any equ related by pro-&gt;RE[R502]-&gt;EQU[R514];
  13617. if (empty equ)
  13618. result = creationResult_t::FAILURE;
  13619. LOG::LogFailure( message:&quot;No equation at process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  13620. else
  13621. select any exp related by equ-&gt;EXP[R622] where selected.ordinal_position == param.expressionPosition;
  13622. if (empty exp)
  13623. result = creationResult_t::FAILURE;
  13624. LOG::LogFailure( message:&quot;No expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  13625. else
  13626. select any sub from instances of SUB where selected.name == param.object;
  13627. if (empty sub)
  13628. result = creationResult_t::FAILURE;
  13629. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  13630. else
  13631. select any atr related by sub-&gt;OBJ[R107]-&gt;OA[R129]-&gt;ATR[R124] where selected.name == param.attribute;
  13632. if (empty atr)
  13633. select any atr related by sub-&gt;PRP[R107]-&gt;SPA[R130]-&gt;ATR[R124] where selected.name == param.attribute;
  13634. end if;
  13635. if (empty atr)
  13636. result = creationResult_t::FAILURE;
  13637. LOG::LogFailure( message:&quot;Attribute, &quot; + param.attribute + &quot;, not instantiated!&quot; );
  13638. else
  13639. // An object instance must exist to access the attribute instance.
  13640. select any trd related by pro-&gt;RE[R502]-&gt;EQU[R514]-&gt;EXP[R622]-&gt;LHO[R616]-&gt;OPRD[R615]-&gt;DUS[R631]-&gt;VAR[R624]-&gt;TRD[R626] where selected.name == param.instance;
  13641. if (empty trd)
  13642. result = creationResult_t::FAILURE;
  13643. LOG::LogFailure( message:&quot;Unable to find object instance handle in this process model!&quot; );
  13644. else
  13645. select any atn related by trd-&gt;VAR[R626]-&gt;VAL[R635]-&gt;INS[R629]-&gt;ATN[R643] where selected.attribute_name == param.attribute;
  13646. select one dus related by atn-&gt;VAR[R626]-&gt;DUS[R624];
  13647. select one oprd related by exp-&gt;LHO[R616]-&gt;OPRD[R615];
  13648. if (empty oprd)
  13649. result = creationResult_t::FAILURE;
  13650. LOG::LogFailure( message:&quot;Left hand operand not instantiated!&quot; );
  13651. else
  13652. if (not param.leftHand)
  13653. select one oprd related by exp-&gt;RHO[R617]-&gt;OPRD[R615];
  13654. if (empty oprd)
  13655. result = creationResult_t::FAILURE;
  13656. LOG::LogFailure( message:&quot;Right hand operand not instantiated!&quot; );
  13657. end if;
  13658. end if;
  13659. if (
  13660. </programlisting></para>
  13661. </section>
  13662. <section>
  13663. <title>addEquationToProcess</title>
  13664. <subtitle></subtitle>
  13665. <para><literallayout xml:space='preserve' class='monospaced'>Add an equation without expressions to the process specified within the action
  13666. specified.</literallayout></para>
  13667. <para><programlisting>result = creationResult_t::SUCCESS;
  13668. select any mdom from instances of MDOM where selected.name == param.domain;
  13669. if (empty mdom)
  13670. result = creationResult_t::FAILURE;
  13671. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  13672. else
  13673. select any act from instances of ACT where selected.id == param.actionId;
  13674. if (empty act)
  13675. result = creationResult_t::FAILURE;
  13676. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  13677. else
  13678. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.ordinalPosition;
  13679. if (empty pro)
  13680. result = creationResult_t::FAILURE;
  13681. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.ordinalPosition ) + &quot;!&quot;);
  13682. else
  13683. create object instance re of RE;
  13684. create object instance ela of ELA;
  13685. relate re to pro across R502 using ela;
  13686. create object instance equ of EQU;
  13687. relate equ to re across R514;
  13688. LOG::LogInfo( message: &quot;Equation added to action without any expressions!&quot; );
  13689. end if;
  13690. end if;
  13691. end if;
  13692. return result;
  13693. </programlisting></para>
  13694. </section>
  13695. <section>
  13696. <title>addExpressionToEquation</title>
  13697. <subtitle></subtitle>
  13698. <para><literallayout xml:space='preserve' class='monospaced'>Add an expression, without operands, operation, or outcome, at the position
  13699. specified to the equation of the process specified in the action specified.</literallayout></para>
  13700. <para><programlisting>result = creationResult_t::SUCCESS;
  13701. select any mdom from instances of MDOM where selected.name == param.domain;
  13702. if (empty mdom)
  13703. result = creationResult_t::FAILURE;
  13704. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  13705. else
  13706. select any act from instances of ACT where selected.id == param.actionId;
  13707. if (empty act)
  13708. result = creationResult_t::FAILURE;
  13709. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  13710. else
  13711. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  13712. if (empty pro)
  13713. result = creationResult_t::FAILURE;
  13714. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  13715. else
  13716. select any equ related by pro-&gt;RE[R502]-&gt;EQU[R514];
  13717. if (empty equ)
  13718. result = creationResult_t::FAILURE;
  13719. LOG::LogFailure( message:&quot;No equation at process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  13720. else
  13721. create object instance exp of EXP;
  13722. exp.ordinal_position = param.ordinalPosition;
  13723. relate exp to equ across R622;
  13724. LOG::LogInfo( message: &quot;Expression added to equation without any operands!&quot; );
  13725. end if;
  13726. end if;
  13727. end if;
  13728. end if;
  13729. return result;
  13730. </programlisting></para>
  13731. </section>
  13732. <section>
  13733. <title>addIterationToAction</title>
  13734. <subtitle></subtitle>
  13735. <para><literallayout xml:space='preserve' class='monospaced'>Add an iteration process to the specified action at the specified ordinal
  13736. position.</literallayout></para>
  13737. <para><programlisting>result = creationResult_t::SUCCESS;
  13738. select any mdom from instances of MDOM where selected.name == param.domain;
  13739. if (empty mdom)
  13740. result = creationResult_t::FAILURE;
  13741. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  13742. else
  13743. select any act from instances of ACT where selected.id == param.actionId;
  13744. if (empty act)
  13745. result = creationResult_t::FAILURE;
  13746. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  13747. else
  13748. create object instance pro of PRO;
  13749. pro.ordinal_position = param.ordinalPosition;
  13750. relate pro to act across R501;
  13751. create object instance csp of CSP;
  13752. csp.closure_position = param.closurePosition;
  13753. relate csp to pro across R536;
  13754. create object instance itp of ITP;
  13755. itp.current_index = 1;
  13756. relate itp to csp across R537;
  13757. end if;
  13758. end if;
  13759. return result;
  13760. </programlisting></para>
  13761. </section>
  13762. <section>
  13763. <title>addLoopToAction</title>
  13764. <subtitle></subtitle>
  13765. <para><literallayout xml:space='preserve' class='monospaced'>Add a loop process to the specified action at the specified ordinal position.</literallayout></para>
  13766. <para><programlisting>result = creationResult_t::SUCCESS;
  13767. select any mdom from instances of MDOM where selected.name == param.domain;
  13768. if (empty mdom)
  13769. result = creationResult_t::FAILURE;
  13770. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  13771. else
  13772. select any act from instances of ACT where selected.id == param.actionId;
  13773. if (empty act)
  13774. result = creationResult_t::FAILURE;
  13775. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  13776. else
  13777. create object instance pro of PRO;
  13778. pro.ordinal_position = param.ordinalPosition;
  13779. relate pro to act across R501;
  13780. create object instance csp of CSP;
  13781. csp.closure_position = param.closurePosition;
  13782. relate csp to pro across R536;
  13783. create object instance lop of LOP;
  13784. relate lop to csp across R537;
  13785. end if;
  13786. end if;
  13787. return result;
  13788. </programlisting></para>
  13789. </section>
  13790. <section>
  13791. <title>addObjectInstanceToOperand</title>
  13792. <subtitle></subtitle>
  13793. <para><literallayout xml:space='preserve' class='monospaced'>Add an object to the right-hand operand of the specified expression as an
  13794. instance. The only valid use of this is when you are creating an object
  13795. instance for assignment to a variable for later use in the process model, which
  13796. is why it is always the right-hand operand.</literallayout></para>
  13797. <para><programlisting>result = creationResult_t::SUCCESS;
  13798. select any mdom from instances of MDOM where selected.name == param.domain;
  13799. if (empty mdom)
  13800. result = creationResult_t::FAILURE;
  13801. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  13802. else
  13803. select any act from instances of ACT where selected.id == param.actionId;
  13804. if (empty act)
  13805. result = creationResult_t::FAILURE;
  13806. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  13807. else
  13808. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  13809. if (empty pro)
  13810. result = creationResult_t::FAILURE;
  13811. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  13812. else
  13813. select any equ related by pro-&gt;RE[R502]-&gt;EQU[R514];
  13814. if (empty equ)
  13815. result = creationResult_t::FAILURE;
  13816. LOG::LogFailure( message:&quot;No equation at process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  13817. else
  13818. select any exp related by equ-&gt;EXP[R622] where selected.ordinal_position == param.expressionPosition;
  13819. if (empty exp)
  13820. result = creationResult_t::FAILURE;
  13821. LOG::LogFailure( message:&quot;No expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  13822. else
  13823. select one rho related by exp-&gt;RHO[R617];
  13824. if (empty rho)
  13825. result = creationResult_t::FAILURE;
  13826. LOG::LogFailure( message:&quot;Right-hand operand not instantiated!&quot; );
  13827. else
  13828. select any sub from instances of SUB where selected.name == param.object;
  13829. if (empty sub)
  13830. result = creationResult_t::FAILURE;
  13831. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  13832. else
  13833. create object instance ins of INS;
  13834. relate ins to sub across R112;
  13835. // Create all attribute instances
  13836. sub.instantiateAttributes(objectInstance:ins.id);
  13837. // Create all method instances
  13838. sub.instantiateMethods(objectInstance:ins.id);
  13839. // Create state machine
  13840. select one lif related by sub-&gt;LIF[R347];
  13841. if (not empty lif)
  13842. create object instance lsm of LSM;
  13843. relate lsm to ins across R361;
  13844. relate lsm to lif across R360;
  13845. select any cre related by lif-&gt;SM[R300]-&gt;STA[R341]-&gt;LIV[R305]-&gt;CRE[R306];
  13846. relate cre to lsm across R348;
  13847. select any del related by lif-&gt;SM[R300]-&gt;STA[R341]-&gt;DEL[R305];
  13848. if (not empty del)
  13849. create object instance des of DES;
  13850. relate del to lsm across R349 using des;
  13851. end if;
  13852. end if;
  13853. // Find the identifiers for the instance and relate them to the instance.
  13854. select one prp related by sub-&gt;PRP[R107];
  13855. if (not empty prp)
  13856. select many ids related by sub-&gt;PRP[R107]-&gt;SPA[R130]-&gt;ATR[R124]-&gt;ID[R102];
  13857. for each id in ids
  13858. create object instance itn of ITN;
  13859. relate ins to id across R101 using itn;
  13860. end for;
  13861. else
  13862. select many ids related by sub-&gt;OBJ[R107]-&gt;OA[R129]-&gt;ATR[R124]-&gt;ID[R102];
  13863. </programlisting></para>
  13864. </section>
  13865. <section>
  13866. <title>addOperandToExpression</title>
  13867. <subtitle></subtitle>
  13868. <para><literallayout xml:space='preserve' class='monospaced'>Add a left-hand or right-hand operand to the expression. The order of addition
  13869. to the expression is left-hand operand, right-hand operand, and then operator,
  13870. and this is strictly enforced.</literallayout></para>
  13871. <para><programlisting>result = creationResult_t::SUCCESS;
  13872. select any mdom from instances of MDOM where selected.name == param.domain;
  13873. if (empty mdom)
  13874. result = creationResult_t::FAILURE;
  13875. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  13876. else
  13877. select any act from instances of ACT where selected.id == param.actionId;
  13878. if (empty act)
  13879. result = creationResult_t::FAILURE;
  13880. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  13881. else
  13882. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  13883. if (empty pro)
  13884. result = creationResult_t::FAILURE;
  13885. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  13886. else
  13887. select any equ related by pro-&gt;RE[R502]-&gt;EQU[R514];
  13888. if (empty equ)
  13889. result = creationResult_t::FAILURE;
  13890. LOG::LogFailure( message:&quot;No equation at process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  13891. else
  13892. select any exp related by equ-&gt;EXP[R622] where selected.ordinal_position == param.expressionPosition;
  13893. if (empty exp)
  13894. result = creationResult_t::FAILURE;
  13895. LOG::LogFailure( message:&quot;No expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  13896. else
  13897. select one lho related by exp-&gt;LHO[R616];
  13898. if (param.leftHand)
  13899. if (not empty lho)
  13900. result = creationResult_t::DUPLICATE;
  13901. LOG::LogFailure( message:&quot;Left hand operand already created for this expression!&quot; );
  13902. else
  13903. create object instance oprd of OPRD;
  13904. create object instance lho of LHO;
  13905. relate lho to oprd across R615;
  13906. relate lho to exp across R616;
  13907. LOG::LogInfo( message:&quot;Left operand created without any data assignment!&quot; );
  13908. end if;
  13909. else
  13910. if (empty lho)
  13911. result = creationResult_t::FAILURE;
  13912. LOG::LogFailure( message:&quot;Left hand operand must be created before right hand operand!&quot; );
  13913. else
  13914. select one rho related by exp-&gt;RHO[R617];
  13915. if (not empty rho)
  13916. result = creationResult_t::DUPLICATE;
  13917. LOG::LogFailure( message:&quot;Right hand operand already created for this expression!&quot; );
  13918. else
  13919. create object instance oprd of OPRD;
  13920. create object instance rho of RHO;
  13921. relate rho to oprd across R615;
  13922. relate rho to exp across R617;
  13923. LOG::LogInfo( message:&quot;Right operand created without any data assignment!&quot; );
  13924. end if;
  13925. end if;
  13926. end if;
  13927. end if;
  13928. end if;
  13929. end if;
  13930. end if;
  13931. end if;
  13932. return result;
  13933. </programlisting></para>
  13934. </section>
  13935. <section>
  13936. <title>addPathEvaluationToAction</title>
  13937. <subtitle></subtitle>
  13938. <para><literallayout xml:space='preserve' class='monospaced'>Add a path evaluation process to the specified action at the specified ordinal
  13939. position. This creates the path evaluation specifier and opens the first path
  13940. container.</literallayout></para>
  13941. <para><programlisting>result = creationResult_t::SUCCESS;
  13942. select any mdom from instances of MDOM where selected.name == param.domain;
  13943. if (empty mdom)
  13944. result = creationResult_t::FAILURE;
  13945. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  13946. else
  13947. select any act from instances of ACT where selected.id == param.actionId;
  13948. if (empty act)
  13949. result = creationResult_t::FAILURE;
  13950. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  13951. else
  13952. create object instance pro of PRO;
  13953. pro.ordinal_position = param.ordinalPosition;
  13954. relate pro to act across R501;
  13955. create object instance csp of CSP;
  13956. csp.closure_position = param.closurePosition;
  13957. relate csp to pro across R536;
  13958. create object instance pep of PEP;
  13959. pep.numPaths = 1;
  13960. relate pep to csp across R537;
  13961. end if;
  13962. end if;
  13963. return result;
  13964. </programlisting></para>
  13965. </section>
  13966. <section>
  13967. <title>addReferentialAttributeToOperand</title>
  13968. <subtitle></subtitle>
  13969. <para><literallayout xml:space='preserve' class='monospaced'>Add a referential attribute of an object instance, already added to the process
  13970. model, to the left-hand or right-hand operand of the specified expression.
  13971. </literallayout></para>
  13972. <para><programlisting>result = creationResult_t::SUCCESS;
  13973. select any mdom from instances of MDOM where selected.name == param.domain;
  13974. if (empty mdom)
  13975. result = creationResult_t::FAILURE;
  13976. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  13977. else
  13978. select any act from instances of ACT where selected.id == param.actionId;
  13979. if (empty act)
  13980. result = creationResult_t::FAILURE;
  13981. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  13982. else
  13983. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  13984. if (empty pro)
  13985. result = creationResult_t::FAILURE;
  13986. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  13987. else
  13988. select any equ related by pro-&gt;RE[R502]-&gt;EQU[R514];
  13989. if (empty equ)
  13990. result = creationResult_t::FAILURE;
  13991. LOG::LogFailure( message:&quot;No equation at process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  13992. else
  13993. select any exp related by equ-&gt;EXP[R622] where selected.ordinal_position == param.expressionPosition;
  13994. if (empty exp)
  13995. result = creationResult_t::FAILURE;
  13996. LOG::LogFailure( message:&quot;No expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  13997. else
  13998. select any sub from instances of SUB where selected.name == param.object;
  13999. if (empty sub)
  14000. result = creationResult_t::FAILURE;
  14001. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  14002. else
  14003. select any ref related by sub-&gt;OBJ[R107]-&gt;OA[R129]-&gt;ATR[R124]-&gt;REF[R103] where selected.name == param.attribute;
  14004. if (empty ref)
  14005. select any ref related by sub-&gt;PRP[R107]-&gt;SPA[R130]-&gt;ATR[R124]-&gt;REF[R103] where selected.name == param.attribute;
  14006. end if;
  14007. if (empty ref)
  14008. result = creationResult_t::FAILURE;
  14009. LOG::LogFailure( message:&quot;Referential attribute, &quot; + param.attribute + &quot;, not instantiated!&quot; );
  14010. else
  14011. // An object instance must exist to access the attribute instance.
  14012. select any trd related by pro-&gt;RE[R502]-&gt;EQU[R514]-&gt;EXP[R622]-&gt;LHO[R616]-&gt;OPRD[R615]-&gt;DUS[R631]-&gt;VAR[R624]-&gt;TRD[R626] where selected.name == param.instance;
  14013. if (empty trd)
  14014. result = creationResult_t::FAILURE;
  14015. LOG::LogFailure( message:&quot;Unable to find object instance handle in this process model!&quot; );
  14016. else
  14017. select any atn related by trd-&gt;VAR[R626]-&gt;VAL[R635]-&gt;INS[R629]-&gt;ATN[R643] where selected.attribute_name == param.attribute;
  14018. select one dus related by atn-&gt;VAR[R626]-&gt;DUS[R624];
  14019. select one oprd related by exp-&gt;LHO[R616]-&gt;OPRD[R615];
  14020. if (empty oprd)
  14021. result = creationResult_t::FAILURE;
  14022. LOG::LogFailure( message:&quot;Left hand operand not instantiated!&quot; );
  14023. else
  14024. if (not param.leftHand)
  14025. select one oprd related by exp-&gt;RHO[R617]-&gt;OPRD[R615];
  14026. if (empty oprd)
  14027. result = creationResult_t::FAILURE;
  14028. LOG::LogFailure( message:&quot;Right hand operand not instantiated!&quot; );
  14029. end if;
  14030. </programlisting></para>
  14031. </section>
  14032. <section>
  14033. <title>addStatementToAction</title>
  14034. <subtitle></subtitle>
  14035. <para><literallayout xml:space='preserve' class='monospaced'>Add a Statement Process to the specified action at the specified ordinal
  14036. position.</literallayout></para>
  14037. <para><programlisting>result = creationResult_t::SUCCESS;
  14038. select any mdom from instances of MDOM where selected.name == param.domain;
  14039. if (empty mdom)
  14040. result = creationResult_t::FAILURE;
  14041. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14042. else
  14043. select any act from instances of ACT where selected.id == param.actionId;
  14044. if (empty act)
  14045. result = creationResult_t::FAILURE;
  14046. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  14047. else
  14048. create object instance pro of PRO;
  14049. pro.ordinal_position = param.ordinalPosition;
  14050. relate pro to act across R501;
  14051. create object instance stp of STP;
  14052. relate stp to pro across R536;
  14053. // Determine if container relationships need to be instantiated.
  14054. closest = 0.0;
  14055. select many csps from instances of CSP where ( selected.ordinal_position &lt; param.ordinalPosition ) and ( selected.closure_position &gt;= param.ordinalPosition );
  14056. for each csp in csps
  14057. // Position numbering is one-based, and the statement can&apos;&apos;t be added at
  14058. // the control structure position.
  14059. if (csp.ordinal_position &gt; closest)
  14060. closest = csp.ordinal_position;
  14061. end if;
  14062. end for;
  14063. select any csp from instances of CSP where selected.ordinal_position == closest;
  14064. if (not empty csp)
  14065. create object instance pns of PNS;
  14066. relate csp to pro across R538 using pns;
  14067. select one pep related by csp-&gt;PEP[R537];
  14068. if (not empty pep)
  14069. create object instance pas of PAS;
  14070. relate pep to pns across R539 using pas;
  14071. end if;
  14072. end if;
  14073. end if;
  14074. end if;
  14075. return result;
  14076. </programlisting></para>
  14077. </section>
  14078. <section>
  14079. <title>getActionOfBridge</title>
  14080. <subtitle></subtitle>
  14081. <para><literallayout xml:space='preserve' class='monospaced'>Returns the identifier of the action instance associated with the specified
  14082. element. Will return an invalid identifier if the model isn&apos;&apos;t correct for this
  14083. action.</literallayout></para>
  14084. <para><programlisting>// Start with an invalid id.
  14085. // TODO: Verify this works
  14086. select any act from instances of ACT where selected.id != selected.id;
  14087. id = act.id;
  14088. select any mdom from instances of MDOM where selected.name == param.domain;
  14089. if (empty mdom)
  14090. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14091. else
  14092. select any acc from instances of ACC where selected.name == param.bridge_name;
  14093. if (empty acc)
  14094. LOG::LogFailure( message:&quot;Bridge, &quot; + param.bridge_name + &quot;, not instantiated!&quot; );
  14095. else
  14096. select one brg related by acc-&gt;ASA[R505]-&gt;ASB[R506]-&gt;BRG[R3];
  14097. if (empty brg)
  14098. select one brg related by acc-&gt;SYA[R505]-&gt;SYB[R524]-&gt;BRG[R3];
  14099. end if;
  14100. select one ae related by brg-&gt;AE[R509];
  14101. select one act related by ae-&gt;ACT[R500];
  14102. if (empty act)
  14103. LOG::LogFailure( message:&quot;Action not instantiated for bridge, &quot; + param.bridge_name + &quot;.&quot; );
  14104. else
  14105. id = act.id;
  14106. end if;
  14107. end if;
  14108. end if;
  14109. return id;
  14110. </programlisting></para>
  14111. </section>
  14112. <section>
  14113. <title>getActionOfDerivedAttribute</title>
  14114. <subtitle></subtitle>
  14115. <para><literallayout xml:space='preserve' class='monospaced'>Returns the identifier of the action instance associated with the specified
  14116. element. Will return an invalid identifier if the model isn&apos;&apos;t correct for this
  14117. action.</literallayout></para>
  14118. <para><programlisting>// Start with an invalid id.
  14119. select any act from instances of ACT where selected.id != selected.id;
  14120. id = act.id;
  14121. select any mdom from instances of MDOM where selected.name == param.domain;
  14122. if (empty mdom)
  14123. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14124. else
  14125. select any der from instances of DER where selected.derived_name == param.attribute;
  14126. if (empty der)
  14127. LOG::LogFailure( message:&quot;Derived attribute, &quot; + param.attribute + &quot;, not instantiated!&quot; );
  14128. else
  14129. select any atr from instances of ATR where (selected.name == der.value_name) and selected.belongsTo( object:param.object );
  14130. if (empty atr)
  14131. LOG::LogFailure( message:&quot;Derived attribute, &quot; + param.attribute + &quot;, not a member of &quot; + param.object + &quot;!&quot;);
  14132. else
  14133. select one ae related by der-&gt;ATA[R522]-&gt;AE[R509];
  14134. select one act related by ae-&gt;ACT[R500];
  14135. if (empty act)
  14136. LOG::LogFailure( message:&quot;Action not instantiated for derived attribute, &quot; + param.attribute + &quot;.&quot; );
  14137. else
  14138. id = act.id;
  14139. end if;
  14140. end if;
  14141. end if;
  14142. end if;
  14143. return id;
  14144. </programlisting></para>
  14145. </section>
  14146. <section>
  14147. <title>getActionOfMethod</title>
  14148. <subtitle></subtitle>
  14149. <para><literallayout xml:space='preserve' class='monospaced'>Returns the identifier of the action instance associated with the specified
  14150. element. Will return an invalid identifier if the model isn&apos;&apos;t correct for this
  14151. action.</literallayout></para>
  14152. <para><programlisting>// Start with an invalid id.
  14153. select any act from instances of ACT where selected.id != selected.id;
  14154. id = act.id;
  14155. select any mdom from instances of MDOM where selected.name == param.domain;
  14156. if (empty mdom)
  14157. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14158. else
  14159. select any mth from instances of MTH where selected.name == param.method;
  14160. if (empty mth)
  14161. LOG::LogFailure( message:&quot;Method, &quot; + param.method + &quot;, not instantiated!&quot; );
  14162. else
  14163. select one ae related by mth-&gt;AE[R509];
  14164. select one act related by ae-&gt;ACT[R500];
  14165. if (empty act)
  14166. LOG::LogFailure( message:&quot;Action not instantiated for method, &quot; + param.method + &quot;.&quot; );
  14167. else
  14168. id = act.id;
  14169. end if;
  14170. end if;
  14171. end if;
  14172. return id;
  14173. </programlisting></para>
  14174. </section>
  14175. <section>
  14176. <title>getActionOfState</title>
  14177. <subtitle></subtitle>
  14178. <para><literallayout xml:space='preserve' class='monospaced'>Returns the identifier of the action instance associated with the specified
  14179. element. Will return an invalid identifier if the model isn&apos;&apos;t correct for this
  14180. action.</literallayout></para>
  14181. <para><programlisting>// Start with an invalid id.
  14182. select any act from instances of ACT where selected.id != selected.id;
  14183. id = act.id;
  14184. result = creationResult_t::SUCCESS;
  14185. select any mdom from instances of MDOM where selected.name == param.domain;
  14186. if (empty mdom)
  14187. result = creationResult_t::FAILURE;
  14188. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14189. else
  14190. select any sub from instances of SUB where selected.name == param.object;
  14191. if (empty sub)
  14192. result = creationResult_t::FAILURE;
  14193. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  14194. else
  14195. select any sta related by sub-&gt;LIF[R347]-&gt;SM[R300]-&gt;STA[R341] where selected.name == param.state;
  14196. if (empty sta)
  14197. select any sta related by sub-&gt;ASR[R354]-&gt;SM[R300]-&gt;STA[R341] where selected.name == param.state;
  14198. if (empty sta)
  14199. result = creationResult_t::FAILURE;
  14200. LOG::LogFailure( message:&quot;State, &quot; + param.state + &quot;, not instantiated!&quot; );
  14201. end if;
  14202. end if;
  14203. if ( creationResult_t::SUCCESS == result )
  14204. select one ae related by sta-&gt;AE[R509];
  14205. select one act related by ae-&gt;ACT[R500];
  14206. if (empty act)
  14207. result = creationResult_t::DUPLICATE;
  14208. LOG::LogFailure( message:&quot;Action not instantiated for state, &quot; + param.state + &quot;.&quot; );
  14209. else
  14210. id = act.id;
  14211. end if;
  14212. end if;
  14213. end if;
  14214. end if;
  14215. return id;
  14216. </programlisting></para>
  14217. </section>
  14218. <section>
  14219. <title>addEnumerationValueToOperand</title>
  14220. <subtitle></subtitle>
  14221. <para><literallayout xml:space='preserve' class='monospaced'>Add an enumeration value to the left or right hand operand of an expression.</literallayout></para>
  14222. <para><programlisting>result = creationResult_t::SUCCESS;
  14223. select any mdom from instances of MDOM where selected.name == param.domain;
  14224. if (empty mdom)
  14225. result = creationResult_t::FAILURE;
  14226. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14227. else
  14228. select any act from instances of ACT where selected.id == param.actionId;
  14229. if (empty act)
  14230. result = creationResult_t::FAILURE;
  14231. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  14232. else
  14233. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  14234. if (empty pro)
  14235. result = creationResult_t::FAILURE;
  14236. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14237. else
  14238. select any equ related by pro-&gt;RE[R502]-&gt;EQU[R514];
  14239. if (empty equ)
  14240. result = creationResult_t::FAILURE;
  14241. LOG::LogFailure( message:&quot;No equation at process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14242. else
  14243. select any exp related by equ-&gt;EXP[R622] where selected.ordinal_position == param.expressionPosition;
  14244. if (empty exp)
  14245. result = creationResult_t::FAILURE;
  14246. LOG::LogFailure( message:&quot;No expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  14247. else
  14248. select any enud from instances of ENUD where selected.name == param.enumerationName;
  14249. if (empty enud)
  14250. result = creationResult_t::FAILURE;
  14251. LOG::LogFailure( message:&quot;Enumeration, &quot; + param.enumerationName + &quot;, not instantiated!&quot; );
  14252. else
  14253. select any enuv related by enud-&gt;ENUV[R420] where selected.name == param.valueName;
  14254. if (empty enuv)
  14255. result = creationResult_t::FAILURE;
  14256. LOG::LogFailure( message:&quot;Enumeration value, &quot; + param.valueName + &quot;, not instantiated for ,&quot; + param.enumerationName + &quot;!&quot; );
  14257. else
  14258. select one dus related by enuv-&gt;VAL[R629]-&gt;DUS[R624];
  14259. select one oprd related by exp-&gt;LHO[R616]-&gt;OPRD[R615];
  14260. if (not param.leftHand)
  14261. select one oprd related by exp-&gt;RHO[R617]-&gt;OPRD[R615];
  14262. if (empty oprd)
  14263. result = creationResult_t::FAILURE;
  14264. LOG::LogFailure( message:&quot;Right hand operand not instantiated!&quot; );
  14265. end if;
  14266. end if;
  14267. if (not empty oprd)
  14268. relate oprd to dus across R631;
  14269. end if;
  14270. end if;
  14271. end if;
  14272. end if;
  14273. end if;
  14274. end if;
  14275. end if;
  14276. end if;
  14277. return result;
  14278. </programlisting></para>
  14279. </section>
  14280. <section>
  14281. <title>addVariableToOperand</title>
  14282. <subtitle></subtitle>
  14283. <para><literallayout xml:space='preserve' class='monospaced'>Add a transient variable to the left or right hand operand of an expression.
  14284. </literallayout></para>
  14285. <para><programlisting>result = creationResult_t::SUCCESS;
  14286. select any mdom from instances of MDOM where selected.name == param.domain;
  14287. if (empty mdom)
  14288. result = creationResult_t::FAILURE;
  14289. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14290. else
  14291. select any act from instances of ACT where selected.id == param.actionId;
  14292. if (empty act)
  14293. result = creationResult_t::FAILURE;
  14294. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  14295. else
  14296. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  14297. if (empty pro)
  14298. result = creationResult_t::FAILURE;
  14299. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14300. else
  14301. select any re related by pro-&gt;RE[R502];
  14302. select one equ related by re-&gt;EQU[R514];
  14303. if (empty equ)
  14304. result = creationResult_t::FAILURE;
  14305. LOG::LogFailure( message:&quot;No equation at process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14306. else
  14307. select any exp related by equ-&gt;EXP[R622] where selected.ordinal_position == param.expressionPosition;
  14308. if (empty exp)
  14309. result = creationResult_t::FAILURE;
  14310. LOG::LogFailure( message:&quot;No expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  14311. else
  14312. select any type from instances of TYPE where selected.name == param.typeName;
  14313. if (empty type)
  14314. result = creationResult_t::FAILURE;
  14315. LOG::LogFailure( message:&quot;Type, &quot; + param.typeName + &quot;, not instantiated!&quot; );
  14316. else
  14317. select one oprd related by exp-&gt;LHO[R616]-&gt;OPRD[R615];
  14318. if (not param.leftHand)
  14319. select one oprd related by exp-&gt;RHO[R617]-&gt;OPRD[R615];
  14320. if (empty oprd)
  14321. result = creationResult_t::FAILURE;
  14322. LOG::LogFailure( message:&quot;Right hand operand not instantiated!&quot; );
  14323. end if;
  14324. end if;
  14325. if (not empty oprd)
  14326. create object instance var of VAR;
  14327. create object instance trd of TRD;
  14328. trd.name = param.name;
  14329. relate trd to var across R626;
  14330. create object instance dus of DUS;
  14331. relate dus to var across R624;
  14332. relate dus to type across R625;
  14333. relate dus to re across R514;
  14334. LOG::LogInfo( message:&quot;Transient variable created with no value and no assigned operand!&quot; );
  14335. relate oprd to dus across R631;
  14336. end if;
  14337. end if;
  14338. end if;
  14339. end if;
  14340. end if;
  14341. end if;
  14342. end if;
  14343. return result;
  14344. </programlisting></para>
  14345. </section>
  14346. <section>
  14347. <title>addConstantToOperand</title>
  14348. <subtitle></subtitle>
  14349. <para><literallayout xml:space='preserve' class='monospaced'>Add a constant value to the left or right hand operand of an expression.
  14350. As the actual value isn&apos;&apos;t that interesting to the metamodel, the parameter,
  14351. name, is used to allow process model construction within the constraints the
  14352. metamodel. The value of name is symbolic representation of the value is akin to
  14353. using defines in C to represent &quot;magic numbers&quot;.
  14354. </literallayout></para>
  14355. <para><programlisting>result = creationResult_t::SUCCESS;
  14356. select any mdom from instances of MDOM where selected.name == param.domain;
  14357. if (empty mdom)
  14358. result = creationResult_t::FAILURE;
  14359. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14360. else
  14361. select any act from instances of ACT where selected.id == param.actionId;
  14362. if (empty act)
  14363. result = creationResult_t::FAILURE;
  14364. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  14365. else
  14366. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  14367. if (empty pro)
  14368. result = creationResult_t::FAILURE;
  14369. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14370. else
  14371. select any re related by pro-&gt;RE[R502];
  14372. select one equ related by re-&gt;EQU[R514];
  14373. if (empty equ)
  14374. result = creationResult_t::FAILURE;
  14375. LOG::LogFailure( message:&quot;No equation at process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14376. else
  14377. select any exp related by equ-&gt;EXP[R622] where selected.ordinal_position == param.expressionPosition;
  14378. if (empty exp)
  14379. result = creationResult_t::FAILURE;
  14380. LOG::LogFailure( message:&quot;No expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  14381. else
  14382. select any type from instances of TYPE where selected.name == param.typeName;
  14383. if (empty type)
  14384. result = creationResult_t::FAILURE;
  14385. LOG::LogFailure( message:&quot;Type, &quot; + param.typeName + &quot;, not instantiated!&quot; );
  14386. else
  14387. select one oprd related by exp-&gt;LHO[R616]-&gt;OPRD[R615];
  14388. if (not param.leftHand)
  14389. select one oprd related by exp-&gt;RHO[R617]-&gt;OPRD[R615];
  14390. if (empty oprd)
  14391. result = creationResult_t::FAILURE;
  14392. LOG::LogFailure( message:&quot;Right hand operand not instantiated!&quot; );
  14393. end if;
  14394. end if;
  14395. if (not empty oprd)
  14396. create object instance usv of USV;
  14397. usv.value_name = param.name;
  14398. relate usv to type across R636;
  14399. create object instance val of VAL;
  14400. relate usv to val across R629;
  14401. create object instance dus of DUS;
  14402. relate dus to val across R624;
  14403. relate dus to type across R625;
  14404. create object instance re of RE;
  14405. relate dus to re across R514;
  14406. relate oprd to dus across R631;
  14407. end if;
  14408. end if;
  14409. end if;
  14410. end if;
  14411. end if;
  14412. end if;
  14413. end if;
  14414. return result;
  14415. </programlisting></para>
  14416. </section>
  14417. <section>
  14418. <title>addReturnValueToOperand</title>
  14419. <subtitle></subtitle>
  14420. <para><literallayout xml:space='preserve' class='monospaced'>Add a return value to the left or right operand of an expression. This bridge
  14421. will be called when an accessor is part of an equation. e.g., a = a + sum(b, c)
  14422. If the return value is on the right hand side of an assignment, it can be
  14423. the return from the current process model.
  14424. This call will be used whenever any synchronous accessor (synchronous
  14425. bridge, object method, or attribute action) is added to a process model. </literallayout></para>
  14426. <para><programlisting>result = creationResult_t::SUCCESS;
  14427. select any mdom from instances of MDOM where selected.name == param.domain;
  14428. if (empty mdom)
  14429. result = creationResult_t::FAILURE;
  14430. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14431. else
  14432. select any act from instances of ACT where selected.id == param.actionId;
  14433. if (empty act)
  14434. result = creationResult_t::FAILURE;
  14435. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  14436. else
  14437. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  14438. if (empty pro)
  14439. result = creationResult_t::FAILURE;
  14440. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14441. else
  14442. select any equ related by pro-&gt;RE[R502]-&gt;EQU[R514];
  14443. if (empty equ)
  14444. result = creationResult_t::FAILURE;
  14445. LOG::LogFailure( message:&quot;No equation at process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14446. else
  14447. select any exp related by equ-&gt;EXP[R622] where selected.ordinal_position == param.expressionPosition;
  14448. if (empty exp)
  14449. result = creationResult_t::FAILURE;
  14450. LOG::LogFailure( message:&quot;No expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  14451. else
  14452. select any rvl from instances of RVL where selected.access_name == param.name;
  14453. if (empty rvl)
  14454. result = creationResult_t::FAILURE;
  14455. LOG::LogFailure( message:&quot;Return value, &quot; + param.name + &quot;, not instantiated!&quot; );
  14456. else
  14457. select one dus related by rvl-&gt;VAL[R629]-&gt;DUS[R624];
  14458. select one oprd related by exp-&gt;LHO[R616]-&gt;OPRD[R615];
  14459. if (empty oprd)
  14460. result = creationResult_t::FAILURE;
  14461. LOG::LogFailure( message:&quot;Left hand operand not instantiated!&quot; );
  14462. else
  14463. if (not param.leftHand)
  14464. select one oprd related by exp-&gt;RHO[R617]-&gt;OPRD[R615];
  14465. if (empty oprd)
  14466. result = creationResult_t::FAILURE;
  14467. LOG::LogFailure( message:&quot;Right hand operand not instantiated!&quot; );
  14468. end if;
  14469. end if;
  14470. if (not empty oprd)
  14471. select one acc related by rvl-&gt;SYA[R529]-&gt;ACC[R505];
  14472. if ((not param.leftHand) and (act.getAccessorName() == acc.name))
  14473. relate oprd to dus across R631;
  14474. else
  14475. relate oprd to dus across R631;
  14476. instId = acc.instantiate();
  14477. select any ain from instances of AIN where selected.id == instId;
  14478. ain.addToProcessModel( actionId:act.id, ordinalPosition:param.processPosition );
  14479. end if;
  14480. end if;
  14481. end if;
  14482. end if;
  14483. end if;
  14484. end if;
  14485. end if;
  14486. end if;
  14487. end if;
  14488. return result;
  14489. </programlisting></para>
  14490. </section>
  14491. <section>
  14492. <title>addBridgeAccessorToProcess</title>
  14493. <subtitle></subtitle>
  14494. <para><literallayout xml:space='preserve' class='monospaced'>Adds an asynchronous bridge call to the process specified in the action
  14495. specified.
  14496. A synchronous bridge call will be added as a return value added to an
  14497. operand.</literallayout></para>
  14498. <para><programlisting>result = creationResult_t::SUCCESS;
  14499. select any mdom from instances of MDOM where selected.name == param.domain;
  14500. if (empty mdom)
  14501. result = creationResult_t::FAILURE;
  14502. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14503. else
  14504. select any act from instances of ACT where selected.id == param.actionId;
  14505. if (empty act)
  14506. result = creationResult_t::FAILURE;
  14507. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  14508. else
  14509. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.ordinalPosition;
  14510. if (empty pro)
  14511. result = creationResult_t::FAILURE;
  14512. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.ordinalPosition ) + &quot;!&quot;);
  14513. else
  14514. select any asb from instances of ASB where selected.name == param.name;
  14515. if (empty asb)
  14516. result = creationResult_t::FAILURE;
  14517. LOG::LogFailure( message:&quot;Bridge, &quot; + param.name + &quot;not instantiated!&quot;);
  14518. else
  14519. select one acc related by asb-&gt;ASA[R506]-&gt;ACC[R505];
  14520. instId = acc.instantiate();
  14521. select any ain from instances of AIN where selected.id == instId;
  14522. ain.addToProcessModel( actionId:act.id, ordinalPosition:param.ordinalPosition );
  14523. end if;
  14524. end if;
  14525. end if;
  14526. end if;
  14527. return result;
  14528. </programlisting></para>
  14529. </section>
  14530. <section>
  14531. <title>addEventAccessorToProcess</title>
  14532. <subtitle></subtitle>
  14533. <para><literallayout xml:space='preserve' class='monospaced'>Adds an event accessor to the process specified in the action specified.
  14534. </literallayout></para>
  14535. <para><programlisting>result = creationResult_t::SUCCESS;
  14536. select any mdom from instances of MDOM where selected.name == param.domain;
  14537. if (empty mdom)
  14538. result = creationResult_t::FAILURE;
  14539. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14540. else
  14541. select any act from instances of ACT where selected.id == param.actionId;
  14542. if (empty act)
  14543. result = creationResult_t::FAILURE;
  14544. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  14545. else
  14546. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.ordinalPosition;
  14547. if (empty pro)
  14548. result = creationResult_t::FAILURE;
  14549. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.ordinalPosition ) + &quot;!&quot;);
  14550. else
  14551. // TODO: Event instances require an object instance
  14552. select any evt from instances of EVT where (selected.name == param.name) and (selected.object_name == param.object);
  14553. if (empty evt)
  14554. result = creationResult_t::FAILURE;
  14555. LOG::LogFailure( message:&quot;Event, &quot; + param.name + &quot;, not instantiated for object, &quot; + param.object + &quot;!&quot; );
  14556. else
  14557. select one acc related by evt-&gt;ASA[R506]-&gt;ACC[R505];
  14558. instId = acc.instantiate();
  14559. select any ain from instances of AIN where selected.id == instId;
  14560. ain.addToProcessModel( actionId:act.id, ordinalPosition:param.ordinalPosition );
  14561. end if;
  14562. end if;
  14563. end if;
  14564. end if;
  14565. return result;
  14566. </programlisting></para>
  14567. </section>
  14568. <section>
  14569. <title>addRelationshipInstanceToOperand</title>
  14570. <subtitle></subtitle>
  14571. <para><literallayout xml:space='preserve' class='monospaced'>Creates an instance of the specified relationship and attaches it to the
  14572. operand at the specified position.</literallayout></para>
  14573. <para><programlisting>result = creationResult_t::SUCCESS;
  14574. select any mdom from instances of MDOM where selected.name == param.domain;
  14575. if (empty mdom)
  14576. result = creationResult_t::FAILURE;
  14577. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14578. else
  14579. select any act from instances of ACT where selected.id == param.actionId;
  14580. if (empty act)
  14581. result = creationResult_t::FAILURE;
  14582. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  14583. else
  14584. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  14585. if (empty pro)
  14586. result = creationResult_t::FAILURE;
  14587. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14588. else
  14589. select any equ related by pro-&gt;RE[R502]-&gt;EQU[R514];
  14590. if (empty equ)
  14591. result = creationResult_t::FAILURE;
  14592. LOG::LogFailure( message:&quot;No equation at process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14593. else
  14594. select any exp related by equ-&gt;EXP[R622] where selected.ordinal_position == param.expressionPosition;
  14595. if (empty exp)
  14596. result = creationResult_t::FAILURE;
  14597. LOG::LogFailure( message:&quot;No expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  14598. else
  14599. select any sub from instances of SUB where selected.name == param.toObject;
  14600. if (empty sub)
  14601. result = creationResult_t::FAILURE;
  14602. LOG::LogFailure( message:&quot;To object, &quot; + param.toObject + &quot;, not instantiated!&quot; );
  14603. else
  14604. select any irl from instances of IRL where (selected.number == param.relationshipNumber) and ((selected.left_object_name == param.toObject) or (selected.right_object_name == param.toObject));
  14605. if (empty irl)
  14606. result = creationResult_t::FAILURE;
  14607. LOG::LogFailure( message:&quot;Relationship, R&quot; + TC::intToString( i: param.relationshipNumber ) + &quot;, not instantiated or not related to object, &quot; + param.toObject + &quot;!&quot; );
  14608. else
  14609. select one oprd related by exp-&gt;LHO[R616]-&gt;OPRD[R615];
  14610. if (empty oprd)
  14611. result = creationResult_t::FAILURE;
  14612. LOG::LogFailure( message:&quot;Left hand operand not instantiated!&quot; );
  14613. else
  14614. if (not param.leftHand)
  14615. select one oprd related by exp-&gt;RHO[R617]-&gt;OPRD[R615];
  14616. if (empty oprd)
  14617. result = creationResult_t::FAILURE;
  14618. LOG::LogFailure( message:&quot;Right hand operand not instantiated!&quot; );
  14619. end if;
  14620. end if;
  14621. if (not empty oprd)
  14622. create object instance rin of RIN;
  14623. relate rin to irl across R638;
  14624. create object instance val of VAL;
  14625. relate val to rin across R629;
  14626. create object instance dus of DUS;
  14627. relate dus to val across R624;
  14628. select any rref from instances of RREF;
  14629. relate rin to rref across R421;
  14630. select one type related by rref-&gt;CORE[R403]-&gt;TYPE[R401];
  14631. relate type to dus across R625;
  14632. relate oprd to dus across R631;
  14633. end if;
  14634. end if;
  14635. end if;
  14636. </programlisting></para>
  14637. </section>
  14638. <section>
  14639. <title>addAccessedParameterToOperand</title>
  14640. <subtitle></subtitle>
  14641. <para><literallayout xml:space='preserve' class='monospaced'>Add an uninitialized parameter instance to the accessor process model at the
  14642. specified operand. Upon creation of an instance of the accessor and assignment
  14643. of value to the parameter, the uninitialized parameter instance will become
  14644. an initialized parameter instance.</literallayout></para>
  14645. <para><programlisting>result = creationResult_t::SUCCESS;
  14646. select any mdom from instances of MDOM where selected.name == param.domain;
  14647. if (empty mdom)
  14648. result = creationResult_t::FAILURE;
  14649. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14650. else
  14651. select any act from instances of ACT where selected.id == param.actionId;
  14652. if (empty act)
  14653. result = creationResult_t::FAILURE;
  14654. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  14655. else
  14656. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  14657. if (empty pro)
  14658. result = creationResult_t::FAILURE;
  14659. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14660. else
  14661. select any equ related by pro-&gt;RE[R502]-&gt;EQU[R514];
  14662. if (empty equ)
  14663. result = creationResult_t::FAILURE;
  14664. LOG::LogFailure( message:&quot;No equation at process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14665. else
  14666. select any exp related by equ-&gt;EXP[R622] where selected.ordinal_position == param.expressionPosition;
  14667. if (empty exp)
  14668. result = creationResult_t::FAILURE;
  14669. LOG::LogFailure( message:&quot;No expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  14670. else
  14671. prmAccName = act.getAccessorName();
  14672. select any prm from instances of PRM where (selected.name == param.parameter) and (selected.accessor_name == prmAccName);
  14673. if (empty prm)
  14674. select one sta related by act-&gt;AE[R500]-&gt;STA[R509];
  14675. if (not empty sta)
  14676. select any evp from instances of EVP where (selected.name == param.parameter) and (selected.state_name == prmAccName);
  14677. if (not empty evp)
  14678. select one prm related by evp-&gt;PRM[R542];
  14679. end if;
  14680. end if;
  14681. end if;
  14682. if (empty prm)
  14683. result = creationResult_t::FAILURE;
  14684. LOG::LogFailure( message:&quot;No parameter instance instantiated with the given identifier!&quot;);
  14685. else
  14686. select one oprd related by exp-&gt;LHO[R616]-&gt;OPRD[R615];
  14687. if (empty oprd)
  14688. result = creationResult_t::FAILURE;
  14689. LOG::LogFailure( message:&quot;Left hand operand not instantiated!&quot; );
  14690. else
  14691. if (not param.leftHand)
  14692. select one oprd related by exp-&gt;RHO[R617]-&gt;OPRD[R615];
  14693. if (empty oprd)
  14694. result = creationResult_t::FAILURE;
  14695. LOG::LogFailure( message:&quot;Right hand operand not instantiated!&quot; );
  14696. end if;
  14697. end if;
  14698. if (not empty oprd)
  14699. create object instance prn of PRN;
  14700. relate prn to prm across R645;
  14701. create object instance var of VAR;
  14702. relate var to prn across R626;
  14703. create object instance val of VAL;
  14704. relate val to var across R635;
  14705. // Creating an uninitialized variable as empty set
  14706. // We only need one empty set value for all variables using it.
  14707. select any emp from instances of EMP;
  14708. if (empty emp)
  14709. create object instance emp of EMP;
  14710. end if;
  14711. relate emp to val across R629;
  14712. </programlisting></para>
  14713. </section>
  14714. <section>
  14715. <title>addPerspectiveToOperand</title>
  14716. <subtitle></subtitle>
  14717. <para><literallayout xml:space='preserve' class='monospaced'>Add a perspective to the specified relationship instance at the specified
  14718. operand position.</literallayout></para>
  14719. <para><programlisting>result = creationResult_t::SUCCESS;
  14720. select any mdom from instances of MDOM where selected.name == param.domain;
  14721. if (empty mdom)
  14722. result = creationResult_t::FAILURE;
  14723. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14724. else
  14725. select any act from instances of ACT where selected.id == param.actionId;
  14726. if (empty act)
  14727. result = creationResult_t::FAILURE;
  14728. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  14729. else
  14730. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  14731. if (empty pro)
  14732. result = creationResult_t::FAILURE;
  14733. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14734. else
  14735. select any equ related by pro-&gt;RE[R502]-&gt;EQU[R514];
  14736. if (empty equ)
  14737. result = creationResult_t::FAILURE;
  14738. LOG::LogFailure( message:&quot;No equation at process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14739. else
  14740. select any exp related by equ-&gt;EXP[R622] where selected.ordinal_position == param.expressionPosition;
  14741. if (empty exp)
  14742. result = creationResult_t::FAILURE;
  14743. LOG::LogFailure( message:&quot;No expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  14744. else
  14745. select one oprd related by exp-&gt;RHO[R617]-&gt;OPRD[R615];
  14746. if (param.leftHand)
  14747. select one oprd related by exp-&gt;LHO[R616]-&gt;OPRD[R615];
  14748. end if;
  14749. if (empty oprd)
  14750. result = creationResult_t::FAILURE;
  14751. LOG::LogFailure( message:&quot;No operand for expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  14752. else
  14753. select one rin related by oprd-&gt;DUS[R631]-&gt;VAL[R624]-&gt;RIN[R629];
  14754. if (empty rin)
  14755. result = creationResult_t::FAILURE;
  14756. LOG::LogFailure( message:&quot;No relationship instance at the operand for expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  14757. else
  14758. select one psp related by rin-&gt;PSP[R216];
  14759. if (not empty psp)
  14760. result = creationResult_t::DUPLICATE;
  14761. LOG::LogFailure( message:&quot;Relationship instance already has perspective, &quot; + psp.phrase + &quot;!&quot; );
  14762. else
  14763. create object instance trv of TRV;
  14764. select one psp related by rin-&gt;IRL[R638]-&gt;SYR[R201]-&gt;SYP[R206]-&gt;PSP[R204];
  14765. if (empty psp)
  14766. select one psp related by rin-&gt;IRL[R638]-&gt;BIN[R201]-&gt;ACP[R207]-&gt;ASP[R205]-&gt;PSP[R204];
  14767. if (empty psp)
  14768. select one psp related by rin-&gt;IRL[R638]-&gt;BIN[R201]-&gt;PSS[R208]-&gt;ASP[R205]-&gt;PSP[R204];
  14769. end if;
  14770. end if;
  14771. relate psp to rin across R216 using trv;
  14772. create object instance re of RE;
  14773. relate re to psp across R514;
  14774. create object instance ela of ELA;
  14775. relate re to pro across R502 using ela;
  14776. end if;
  14777. end if;
  14778. end if;
  14779. end if;
  14780. end if;
  14781. end if;
  14782. end if;
  14783. end if;
  14784. return result;
  14785. </programlisting></para>
  14786. </section>
  14787. <section>
  14788. <title>addValueToParameter</title>
  14789. <subtitle></subtitle>
  14790. <para><literallayout xml:space='preserve' class='monospaced'>Assigns the named value, or the value help by a named variable, to the named
  14791. parameter at the given position in a process model.</literallayout></para>
  14792. <para><programlisting>result = creationResult_t::SUCCESS;
  14793. select any mdom from instances of MDOM where selected.name == param.domain;
  14794. if (empty mdom)
  14795. result = creationResult_t::FAILURE;
  14796. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14797. else
  14798. select any act from instances of ACT where selected.id == param.actionId;
  14799. if (empty act)
  14800. result = creationResult_t::FAILURE;
  14801. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  14802. else
  14803. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  14804. if (empty pro)
  14805. result = creationResult_t::FAILURE;
  14806. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14807. else
  14808. select any prn related by pro-&gt;RE[R502]-&gt;DUS[R514]-&gt;VAR[R624]-&gt;PRN[R626] where selected.parameter_name == param.parameter;
  14809. if (empty prn)
  14810. result = creationResult_t::FAILURE;
  14811. LOG::LogFailure( message:&quot;No parameter named, &quot; + param.parameter + &quot;, in process!&quot; );
  14812. else
  14813. select any equ related by pro-&gt;RE[R502]-&gt;EQU[R514];
  14814. if (not empty equ)
  14815. // Accessor is being used in an equation, so make sure the upi is correct upi.
  14816. select any exp related by equ-&gt;EXP[R622] where selected.ordinal_position == param.expressionPosition;
  14817. if (empty exp)
  14818. result = creationResult_t::FAILURE;
  14819. LOG::LogFailure( message:&quot;No expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  14820. else
  14821. select one rvl related by exp-&gt;RHO[R617]-&gt;OPRD[R615]-&gt;DUS[R631]-&gt;VAL[R624]-&gt;RVL[R629];
  14822. if (param.leftHand)
  14823. select one rvl related by exp-&gt;LHO[R616]-&gt;OPRD[R615]-&gt;DUS[R631]-&gt;VAL[R624]-&gt;RVL[R629];
  14824. end if;
  14825. if (empty rvl)
  14826. result = creationResult_t::FAILURE;
  14827. LOG::LogFailure( message:&quot;No accessor at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  14828. else
  14829. select any prn related by rvl-&gt;SYA[R529]-&gt;ACC[R505]-&gt;AIN[R640]-&gt;PRN[R647] where selected.parameter_name == param.parameter;
  14830. if (empty prn)
  14831. result = creationResult_t::FAILURE;
  14832. LOG::LogFailure( message:&quot;No parameter named, &quot; + param.parameter + &quot;, at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot; );
  14833. end if;
  14834. end if;
  14835. end if;
  14836. end if;
  14837. end if;
  14838. if ( creationResult_t::SUCCESS == result )
  14839. // Grab the empty set value
  14840. select one val related by prn-&gt;VAR[R626]-&gt;VAL[R635];
  14841. oldval = val;
  14842. // Find named value or variable
  14843. select many duss related by pro-&gt;RE[R502]-&gt;DUS[R514];
  14844. for each dus in duss
  14845. select one usv related by dus-&gt;VAL[R624]-&gt;USV[R629] where selected.value_name == param.name;
  14846. if (empty usv)
  14847. select one trd related by dus-&gt;VAR[R624]-&gt;TRD[R626] where selected.name == param.name;
  14848. if (empty trd)
  14849. select one atn related by dus-&gt;VAR[R624]-&gt;ATN[R626] where selected.attribute_name == param.name;
  14850. if (empty atn)
  14851. select one prn related by dus-&gt;VAR[R624]-&gt;PRN[R626] where selected.parameter_name == param.name;
  14852. if (not empty prn)
  14853. </programlisting></para>
  14854. </section>
  14855. <section>
  14856. <title>addKeywordToOperand</title>
  14857. <subtitle></subtitle>
  14858. <para><literallayout xml:space='preserve' class='monospaced'>Adds a the specified keyword value to the process model at the specified
  14859. statement position.</literallayout></para>
  14860. <para><programlisting>result = creationResult_t::SUCCESS;
  14861. select any mdom from instances of MDOM where selected.name == param.domain;
  14862. if (empty mdom)
  14863. result = creationResult_t::FAILURE;
  14864. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14865. else
  14866. select any act from instances of ACT where selected.id == param.actionId;
  14867. if (empty act)
  14868. result = creationResult_t::FAILURE;
  14869. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  14870. else
  14871. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  14872. if (empty pro)
  14873. result = creationResult_t::FAILURE;
  14874. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14875. else
  14876. select any equ related by pro-&gt;RE[R502]-&gt;EQU[R514];
  14877. if (empty equ)
  14878. result = creationResult_t::FAILURE;
  14879. LOG::LogFailure( message:&quot;No equation at process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14880. else
  14881. select any exp related by equ-&gt;EXP[R622] where selected.ordinal_position == param.expressionPosition;
  14882. if (empty exp)
  14883. result = creationResult_t::FAILURE;
  14884. LOG::LogFailure( message:&quot;No expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  14885. else
  14886. select one oprd related by exp-&gt;LHO[R616]-&gt;OPRD[R615];
  14887. if (not param.leftHand)
  14888. select one oprd related by exp-&gt;RHO[R617]-&gt;OPRD[R615];
  14889. if (empty oprd)
  14890. result = creationResult_t::FAILURE;
  14891. LOG::LogFailure( message:&quot;Right hand operand not instantiated!&quot; );
  14892. end if;
  14893. end if;
  14894. if (empty oprd)
  14895. result = creationResult_t::FAILURE;
  14896. LOG::LogFailure( message:&quot;Left hand operand not instantiated!&quot; );
  14897. else
  14898. select any keyi from instances of KEYI where selected.keyword == param.name;
  14899. if (empty keyi)
  14900. select any key from instances of KEY;
  14901. create object instance keyi of KEYI;
  14902. keyi.keyword = param.name;
  14903. relate keyi to key across R423;
  14904. create object instance val of VAL;
  14905. relate keyi to val across R629;
  14906. create object instance dus of DUS;
  14907. relate val to dus across R624;
  14908. select one type related by key-&gt;CORE[R403]-&gt;TYPE[R401];
  14909. relate type to dus across R625;
  14910. relate oprd to dus across R631;
  14911. else
  14912. select one dus related by keyi-&gt;VAL[R629]-&gt;DUS[R624];
  14913. relate oprd to dus across R631;
  14914. end if;
  14915. end if;
  14916. end if;
  14917. end if;
  14918. end if;
  14919. end if;
  14920. end if;
  14921. return result;
  14922. </programlisting></para>
  14923. </section>
  14924. <section>
  14925. <title>addTypedOperatorToExpression</title>
  14926. <subtitle></subtitle>
  14927. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  14928. <para><programlisting>result = creationResult_t::SUCCESS;
  14929. select any mdom from instances of MDOM where selected.name == param.domain;
  14930. if (empty mdom)
  14931. result = creationResult_t::FAILURE;
  14932. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  14933. else
  14934. select any act from instances of ACT where selected.id == param.actionId;
  14935. if (empty act)
  14936. result = creationResult_t::FAILURE;
  14937. LOG::LogFailure( message:&quot;Action not instantiated!&quot; );
  14938. else
  14939. select any pro related by act-&gt;PRO[R501] where selected.ordinal_position == param.processPosition;
  14940. if (empty pro)
  14941. result = creationResult_t::FAILURE;
  14942. LOG::LogFailure( message:&quot;No process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14943. else
  14944. select any equ related by pro-&gt;RE[R502]-&gt;EQU[R514];
  14945. if (empty equ)
  14946. result = creationResult_t::FAILURE;
  14947. LOG::LogFailure( message:&quot;No equation at process at position, &quot; + TC::realToString( r: param.processPosition ) + &quot;!&quot;);
  14948. else
  14949. select any exp related by equ-&gt;EXP[R622] where selected.ordinal_position == param.expressionPosition;
  14950. if (empty exp)
  14951. result = creationResult_t::FAILURE;
  14952. LOG::LogFailure( message:&quot;No expression at equation at position, &quot; + TC::realToString( r: param.expressionPosition ) + &quot;!&quot;);
  14953. else
  14954. select one oprd related by exp-&gt;RHO[R617]-&gt;OPRD[R615];
  14955. if (empty oprd)
  14956. result = creationResult_t::FAILURE;
  14957. LOG::LogFailure( message:&quot;No operand has been added to the expression!&quot;);
  14958. else
  14959. select any tyop from instances of TYOP where (selected.operation_name == param.operator) and (selected.type_name == param.type) and (selected.result_type_name == param.resultType);
  14960. if (empty tyop)
  14961. result = creationResult_t::FAILURE;
  14962. LOG::LogFailure( message:&quot;No typed operator, &quot; + param.operator + &quot;, with type, &quot; + param.type + &quot;, and result type, &quot; + param.resultType + &quot;, instantiated!&quot;);
  14963. else
  14964. relate tyop to exp across R632;
  14965. create object instance out of OUT;
  14966. relate out to exp across R611;
  14967. relate out to tyop across R634;
  14968. relate out to oprd across R618;
  14969. end if;
  14970. end if;
  14971. end if;
  14972. end if;
  14973. end if;
  14974. end if;
  14975. end if;
  14976. return result;
  14977. </programlisting></para>
  14978. </section>
  14979. </section>
  14980. </section>
  14981. </section>
  14982. <section>
  14983. <title>Object Model Bridges</title>
  14984. <subtitle>Package</subtitle>
  14985. <para><literallayout xml:space='preserve' class='monospaced'>Incoming bridges for creating model elements of the Object Model subsystem as
  14986. metamodel instances.
  14987. <figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-IncomingBridges-ObjectModelBridges-PackageDiagram-figure'>
  14988. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-IncomingBridges-ObjectModelBridges-PackageDiagram-figure-title'>Object Model Bridges Package Diagram</title>
  14989. <mediaobject><imageobject>
  14990. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Incoming Bridges-Object Model Bridges-Package Diagram.png' scalefit='1' width='100%'/>
  14991. </imageobject></mediaobject>
  14992. </figure>
  14993. </literallayout></para>
  14994. <section>
  14995. <title>Functions</title>
  14996. <subtitle>Functions</subtitle>
  14997. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  14998. <title>Object Model Bridges</title>
  14999. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  15000. <thead>
  15001. <row>
  15002. <entry>
  15003. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15004. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15005. </imageobject></mediaobject>
  15006. </literallayout></para>
  15007. </entry>
  15008. <entry>
  15009. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  15010. </entry>
  15011. <entry>
  15012. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  15013. </entry>
  15014. </row>
  15015. </thead>
  15016. <tbody>
  15017. <row>
  15018. <entry>
  15019. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15020. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15021. </imageobject></mediaobject>
  15022. </literallayout></para>
  15023. </entry>
  15024. <entry>
  15025. <para><literallayout xml:space='preserve' class='monospaced'>changeAttributeToDerived(domainattribute_to_deriveattribute_derived_fromobject_to_deriveobject_derived_from)</literallayout></para>
  15026. </entry>
  15027. <entry>
  15028. <para><literallayout xml:space='preserve' class='monospaced'>Add the relationship path from a non-referential attribute to the attribute it
  15029. is derived from.
  15030. Process modeling of the derivation is added in another bridge.</literallayout></para>
  15031. </entry>
  15032. </row>
  15033. <row>
  15034. <entry>
  15035. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15036. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15037. </imageobject></mediaobject>
  15038. </literallayout></para>
  15039. </entry>
  15040. <entry>
  15041. <para><literallayout xml:space='preserve' class='monospaced'>createAttribute(domainobjectnametypeidentifier)</literallayout></para>
  15042. </entry>
  15043. <entry>
  15044. <para><literallayout xml:space='preserve' class='monospaced'>Create an attribute for a given object with type and identification qualifiers.
  15045. It should be noted, that attribute derivations are created in a separate step.</literallayout></para>
  15046. </entry>
  15047. </row>
  15048. <row>
  15049. <entry>
  15050. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15051. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15052. </imageobject></mediaobject>
  15053. </literallayout></para>
  15054. </entry>
  15055. <entry>
  15056. <para><literallayout xml:space='preserve' class='monospaced'>createBinaryRelationship(domainnumberpassiveObjectactiveObjectpassivePhraseactivePhraseactiveConditionalpassiveConditionalactiveManypassiveManyassociativeObject)</literallayout></para>
  15057. </entry>
  15058. <entry>
  15059. <para><literallayout xml:space='preserve' class='monospaced'>Create a binary relationship between two specified object instances, or create
  15060. a temporary binary relationship between one or two specified objects for the
  15061. purpose of statically verifying an object model.
  15062. A binary relationship between the same object must specify the object in
  15063. both the passiveObject and activeObject parameters.
  15064. The temporary instances are created by setting both instance parameters to
  15065. zero. Only setting one to zero is an error.
  15066. The active/passive terminology used is reflective of how verb phrases are
  15067. often used in relationships with one using an active perspective and one using
  15068. a passive perspective. It is a differentiator in the metamodel, but not a hard
  15069. rule for Shlaer-Mellor modeling. If the perspective is unclear or the same in
  15070. both directions, then just arbitrarily assign the parameters.
  15071. Referential cheatsheet:
  15072. (All are reflexive)
  15073. 1:1 - choose either side
  15074. 1:1c - 1c
  15075. 1:M - M
  15076. 1:Mc - Mc
  15077. 1c:1c - use associative object
  15078. 1c:M - use associative object
  15079. 1c:Mc - use associative object
  15080. M:M - use associative object
  15081. Mc:M - use associative object
  15082. Mc:Mc - use associative object
  15083. </literallayout></para>
  15084. </entry>
  15085. </row>
  15086. <row>
  15087. <entry>
  15088. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15089. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15090. </imageobject></mediaobject>
  15091. </literallayout></para>
  15092. </entry>
  15093. <entry>
  15094. <para><literallayout xml:space='preserve' class='monospaced'>createIntersectingSubtype(domainnamekeyletterssuperset1supertype1superset2supertype2)</literallayout></para>
  15095. </entry>
  15096. <entry>
  15097. <para><literallayout xml:space='preserve' class='monospaced'>Create a Shlaer-Mellor intersecting subtype object of the specified supertype
  15098. objects using the specified relationships in the specified domain.
  15099. The subtype and supertypes specify the intersection of two sets (objects).
  15100. The intersecting subtype might have already be created, and this call is
  15101. just specifying another set participating in the intersection, or the subtype
  15102. might already exist as a non-intersecting subtype; this call is then
  15103. transforming the non-intersecting subtype into an intersecting subtype.
  15104. </literallayout></para>
  15105. </entry>
  15106. </row>
  15107. <row>
  15108. <entry>
  15109. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15110. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15111. </imageobject></mediaobject>
  15112. </literallayout></para>
  15113. </entry>
  15114. <entry>
  15115. <para><literallayout xml:space='preserve' class='monospaced'>createMethod(domainobjectinstanceBasedname)</literallayout></para>
  15116. </entry>
  15117. <entry>
  15118. <para><literallayout xml:space='preserve' class='monospaced'>Add an object method to an existing object or subset.</literallayout></para>
  15119. </entry>
  15120. </row>
  15121. <row>
  15122. <entry>
  15123. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15124. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15125. </imageobject></mediaobject>
  15126. </literallayout></para>
  15127. </entry>
  15128. <entry>
  15129. <para><literallayout xml:space='preserve' class='monospaced'>createNonIntersectingSubtype(domainsupertypenamekeylettersrelationship)</literallayout></para>
  15130. </entry>
  15131. <entry>
  15132. <para><literallayout xml:space='preserve' class='monospaced'>Create a Shlaer-Mellor non-intersecting subtype object of the specified
  15133. supertype object using the specified relationship in the specified domain.</literallayout></para>
  15134. </entry>
  15135. </row>
  15136. <row>
  15137. <entry>
  15138. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15139. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15140. </imageobject></mediaobject>
  15141. </literallayout></para>
  15142. </entry>
  15143. <entry>
  15144. <para><literallayout xml:space='preserve' class='monospaced'>createObject(domainisSupertypenamekeyletters)</literallayout></para>
  15145. </entry>
  15146. <entry>
  15147. <para><literallayout xml:space='preserve' class='monospaced'>Create a Shlaer-Mellor object or root supertype object in the specified domain.</literallayout></para>
  15148. </entry>
  15149. </row>
  15150. <row>
  15151. <entry>
  15152. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15153. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15154. </imageobject></mediaobject>
  15155. </literallayout></para>
  15156. </entry>
  15157. <entry>
  15158. <para><literallayout xml:space='preserve' class='monospaced'>createSymmetricReflexiveRelationship(domainnumberobjectphraseconditionalmanyassociativeObject)</literallayout></para>
  15159. </entry>
  15160. <entry>
  15161. <para><literallayout xml:space='preserve' class='monospaced'>Creates a symmetric reflexive relationship on the specified object.
  15162. &quot;4.2 Modeling Symmetric Reflexive Relationships
  15163. On the Information Model, show a symmetric relationship with a relationship
  15164. line that loops back to the object. Since, by definition, such a relationship
  15165. must have the same name, multiplicity, and conditionality at each end, name and
  15166. characterize the relationship at one end only. To ensure that an instance of
  15167. the relationship appears only once in the model, always formalize the
  15168. relationship with an associative object regardless of the multiplicity of the
  15169. relationship itself. In Figure 4.1 we show the Employee WORKS WITH Employee
  15170. relationship so formalized.&quot; [OOA96]
  15171. Unlike The OOA96 Report, this metamodel only requires an associative object for
  15172. relationship multiplicities that normally require an associative object. For
  15173. symmetric reflexive, there is only the one multiplicity that doesn&apos;&apos;t require an
  15174. associative object.</literallayout></para>
  15175. </entry>
  15176. </row>
  15177. <row>
  15178. <entry>
  15179. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15180. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15181. </imageobject></mediaobject>
  15182. </literallayout></para>
  15183. </entry>
  15184. <entry>
  15185. <para><literallayout xml:space='preserve' class='monospaced'>setCompositionConstraint(compositionSegmentNumbercomposingSegmentsdomain)</literallayout></para>
  15186. </entry>
  15187. <entry>
  15188. <para><literallayout xml:space='preserve' class='monospaced'>Set an existing relationship to be constrained as a composition from it&apos;&apos;s
  15189. participation in a relationship loop, rather than by referential attributes.
  15190. &quot;[When a relationship is the logical consequence of other relationships,]
  15191. Such a relationship is said to be formed by composition (as in composition of
  15192. functions in mathematics. [...] A relationship formed by composition cannot be
  15193. formalized in referential attributes, since the connections between the
  15194. instances is already given by the connections between the [composing
  15195. relationships].
  15196. A relationship formed by composition is annotated on the model as [composed
  15197. relationship = 1st composing relationship + 2nd composing relationship [+ nth
  15198. composing relationship ...]].&quot; [OL:MWS]
  15199. &quot;Composed Relationships. Another special case occurs when the constraint on the
  15200. referential attribute is such that it identifies a single instance of the
  15201. associated object. [...] Composition of relationships captures the constraint
  15202. directly in data [...] However the use of composition is limited in that it
  15203. requires that the constraint always identify a single associated instance.&quot;
  15204. [OOA96]
  15205. Both definitions identify compositions as relationship combinations that loop
  15206. back to the originating instance. [miUML] calls compositions, &quot;Constrained
  15207. Loops&quot;, because the compostion equation forms a constraint on the object
  15208. instances allowed to participate.
  15209. [OOA96] also discusses collapsed referentials, but the example shows them
  15210. to be an alternative way to draw compositions on the object model. This
  15211. metamodel will only model a composition and leave the way to display it up to
  15212. the model editor.</literallayout></para>
  15213. </entry>
  15214. </row>
  15215. <row>
  15216. <entry>
  15217. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15218. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15219. </imageobject></mediaobject>
  15220. </literallayout></para>
  15221. </entry>
  15222. <entry>
  15223. <para><literallayout xml:space='preserve' class='monospaced'>addReturnTypeToBridge(domainbridge_nametype)</literallayout></para>
  15224. </entry>
  15225. <entry>
  15226. <para><literallayout xml:space='preserve' class='monospaced'>Add a return type to bridge created as an asynchronous bridge to make it a
  15227. synchronous bridge.</literallayout></para>
  15228. </entry>
  15229. </row>
  15230. <row>
  15231. <entry>
  15232. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15233. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15234. </imageobject></mediaobject>
  15235. </literallayout></para>
  15236. </entry>
  15237. <entry>
  15238. <para><literallayout xml:space='preserve' class='monospaced'>createDomain(name)</literallayout></para>
  15239. </entry>
  15240. <entry>
  15241. <para><literallayout xml:space='preserve' class='monospaced'>Create a domain for the purposes of model verification. This creation will
  15242. always result in a failure, due to the constraint that a domain model must
  15243. contain at least one object. A log entry will be created for any failure.
  15244. A duplication failure will be reported with higher precedence.</literallayout></para>
  15245. </entry>
  15246. </row>
  15247. <row>
  15248. <entry>
  15249. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15250. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15251. </imageobject></mediaobject>
  15252. </literallayout></para>
  15253. </entry>
  15254. <entry>
  15255. <para><literallayout xml:space='preserve' class='monospaced'>createProvidedBridge(domainname)</literallayout></para>
  15256. </entry>
  15257. <entry>
  15258. <para><literallayout xml:space='preserve' class='monospaced'>Create an incoming bridge to the modeled domain.
  15259. The bridge is created as an asynchronous bridge, which can be changed to
  15260. synchronous by adding a return type via another provided bridge of this
  15261. metamodel.</literallayout></para>
  15262. </entry>
  15263. </row>
  15264. <row>
  15265. <entry>
  15266. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15267. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15268. </imageobject></mediaobject>
  15269. </literallayout></para>
  15270. </entry>
  15271. <entry>
  15272. <para><literallayout xml:space='preserve' class='monospaced'>createRequiredBridge(domainnameexternalDomain)</literallayout></para>
  15273. </entry>
  15274. <entry>
  15275. <para><literallayout xml:space='preserve' class='monospaced'>Create an outgoing bridge between the modeled domain and an external domain.
  15276. The bridge is created as an asynchronous bridge, which can be changed to
  15277. synchronous by adding a return type via another provided bridge of this
  15278. metamodel.</literallayout></para>
  15279. </entry>
  15280. </row>
  15281. <row>
  15282. <entry>
  15283. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15284. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15285. </imageobject></mediaobject>
  15286. </literallayout></para>
  15287. </entry>
  15288. <entry>
  15289. <para><literallayout xml:space='preserve' class='monospaced'>addReturnTypeToMethod(domainobjectmethodtype)</literallayout></para>
  15290. </entry>
  15291. <entry>
  15292. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  15293. </entry>
  15294. </row>
  15295. <row>
  15296. <entry>
  15297. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15298. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15299. </imageobject></mediaobject>
  15300. </literallayout></para>
  15301. </entry>
  15302. <entry>
  15303. <para><literallayout xml:space='preserve' class='monospaced'>addReturnTypeToAttributeAction(domainobjectattributetype)</literallayout></para>
  15304. </entry>
  15305. <entry>
  15306. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  15307. </entry>
  15308. </row>
  15309. <row>
  15310. <entry>
  15311. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15312. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15313. </imageobject></mediaobject>
  15314. </literallayout></para>
  15315. </entry>
  15316. <entry>
  15317. <para><literallayout xml:space='preserve' class='monospaced'>addParameterToBridge(domainnamebridge_nametype)</literallayout></para>
  15318. </entry>
  15319. <entry>
  15320. <para><literallayout xml:space='preserve' class='monospaced'>Adds parameter of specified type to the named bridge.</literallayout></para>
  15321. </entry>
  15322. </row>
  15323. <row>
  15324. <entry>
  15325. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  15326. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  15327. </imageobject></mediaobject>
  15328. </literallayout></para>
  15329. </entry>
  15330. <entry>
  15331. <para><literallayout xml:space='preserve' class='monospaced'>addParameterToMethod(domainobjectmethodnametype)</literallayout></para>
  15332. </entry>
  15333. <entry>
  15334. <para><literallayout xml:space='preserve' class='monospaced'>Adds a parameter of the specified type to the named method.</literallayout></para>
  15335. </entry>
  15336. </row>
  15337. </tbody>
  15338. </tgroup>
  15339. </table>
  15340. </literallayout></para>
  15341. <section>
  15342. <title>Function Activities</title>
  15343. <subtitle></subtitle>
  15344. <section>
  15345. <title>changeAttributeToDerived</title>
  15346. <subtitle></subtitle>
  15347. <para><literallayout xml:space='preserve' class='monospaced'>Add the relationship path from a non-referential attribute to the attribute it
  15348. is derived from.
  15349. Process modeling of the derivation is added in another bridge.</literallayout></para>
  15350. <para><programlisting>result = creationResult_t::SUCCESS;
  15351. select any domain from instances of MDOM where selected.name == param.domain;
  15352. if (empty domain)
  15353. result = creationResult_t::FAILURE;
  15354. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  15355. else
  15356. select any subtd from instances of SUB where selected.name == param.object_to_derive;
  15357. if (empty subtd)
  15358. result = creationResult_t::FAILURE;
  15359. LOG::LogFailure( message:&quot;Object, &quot; + param.object_to_derive + &quot;, not instantiated!&quot; );
  15360. else
  15361. select any subdf from instances of SUB where selected.name == param.object_derived_from;
  15362. if (empty subdf)
  15363. result = creationResult_t::FAILURE;
  15364. LOG::LogFailure( message:&quot;Object, &quot; + param.object_derived_from + &quot;, not instantiated!&quot; );
  15365. else
  15366. select any atd from instances of ATR where (selected.name == param.attribute_to_derive) and selected.belongsTo( object: subtd.name );
  15367. if (empty atd)
  15368. result = creationResult_t::FAILURE;
  15369. LOG::LogFailure( message:&quot;Attribute, &quot; + param.attribute_to_derive + &quot; not instantiated!.&quot; );
  15370. else
  15371. select any adf from instances of ATR where (selected.name == param.attribute_derived_from) and selected.belongsTo( object: subdf.name );
  15372. if (empty adf)
  15373. result = creationResult_t::FAILURE;
  15374. LOG::LogFailure( message:&quot;Attribute, &quot; + param.attribute_derived_from + &quot; not instantiated!.&quot; );
  15375. else
  15376. create object instance der of DER;
  15377. select one nrad related by atd-&gt;NRA[R103];
  15378. relate adf to nrad across R127 using der;
  15379. create object instance ae of AE;
  15380. create object instance ata of ATA;
  15381. relate ae to ata across R509;
  15382. relate ata to der across R522;
  15383. create object instance acc of ACC;
  15384. create object instance sya of SYA;
  15385. relate acc to sya across R505;
  15386. create object instance isy of ISY;
  15387. relate isy to sya across R524;
  15388. relate isy to ata across R534;
  15389. create object instance rvl of RVL;
  15390. select one type related by nrad-&gt;TYPE[R123];
  15391. relate type to sya across R529 using rvl;
  15392. create object instance atype of TYPE;
  15393. create object instance core of CORE;
  15394. relate atype to core across R401;
  15395. end if;
  15396. end if;
  15397. end if;
  15398. end if;
  15399. end if;
  15400. return result;
  15401. </programlisting></para>
  15402. </section>
  15403. <section>
  15404. <title>createAttribute</title>
  15405. <subtitle></subtitle>
  15406. <para><literallayout xml:space='preserve' class='monospaced'>Create an attribute for a given object with type and identification qualifiers.
  15407. It should be noted, that attribute derivations are created in a separate step.</literallayout></para>
  15408. <para><programlisting>result = creationResult_t::SUCCESS;
  15409. if (&quot;&quot; == param.name)
  15410. result = creationResult_t::FAILURE;
  15411. LOG::LogFailure( message:&quot;Create attribute failed due to invalid attribute name, &quot; + param.name + &quot;.&quot; );
  15412. else
  15413. select any domain from instances of MDOM where selected.name == param.domain;
  15414. if (empty domain)
  15415. result = creationResult_t::FAILURE;
  15416. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  15417. else
  15418. select any sub from instances of SUB where selected.name == param.object;
  15419. if (empty sub)
  15420. result = creationResult_t::FAILURE;
  15421. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  15422. else
  15423. select any type from instances of TYPE where selected.name == param.type;
  15424. if (empty type)
  15425. result = creationResult_t::FAILURE;
  15426. LOG::LogFailure( message:&quot;Data type, &quot; + param.type + &quot;, not instantiated!&quot; );
  15427. else
  15428. select any oa from instances of OA where selected.object_name == param.object;
  15429. select any spa from instances of SPA where selected.subtype_name == param.object;
  15430. if (not empty oa or not empty spa)
  15431. result = creationResult_t::DUPLICATE;
  15432. LOG::LogFailure( message:&quot;Attribute already instantiated!&quot; );
  15433. else
  15434. create object instance attribute of ATR;
  15435. create object instance nra of NRA;
  15436. relate nra to attribute across R103;
  15437. relate nra to type across R123;
  15438. if (0 != param.identifier)
  15439. create object instance idp of IDP;
  15440. create object instance id of ID;
  15441. relate id to attribute across R102 using idp;
  15442. idp.groupId = param.identifier;
  15443. end if;
  15444. select any obj from instances of OBJ where selected.name == sub.name;
  15445. if (empty obj)
  15446. // This is a specializing attribute.
  15447. create object instance spa of SPA;
  15448. relate spa to attribute across R124;
  15449. select one prp related by sub-&gt;PRP[R107];
  15450. relate spa to prp across R130;
  15451. select many sbts related by prp-&gt;SBT[R122];
  15452. for each sbt in sbts
  15453. select any sbs related by sbt-&gt;OBS[R126]-&gt;SBS[R125];
  15454. if (not empty sbs)
  15455. select one obs related by sbs-&gt;OBS[R125];
  15456. unrelate sbs from obs across R125;
  15457. relate obs to sbs across R125;
  15458. else
  15459. create object instance obs of OBS;
  15460. relate spa to obs across R125;
  15461. relate obs to sbt across R126;
  15462. end if;
  15463. end for;
  15464. else
  15465. create object instance oa of OA;
  15466. relate oa to obj across R129;
  15467. relate oa to attribute across R124;
  15468. end if;
  15469. end if;
  15470. end if;
  15471. end if;
  15472. end if;
  15473. end if;
  15474. </programlisting></para>
  15475. </section>
  15476. <section>
  15477. <title>createBinaryRelationship</title>
  15478. <subtitle></subtitle>
  15479. <para><literallayout xml:space='preserve' class='monospaced'>Create a binary relationship between two specified object instances, or create
  15480. a temporary binary relationship between one or two specified objects for the
  15481. purpose of statically verifying an object model.
  15482. A binary relationship between the same object must specify the object in
  15483. both the passiveObject and activeObject parameters.
  15484. The temporary instances are created by setting both instance parameters to
  15485. zero. Only setting one to zero is an error.
  15486. The active/passive terminology used is reflective of how verb phrases are
  15487. often used in relationships with one using an active perspective and one using
  15488. a passive perspective. It is a differentiator in the metamodel, but not a hard
  15489. rule for Shlaer-Mellor modeling. If the perspective is unclear or the same in
  15490. both directions, then just arbitrarily assign the parameters.
  15491. Referential cheatsheet:
  15492. (All are reflexive)
  15493. 1:1 - choose either side
  15494. 1:1c - 1c
  15495. 1:M - M
  15496. 1:Mc - Mc
  15497. 1c:1c - use associative object
  15498. 1c:M - use associative object
  15499. 1c:Mc - use associative object
  15500. M:M - use associative object
  15501. Mc:M - use associative object
  15502. Mc:Mc - use associative object
  15503. </literallayout></para>
  15504. <para><programlisting>result = creationResult_t::SUCCESS;
  15505. select any domain from instances of MDOM where selected.name == param.domain;
  15506. if (empty domain)
  15507. result = creationResult_t::FAILURE;
  15508. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  15509. elif ((&quot;&quot; == param.activePhrase) or (&quot;&quot; == param.passivePhrase))
  15510. result = creationResult_t::FAILURE;
  15511. LOG::LogFailure( message:&quot;This metamodel requires verb phrases at both ends of the binary relationship!&quot; );
  15512. else
  15513. select any associative from instances of SUB where selected.name == param.associativeObject;
  15514. if (empty associative and
  15515. ((param.activeMany and param.passiveMany) or (param.activeConditional and param.passiveConditional) or
  15516. (param.activeMany and param.passiveConditional) or (param.activeConditional and param.passiveMany)))
  15517. result = creationResult_t::FAILURE;
  15518. LOG::LogFailure( message:&quot;This metamodel enforces use of associative objects for all M:M, M:c, c:M, and c:c relationships!&quot; );
  15519. else
  15520. select any irl from instances of IRL where selected.number == param.number;
  15521. if (not empty irl)
  15522. result = creationResult_t::DUPLICATE;
  15523. LOG::LogFailure( message:&quot;Duplication of relationship number!&quot; );
  15524. else
  15525. select any actSub from instances of SUB where selected.name == param.activeObject;
  15526. if (empty actSub)
  15527. result = creationResult_t::FAILURE;
  15528. LOG::LogFailure( message:&quot;Active object, &quot; + param.activeObject + &quot;, not instantiated!&quot; );
  15529. else
  15530. select any passSub from instances of SUB where selected.name == param.passiveObject;
  15531. if (empty passSub)
  15532. result = creationResult_t::FAILURE;
  15533. LOG::LogFailure( message:&quot;Passive object, &quot; + param.passiveObject + &quot;, not instantiated!&quot; );
  15534. else
  15535. // Create relationship
  15536. create object instance rel of REL;
  15537. create object instance irl of IRL;
  15538. relate actSub to passSub across R133.&apos;&apos;is related to&apos;&apos; using irl;
  15539. relate irl to rel across R200;
  15540. create object instance ncm of NCM;
  15541. relate ncm to irl across R213;
  15542. create object instance bin of BIN;
  15543. relate irl to bin across R201;
  15544. // Add perspectives
  15545. create object instance apsp of PSP;
  15546. apsp.phrase = param.activePhrase;
  15547. apsp.conditional = param.activeConditional;
  15548. if (param.activeMany)
  15549. create object instance amnyp of MNYP;
  15550. relate amnyp to apsp across R210;
  15551. else
  15552. create object instance aonep of ONEP;
  15553. relate aonep to apsp across R210;
  15554. end if;
  15555. create object instance aasp of ASP;
  15556. relate aasp to apsp across R204;
  15557. create object instance aacp of ACP;
  15558. relate aacp to aasp across R205;
  15559. relate aacp to bin across R207;
  15560. create object instance ppsp of PSP;
  15561. ppsp.phrase = param.passivePhrase;
  15562. ppsp.conditional = param.passiveConditional;
  15563. // Add multiplicity
  15564. if (param.passiveMany)
  15565. create object instance pmnyp of MNYP;
  15566. relate pmnyp to ppsp across R210;
  15567. else
  15568. create object instance ponep of ONEP;
  15569. relate ponep to ppsp across R210;
  15570. end if;
  15571. create object instance pasp of ASP;
  15572. relate pasp to ppsp across R204;
  15573. c
  15574. </programlisting></para>
  15575. </section>
  15576. <section>
  15577. <title>createIntersectingSubtype</title>
  15578. <subtitle></subtitle>
  15579. <para><literallayout xml:space='preserve' class='monospaced'>Create a Shlaer-Mellor intersecting subtype object of the specified supertype
  15580. objects using the specified relationships in the specified domain.
  15581. The subtype and supertypes specify the intersection of two sets (objects).
  15582. The intersecting subtype might have already be created, and this call is
  15583. just specifying another set participating in the intersection, or the subtype
  15584. might already exist as a non-intersecting subtype; this call is then
  15585. transforming the non-intersecting subtype into an intersecting subtype.
  15586. </literallayout></para>
  15587. <para><programlisting>result = creationResult_t::SUCCESS;
  15588. if (&quot;&quot; == param.name)
  15589. result = creationResult_t::FAILURE;
  15590. LOG::LogFailure( message:&quot;Create subtype failed due to invalid subtype name, &quot; + param.name + &quot;.&quot;);
  15591. else
  15592. select any domain from instances of MDOM where selected.name == param.domain;
  15593. if (empty domain)
  15594. result = creationResult_t::FAILURE;
  15595. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  15596. else
  15597. select any supersub1 from instances of SUB where selected.name == param.superset1;
  15598. if (empty supersub1)
  15599. result = creationResult_t::FAILURE;
  15600. LOG::LogFailure( message:&quot;Supertype object, &quot; + param.superset1 + &quot;, not instantiated!&quot; );
  15601. else
  15602. select any supersub2 from instances of SUB where selected.name == param.superset2;
  15603. if (empty supersub2)
  15604. result = creationResult_t::FAILURE;
  15605. LOG::LogFailure( message:&quot;Supertype object, &quot; + param.superset2 + &quot;, not instantiated!&quot; );
  15606. else
  15607. // Each supersub must belong to a separate set. Intersecting subsets
  15608. // always belong to different sets, otherwise they are actually a
  15609. // multiway subtyping.
  15610. select any obj from instances of OBJ where selected.hasSubtype( subtype:supersub1.name ) and selected.hasSubtype( subtype:supersub2.name );
  15611. if (not empty obj)
  15612. result = creationResult_t::FAILURE;
  15613. LOG::LogFailure( message:&quot;Supertypes belong to the same object!&quot; );
  15614. else
  15615. // We could be transforming an existing NSB to an ISB, adding an
  15616. // existing ISB to another supertype, or creating a new subtype.
  15617. select any sub from instances of SUB where (selected.name == param.name) or (selected.keyletters == param.keyletters);
  15618. if (empty sub)
  15619. create object instance sub of SUB;
  15620. sub.name = param.name;
  15621. sub.keyletters = param.keyletters;
  15622. create object instance prp of PRP;
  15623. relate sub to prp across R107;
  15624. create object instance isb of ISB;
  15625. relate isb to prp across R108;
  15626. else
  15627. select any sup1 related by sub-&gt;PRP[R107]-&gt;ISB[R108]-&gt;ITS[R135]-&gt;OBS[R125] where selected.supertype_id == param.supertype1;
  15628. select any sup2 related by sub-&gt;PRP[R107]-&gt;ISB[R108]-&gt;ITS[R135]-&gt;OBS[R125] where selected.supertype_id == param.supertype2;
  15629. if (not_empty sup1 and not_empty sup2)
  15630. result = creationResult_t::DUPLICATE;
  15631. LOG::LogFailure( message: &quot;Intersecting subtyping already exists!&quot; );
  15632. else
  15633. // Transform to ISB
  15634. select one nsb related by sub-&gt;PRP[R107]-&gt;NSB[R108];
  15635. if (not empty nsb)
  15636. select one prp related by sub-&gt;PRP[R107];
  15637. unrelate nsb from prp across R108;
  15638. delete object instance nsb;
  15639. create object instance isb of ISB;
  15640. relate isb to prp across R108;
  15641. end if;
  15642. end if;
  15643. end if;
  15644. select many objs from instances of OBJ where selected.hasSubtype( subtype:supersub1.name );
  15645. for each obj1 in objs
  15646. select one prp related by sub-&gt;PRP[R107];
  15647. select one isb related by prp-&gt;ISB[R108];
  15648. select any obj related by isb-&gt;OBJ[R135] where selected.name == obj1.name;
  15649. if (empty
  15650. </programlisting></para>
  15651. </section>
  15652. <section>
  15653. <title>createMethod</title>
  15654. <subtitle></subtitle>
  15655. <para><literallayout xml:space='preserve' class='monospaced'>Add an object method to an existing object or subset.</literallayout></para>
  15656. <para><programlisting>result = creationResult_t::SUCCESS;
  15657. if (&quot;&quot; == param.name)
  15658. result = creationResult_t::FAILURE;
  15659. LOG::LogFailure( message:&quot;Create method failed due to invalid method name, &quot; + param.name + &quot;.&quot; );
  15660. else
  15661. select any domain from instances of MDOM where selected.name == param.domain;
  15662. if (empty domain)
  15663. result = creationResult_t::FAILURE;
  15664. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  15665. else
  15666. select any sub from instances of SUB where selected.name == param.object;
  15667. if (empty sub)
  15668. result = creationResult_t::FAILURE;
  15669. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  15670. else
  15671. select any mth related by sub-&gt;PRP[R107]-&gt;SBT[R122]-&gt;OBS[R126]-&gt;SMT[R125]-&gt;IM[R533]-&gt;MTH[R532] where selected.name == param.name;
  15672. if (empty mth)
  15673. select any mth related by sub-&gt;OBJ[R107]-&gt;NM[R131]-&gt;IM[R533]-&gt;MTH[R532] where selected.name == param.name;
  15674. elif (empty mth and not param.instanceBased)
  15675. select any mth related by sub-&gt;OBJ[R107]-&gt;OM[R132]-&gt;MTH[R532] where selected.name == param.name;
  15676. end if;
  15677. if (not empty mth)
  15678. result = creationResult_t::DUPLICATE;
  15679. LOG::LogFailure( message:&quot;Method, &quot; + param.name + &quot;, already instantiated!&quot; );
  15680. else
  15681. select one obj related by sub-&gt;OBJ[R107];
  15682. if (empty obj and not param.instanceBased)
  15683. result = creationResult_t::FAILURE;
  15684. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, is a subtype, but instance based isn&apos;&apos;t specified!&quot;);
  15685. else
  15686. create object instance mth of MTH;
  15687. create object instance ae of AE;
  15688. relate mth to ae across R509;
  15689. create object instance isy of ISY;
  15690. relate isy to mth across R534;
  15691. create object instance sya of SYA;
  15692. relate sya to isy across R524;
  15693. create object instance acc of ACC;
  15694. acc.name = param.name;
  15695. relate acc to sya across R505;
  15696. if (param.instanceBased)
  15697. create object instance im of IM;
  15698. relate im to mth across R532;
  15699. if (empty obj)
  15700. create object instance smt of SMT;
  15701. relate smt to im across R533;
  15702. select one prp related by sub-&gt;PRP[R107];
  15703. select many sbts related by prp-&gt;SBT[R122];
  15704. for each sbt in sbts
  15705. select any sbs related by sbt-&gt;OBS[R126]-&gt;SBS[R125];
  15706. if (empty sbs)
  15707. create object instance obs of OBS;
  15708. relate smt to obs across R125;
  15709. relate obs to sbt across R126;
  15710. else
  15711. select one obs related by sbs-&gt;OBS[R125];
  15712. unrelate sbs from obs across R125;
  15713. relate smt to obs across R125;
  15714. end if;
  15715. end for;
  15716. else
  15717. create object instance nm of NM;
  15718. relate nm to im across R533;
  15719. relate nm to obj across R131;
  15720. end if;
  15721. else
  15722. create object instance om of OM;
  15723. relate om to mth across R532;
  15724. relate om to obj across R132;
  15725. end if;
  15726. end if;
  15727. end if;
  15728. end if;
  15729. end if;
  15730. end if;
  15731. return result;
  15732. </programlisting></para>
  15733. </section>
  15734. <section>
  15735. <title>createNonIntersectingSubtype</title>
  15736. <subtitle></subtitle>
  15737. <para><literallayout xml:space='preserve' class='monospaced'>Create a Shlaer-Mellor non-intersecting subtype object of the specified
  15738. supertype object using the specified relationship in the specified domain.</literallayout></para>
  15739. <para><programlisting>result = creationResult_t::SUCCESS;
  15740. if (&quot;&quot; == param.name)
  15741. result = creationResult_t::FAILURE;
  15742. LOG::LogFailure( message:&quot;Create subtype failed due to invalid subtype name, &quot; + param.name + &quot;.&quot;);
  15743. else
  15744. select any domain from instances of MDOM where selected.name == param.domain;
  15745. if (empty domain)
  15746. result = creationResult_t::FAILURE;
  15747. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  15748. else
  15749. select any supersub from instances of SUB where selected.name == param.supertype;
  15750. if (empty supersub)
  15751. result = creationResult_t::FAILURE;
  15752. LOG::LogFailure( message:&quot;Supertype object, &quot; + param.supertype + &quot;, not instantiated!&quot; );
  15753. else
  15754. select any sub from instances of SUB where (selected.name == param.name) or (selected.keyletters == param.keyletters);
  15755. if (not empty sub)
  15756. result = creationResult_t::DUPLICATE;
  15757. LOG::LogFailure( message:&quot;Duplication of subtype name, &quot; + sub.name + &quot;, or keyletters,&quot; + sub.keyletters + &quot;!&quot; );
  15758. else
  15759. create object instance sub of SUB;
  15760. create object instance prp of PRP;
  15761. relate sub to prp across R107;
  15762. create object instance nsb of NSB;
  15763. relate prp to nsb across R108;
  15764. select any sup from instances of SUP where selected.id == param.relationship;
  15765. if (empty sup)
  15766. create object instance sup of SUP;
  15767. // Determine if object or subtype partitioning
  15768. select one obj related by supersub-&gt;OBJ[R107];
  15769. if (not empty obj)
  15770. create object instance chd of CHD;
  15771. relate sup to obj across R134 using chd;
  15772. else
  15773. select one superprp related by supersub-&gt;PRP[R107];
  15774. create object instance mlv of MLV;
  15775. relate sup to superprp across R114 using mlv;
  15776. end if;
  15777. end if;
  15778. relate sup to nsb across R136;
  15779. create object instance sbt of SBT;
  15780. relate prp to sup across R122 using sbt;
  15781. create object instance obs of OBS;
  15782. relate obs to sbt across R126;
  15783. // All non-intersecting subtypes are initially created as a
  15784. // subsequent specialization. The subtype is migrated when any other
  15785. // type of specialization is added.
  15786. create object instance sbs of SBS;
  15787. relate sbs to obs across R125;
  15788. end if;
  15789. end if;
  15790. end if;
  15791. end if;
  15792. return result;
  15793. </programlisting></para>
  15794. </section>
  15795. <section>
  15796. <title>createObject</title>
  15797. <subtitle></subtitle>
  15798. <para><literallayout xml:space='preserve' class='monospaced'>Create a Shlaer-Mellor object or root supertype object in the specified domain.</literallayout></para>
  15799. <para><programlisting>result = creationResult_t::SUCCESS;
  15800. if (&quot;&quot; == param.name)
  15801. result = creationResult_t::FAILURE;
  15802. LOG::LogFailure( message:&quot;Create object failed due to invalid object name, &quot; + param.name + &quot;.&quot; );
  15803. else
  15804. select any domain from instances of MDOM where selected.name == param.domain;
  15805. if (empty domain)
  15806. result = creationResult_t::FAILURE;
  15807. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  15808. else
  15809. select any obj from instances of OBJ where selected.name == param.name;
  15810. if (not empty obj)
  15811. result = creationResult_t::DUPLICATE;
  15812. LOG::LogFailure( message:&quot;Duplication of object name, &quot; + obj.name + &quot;!&quot; );
  15813. else
  15814. create object instance obj of OBJ;
  15815. relate obj to domain across R105;
  15816. create object instance sub of SUB;
  15817. sub.name = param.name;
  15818. if (&quot;&quot; == param.keyletters)
  15819. sub.keyletters = param.name;
  15820. else
  15821. sub.keyletters = param.keyletters;
  15822. end if;
  15823. LOG::LogInfo( message:&quot;Object, &quot; + param.name + &quot;, created with no attributes.&quot; );
  15824. end if;
  15825. end if;
  15826. end if;
  15827. return result;
  15828. </programlisting></para>
  15829. </section>
  15830. <section>
  15831. <title>createSymmetricReflexiveRelationship</title>
  15832. <subtitle></subtitle>
  15833. <para><literallayout xml:space='preserve' class='monospaced'>Creates a symmetric reflexive relationship on the specified object.
  15834. &quot;4.2 Modeling Symmetric Reflexive Relationships
  15835. On the Information Model, show a symmetric relationship with a relationship
  15836. line that loops back to the object. Since, by definition, such a relationship
  15837. must have the same name, multiplicity, and conditionality at each end, name and
  15838. characterize the relationship at one end only. To ensure that an instance of
  15839. the relationship appears only once in the model, always formalize the
  15840. relationship with an associative object regardless of the multiplicity of the
  15841. relationship itself. In Figure 4.1 we show the Employee WORKS WITH Employee
  15842. relationship so formalized.&quot; [OOA96]
  15843. Unlike The OOA96 Report, this metamodel only requires an associative object for
  15844. relationship multiplicities that normally require an associative object. For
  15845. symmetric reflexive, there is only the one multiplicity that doesn&apos;&apos;t require an
  15846. associative object.</literallayout></para>
  15847. <para><programlisting>result = creationResult_t::SUCCESS;
  15848. select any domain from instances of MDOM where selected.name == param.domain;
  15849. if (empty domain)
  15850. result = creationResult_t::FAILURE;
  15851. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  15852. elif (&quot;&quot; == param.phrase)
  15853. result = creationResult_t::FAILURE;
  15854. LOG::LogFailure( message:&quot;This metamodel requires a verb phrase on a unary relationship!&quot; );
  15855. else
  15856. select any associative from instances of SUB where selected.name == param.associativeObject;
  15857. if (empty associative and (param.many or param.conditional))
  15858. result = creationResult_t::FAILURE;
  15859. LOG::LogFailure( message:&quot;This metamodel enforces use of associative objects for all M:M, M:c, c:M, and c:c relationships!&quot; );
  15860. else
  15861. select any irl from instances of IRL where selected.number == param.number;
  15862. if (not empty irl)
  15863. result = creationResult_t::DUPLICATE;
  15864. LOG::LogFailure( message:&quot;Duplication of relationship number!&quot; );
  15865. else
  15866. select any sub from instances of SUB where selected.name == param.object;
  15867. if (empty sub)
  15868. result = creationResult_t::FAILURE;
  15869. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  15870. else
  15871. // Create relationship
  15872. create object instance rel of REL;
  15873. create object instance irl of IRL;
  15874. relate sub to sub across R133.&apos;&apos;is related to&apos;&apos; using irl;
  15875. relate irl to rel across R200;
  15876. create object instance ncm of NCM;
  15877. relate ncm to irl across R213;
  15878. create object instance syr of SYR;
  15879. relate syr to irl across R201;
  15880. // Add perspective
  15881. create object instance psp of PSP;
  15882. create object instance syp of SYP;
  15883. relate syp to psp across R204;
  15884. relate syr to syp across R206;
  15885. // Add multiplicity
  15886. if (param.many)
  15887. create object instance mnyp of MNYP;
  15888. relate mnyp to psp across R210;
  15889. else
  15890. create object instance onep of ONEP;
  15891. relate onep to psp across R210;
  15892. end if;
  15893. // Determine referential location
  15894. idSub = sub;
  15895. if (not empty associative)
  15896. idSub = associative;
  15897. end if;
  15898. // Find identifiers and create referentials
  15899. idSub.associateReferentials( relationship:irl.number );
  15900. if (not empty associative)
  15901. create object instance rel of REL;
  15902. create object instance arl of ARL;
  15903. relate arl to rel across R200;
  15904. relate arl to irl across R212;
  15905. relate idSub to arl across R202;
  15906. end if;
  15907. end if;
  15908. end if;
  15909. end if;
  15910. end if;
  15911. </programlisting></para>
  15912. </section>
  15913. <section>
  15914. <title>setCompositionConstraint</title>
  15915. <subtitle></subtitle>
  15916. <para><literallayout xml:space='preserve' class='monospaced'>Set an existing relationship to be constrained as a composition from it&apos;&apos;s
  15917. participation in a relationship loop, rather than by referential attributes.
  15918. &quot;[When a relationship is the logical consequence of other relationships,]
  15919. Such a relationship is said to be formed by composition (as in composition of
  15920. functions in mathematics. [...] A relationship formed by composition cannot be
  15921. formalized in referential attributes, since the connections between the
  15922. instances is already given by the connections between the [composing
  15923. relationships].
  15924. A relationship formed by composition is annotated on the model as [composed
  15925. relationship = 1st composing relationship + 2nd composing relationship [+ nth
  15926. composing relationship ...]].&quot; [OL:MWS]
  15927. &quot;Composed Relationships. Another special case occurs when the constraint on the
  15928. referential attribute is such that it identifies a single instance of the
  15929. associated object. [...] Composition of relationships captures the constraint
  15930. directly in data [...] However the use of composition is limited in that it
  15931. requires that the constraint always identify a single associated instance.&quot;
  15932. [OOA96]
  15933. Both definitions identify compositions as relationship combinations that loop
  15934. back to the originating instance. [miUML] calls compositions, &quot;Constrained
  15935. Loops&quot;, because the compostion equation forms a constraint on the object
  15936. instances allowed to participate.
  15937. [OOA96] also discusses collapsed referentials, but the example shows them
  15938. to be an alternative way to draw compositions on the object model. This
  15939. metamodel will only model a composition and leave the way to display it up to
  15940. the model editor.</literallayout></para>
  15941. <para><programlisting>result = creationResult_t::SUCCESS;
  15942. select any domain from instances of MDOM where selected.name == param.domain;
  15943. if (empty domain)
  15944. result = creationResult_t::FAILURE;
  15945. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  15946. else
  15947. select any irl from instances of IRL where selected.number == param.compositionSegmentNumber;
  15948. if (empty irl)
  15949. result = creationResult_t::FAILURE;
  15950. LOG::LogFailure( message:&quot;Composition relationship, &quot; + TC::intToString( i:param.compositionSegmentNumber ) + &quot;, not instantiated!&quot; );
  15951. else
  15952. number_of_participants = param.composingSegments.length;
  15953. i = 0;
  15954. while ( number_of_participants &gt; i )
  15955. select any pirl from instances of IRL where selected.number == param.composingSegments[i];
  15956. if (empty pirl)
  15957. result = creationResult_t::FAILURE;
  15958. LOG::LogFailure( message:&quot;Composition relationship, &quot; + TC::intToString( i:param.composingSegments[i] ) + &quot;, not instantiated!&quot; );
  15959. end if;
  15960. i = i + 1;
  15961. end while;
  15962. if (result == creationResult_t::SUCCESS)
  15963. select one ncm related by irl-&gt;NCM[R213];
  15964. select many refs related by ncm-&gt;REF[R128];
  15965. for each ref in refs
  15966. unrelate ref from ncm across R128;
  15967. delete object instance ref;
  15968. end for;
  15969. unrelate ncm from irl across R213;
  15970. end if;
  15971. create object instance com of COM;
  15972. relate com to irl across R213;
  15973. create object instance csl of CSL;
  15974. relate csl to com across R214;
  15975. i = 0;
  15976. while ( number_of_participants &gt; i )
  15977. select any pirl from instances of IRL where selected.number == param.composingSegments[i];
  15978. create object instance lseg of LSEG;
  15979. relate pirl to csl across R215 using lseg;
  15980. end while;
  15981. end if;
  15982. end if;
  15983. return result;
  15984. </programlisting></para>
  15985. </section>
  15986. <section>
  15987. <title>addReturnTypeToBridge</title>
  15988. <subtitle></subtitle>
  15989. <para><literallayout xml:space='preserve' class='monospaced'>Add a return type to bridge created as an asynchronous bridge to make it a
  15990. synchronous bridge.</literallayout></para>
  15991. <para><programlisting>result = creationResult_t::SUCCESS;
  15992. select any mdom from instances of MDOM where selected.name == param.domain;
  15993. if (empty mdom)
  15994. result = creationResult_t::FAILURE;
  15995. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  15996. else
  15997. select any asb from instances of ASB where selected.name == param.bridge_name;
  15998. if (empty asb)
  15999. result = creationResult_t::FAILURE;
  16000. LOG::LogFailure( message:&quot;Bridge, &quot; + param.bridge_name + &quot;, not instantiated!&quot; );
  16001. else
  16002. select any type from instances of TYPE where selected.name == param.type;
  16003. if (empty type)
  16004. result = creationResult_t::FAILURE;
  16005. LOG::LogFailure( message:&quot;Data type, &quot; + param.type + &quot;, not instantiated!&quot; );
  16006. else
  16007. create object instance syb of SYB;
  16008. select one brg related by asb-&gt;BRG[R3];
  16009. unrelate asb from brg across R3;
  16010. relate syb to brg across R3;
  16011. select one asa related by asb-&gt;ASA[R506];
  16012. unrelate asb from asa across R506;
  16013. delete object instance asb;
  16014. select one acc related by asa-&gt;ACC[R505];
  16015. unrelate asa from acc across R505;
  16016. delete object instance asa;
  16017. create object instance sya of SYA;
  16018. relate sya to acc across R505;
  16019. relate sya to syb across R524;
  16020. create object instance val of VAL;
  16021. create object instance dus of DUS;
  16022. relate dus to type across R625;
  16023. create object instance re of RE;
  16024. relate dus to re across R514;
  16025. relate val to dus across R624;
  16026. create object instance rvl of RVL;
  16027. relate rvl to val across R629;
  16028. relate sya to type across R529 using rvl;
  16029. end if;
  16030. end if;
  16031. end if;
  16032. return result;
  16033. </programlisting></para>
  16034. </section>
  16035. <section>
  16036. <title>createDomain</title>
  16037. <subtitle></subtitle>
  16038. <para><literallayout xml:space='preserve' class='monospaced'>Create a domain for the purposes of model verification. This creation will
  16039. always result in a failure, due to the constraint that a domain model must
  16040. contain at least one object. A log entry will be created for any failure.
  16041. A duplication failure will be reported with higher precedence.</literallayout></para>
  16042. <para><programlisting>result = creationResult_t::FAILURE;
  16043. select any dom from instances of DOM where selected.name == param.name;
  16044. if (empty dom)
  16045. if (&quot;&quot; == param.name)
  16046. LOG::LogFailure( message:&quot;Create domain failed due to invalid name.&quot; );
  16047. else
  16048. create object instance dom of DOM;
  16049. create object instance mdom of MDOM;
  16050. relate dom to mdom across R1;
  16051. // Instantiate core types, or domain type creation will fail.
  16052. ::createCoreTypes();
  16053. LOG::LogInfo( message:&quot;Modeled domain created without any objects.&quot; );
  16054. end if;
  16055. else
  16056. result = creationResult_t::DUPLICATE;
  16057. LOG::LogFailure(message:&quot;A domain named, &quot; + param.name + &quot;, already exists!&quot;);
  16058. end if;
  16059. return result;
  16060. </programlisting></para>
  16061. </section>
  16062. <section>
  16063. <title>createProvidedBridge</title>
  16064. <subtitle></subtitle>
  16065. <para><literallayout xml:space='preserve' class='monospaced'>Create an incoming bridge to the modeled domain.
  16066. The bridge is created as an asynchronous bridge, which can be changed to
  16067. synchronous by adding a return type via another provided bridge of this
  16068. metamodel.</literallayout></para>
  16069. <para><programlisting>result = creationResult_t::SUCCESS;
  16070. if (&quot;&quot; == param.name)
  16071. result = creationResult_t::FAILURE;
  16072. LOG::LogFailure( message:&quot;Create bridge failed due to invalid name, &quot; + param.name + &quot;.&quot; );
  16073. else
  16074. select any mdom from instances of MDOM where selected.name == param.domain;
  16075. if (empty mdom)
  16076. result = creationResult_t::FAILURE;
  16077. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  16078. else
  16079. select any acc from instances of ACC where selected.name == param.name;
  16080. if (not empty acc)
  16081. select one syb related by acc-&gt;SYA[R505]-&gt;SYB[R524];
  16082. select one asb related by acc-&gt;ASA[R505]-&gt;ASB[R506];
  16083. if (not empty syb or not empty asb)
  16084. result = creationResult_t::DUPLICATE;
  16085. LOG::LogFailure( message:&quot;Bridge, &quot; + param.name + &quot;, already instantiated!&quot; );
  16086. end if;
  16087. end if;
  16088. if ( creationResult_t::SUCCESS == result )
  16089. create object instance brg of BRG;
  16090. create object instance inbr of INBR;
  16091. relate inbr to brg across R4;
  16092. relate inbr to mdom across R6;
  16093. create object instance asb of ASB;
  16094. relate asb to brg across R3;
  16095. create object instance acc of ACC;
  16096. acc.name = param.name;
  16097. create object instance asa of ASA;
  16098. relate asa to acc across R505;
  16099. relate asa to asb across R506;
  16100. end if;
  16101. end if;
  16102. end if;
  16103. return result;
  16104. </programlisting></para>
  16105. </section>
  16106. <section>
  16107. <title>createRequiredBridge</title>
  16108. <subtitle></subtitle>
  16109. <para><literallayout xml:space='preserve' class='monospaced'>Create an outgoing bridge between the modeled domain and an external domain.
  16110. The bridge is created as an asynchronous bridge, which can be changed to
  16111. synchronous by adding a return type via another provided bridge of this
  16112. metamodel.</literallayout></para>
  16113. <para><programlisting>result = creationResult_t::SUCCESS;
  16114. if (&quot;&quot; == param.name)
  16115. result = creationResult_t::FAILURE;
  16116. LOG::LogFailure( message:&quot;Create bridge failed due to invalid object name, &quot; + param.name + &quot;.&quot; );
  16117. else
  16118. select any mdom from instances of MDOM where selected.name == param.domain;
  16119. if (empty mdom)
  16120. result = creationResult_t::FAILURE;
  16121. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  16122. else
  16123. select any acc from instances of ACC where selected.name == param.name;
  16124. if (not empty acc)
  16125. select one syb related by acc-&gt;SYA[R505]-&gt;SYB[R524];
  16126. select one asb related by acc-&gt;ASA[R505]-&gt;ASB[R506];
  16127. if (not empty syb or not empty asb)
  16128. result = creationResult_t::DUPLICATE;
  16129. LOG::LogFailure( message:&quot;Bridge, &quot; + param.name + &quot;, already instantiated!&quot; );
  16130. end if;
  16131. end if;
  16132. if ( creationResult_t::SUCCESS == result )
  16133. select any edom from instances of EDOM where selected.name == param.externalDomain;
  16134. if (empty edom)
  16135. create object instance edom of EDOM;
  16136. end if;
  16137. create object instance brg of BRG;
  16138. create object instance oubr of OUBR;
  16139. relate oubr to brg across R4;
  16140. relate mdom to edom across R5 using oubr;
  16141. create object instance asb of ASB;
  16142. relate asb to brg across R3;
  16143. create object instance acc of ACC;
  16144. acc.name = param.name;
  16145. create object instance asa of ASA;
  16146. relate asa to acc across R505;
  16147. relate asa to asb across R506;
  16148. end if;
  16149. end if;
  16150. end if;
  16151. return result;
  16152. </programlisting></para>
  16153. </section>
  16154. <section>
  16155. <title>addReturnTypeToMethod</title>
  16156. <subtitle></subtitle>
  16157. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  16158. <para><programlisting>result = creationResult_t::SUCCESS;
  16159. select any mdom from instances of MDOM where selected.name == param.domain;
  16160. if (empty mdom)
  16161. result = creationResult_t::FAILURE;
  16162. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  16163. else
  16164. select any sub from instances of SUB where selected.name == param.object;
  16165. if (empty sub)
  16166. result = creationResult_t::FAILURE;
  16167. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  16168. else
  16169. select any mth from instances of MTH where (selected.name == param.method) and selected.belongsTo( object:param.object );
  16170. if (empty mth)
  16171. result = creationResult_t::FAILURE;
  16172. LOG::LogFailure( message:&quot;Method, &quot; + param.method + &quot;, not instantiated!&quot; );
  16173. else
  16174. select any type from instances of TYPE where selected.name == param.type;
  16175. if (empty type)
  16176. result = creationResult_t::FAILURE;
  16177. LOG::LogFailure( message:&quot;Data type, &quot; + param.type + &quot;, not instantiated!&quot; );
  16178. else
  16179. select one sya related by mth-&gt;ISY[R534]-&gt;SYA[R524];
  16180. create object instance rvl of RVL;
  16181. create object instance val of VAL;
  16182. relate rvl to val across R629;
  16183. create object instance dus of DUS;
  16184. relate val to dus across R624;
  16185. relate dus to type across R625;
  16186. relate sya to type across R529 using rvl;
  16187. end if;
  16188. end if;
  16189. end if;
  16190. end if;
  16191. return result;
  16192. </programlisting></para>
  16193. </section>
  16194. <section>
  16195. <title>addReturnTypeToAttributeAction</title>
  16196. <subtitle></subtitle>
  16197. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  16198. <para><programlisting>result = creationResult_t::SUCCESS;
  16199. select any mdom from instances of MDOM where selected.name == param.domain;
  16200. if (empty mdom)
  16201. result = creationResult_t::FAILURE;
  16202. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  16203. else
  16204. select any sub from instances of SUB where selected.name == param.object;
  16205. if (empty sub)
  16206. result = creationResult_t::FAILURE;
  16207. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  16208. else
  16209. select any atr from instances of ATR where (selected.name == param.attribute) and selected.belongsTo( object:param.object );
  16210. if (empty atr)
  16211. result = creationResult_t::FAILURE;
  16212. LOG::LogFailure( message:&quot;Attribute, &quot; + param.attribute + &quot;, not instantiated!&quot; );
  16213. else
  16214. select any type from instances of TYPE where selected.name == param.type;
  16215. if (empty type)
  16216. result = creationResult_t::FAILURE;
  16217. LOG::LogFailure( message:&quot;Data type, &quot; + param.type + &quot;, not instantiated!&quot; );
  16218. else
  16219. select one sya related by atr-&gt;NRA[R103]-&gt;ATA[R523]-&gt;ISY[R534]-&gt;SYA[R524];
  16220. create object instance rvl of RVL;
  16221. create object instance val of VAL;
  16222. relate rvl to val across R629;
  16223. create object instance dus of DUS;
  16224. relate val to dus across R624;
  16225. relate dus to type across R625;
  16226. relate sya to type across R529 using rvl;
  16227. end if;
  16228. end if;
  16229. end if;
  16230. end if;
  16231. return result;
  16232. </programlisting></para>
  16233. </section>
  16234. <section>
  16235. <title>addParameterToBridge</title>
  16236. <subtitle></subtitle>
  16237. <para><literallayout xml:space='preserve' class='monospaced'>Adds parameter of specified type to the named bridge.</literallayout></para>
  16238. <para><programlisting>result = creationResult_t::SUCCESS;
  16239. select any domain from instances of MDOM where selected.name == param.domain;
  16240. if (empty domain)
  16241. result = creationResult_t::FAILURE;
  16242. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  16243. else
  16244. select any acc from instances of ACC where selected.name == param.bridge_name;
  16245. if (empty acc)
  16246. result = creationResult_t::FAILURE;
  16247. LOG::LogFailure( message:&quot;Accessor, &quot; + param.bridge_name + &quot;, not instantiated!&quot; );
  16248. else
  16249. select one brg related by acc-&gt;SYA[R505]-&gt;SYB[R524]-&gt;BRG[R3];
  16250. if (empty brg)
  16251. select one brg related by acc-&gt;ASA[R505]-&gt;ASB[R506]-&gt;BRG[R3];
  16252. if (empty brg)
  16253. result = creationResult_t::FAILURE;
  16254. LOG::LogFailure( message:&quot;Bridge, &quot; + param.bridge_name + &quot;, not instantiated!&quot; );
  16255. end if;
  16256. end if;
  16257. if (not empty brg)
  16258. select any prm related by acc-&gt;PRM[R540] where selected.name == param.name;
  16259. if (not empty prm)
  16260. result = creationResult_t::DUPLICATE;
  16261. LOG::LogFailure( message:&quot;Parameter data,&quot; + param.name + &quot;, already added to accessor!&quot; );
  16262. else
  16263. select any type from instances of TYPE where selected.name == param.type;
  16264. if (not empty type)
  16265. result = creationResult_t::FAILURE;
  16266. LOG::LogFailure( message:&quot;Type, &quot; + param.type + &quot;, not instantiated!&quot; );
  16267. else
  16268. create object instance prm of PRM;
  16269. relate prm to acc across R540;
  16270. create object instance nep of NEP;
  16271. relate nep to prm across R542;
  16272. end if;
  16273. end if;
  16274. end if;
  16275. end if;
  16276. end if;
  16277. return result;
  16278. </programlisting></para>
  16279. </section>
  16280. <section>
  16281. <title>addParameterToMethod</title>
  16282. <subtitle></subtitle>
  16283. <para><literallayout xml:space='preserve' class='monospaced'>Adds a parameter of the specified type to the named method.</literallayout></para>
  16284. <para><programlisting>result = creationResult_t::SUCCESS;
  16285. select any domain from instances of MDOM where selected.name == param.domain;
  16286. if (empty domain)
  16287. result = creationResult_t::FAILURE;
  16288. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  16289. else
  16290. select any sub from instances of SUB where (selected.name == param.object);
  16291. if (empty sub)
  16292. result = creationResult_t::FAILURE;
  16293. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated in domain!&quot; );
  16294. else
  16295. select any mth from instances of MTH where (selected.name == param.method) and selected.belongsTo( object:sub.name );
  16296. if (empty mth)
  16297. result = creationResult_t::FAILURE;
  16298. LOG::LogFailure( message:&quot;Method, &quot; + param.method + &quot;, of object, &quot; + param.object + &quot;, not instantiated!&quot; );
  16299. else
  16300. select one acc related by mth-&gt;ISY[R534]-&gt;SYA[R524]-&gt;ACC[R505];
  16301. select any prm related by acc-&gt;PRM[R540] where selected.name == param.name;
  16302. if (not empty prm)
  16303. result = creationResult_t::DUPLICATE;
  16304. LOG::LogFailure( message:&quot;Parameter data,&quot; + param.name + &quot;, already added to accessor!&quot; );
  16305. else
  16306. select any type from instances of TYPE where selected.name == param.type;
  16307. if (not empty type)
  16308. result = creationResult_t::FAILURE;
  16309. LOG::LogFailure( message:&quot;Type, &quot; + param.type + &quot;, not instantiated!&quot; );
  16310. else
  16311. create object instance prm of PRM;
  16312. relate prm to acc across R540;
  16313. create object instance nep of NEP;
  16314. relate nep to prm across R542;
  16315. end if;
  16316. end if;
  16317. end if;
  16318. end if;
  16319. end if;
  16320. return result;
  16321. </programlisting></para>
  16322. </section>
  16323. </section>
  16324. </section>
  16325. </section>
  16326. <section>
  16327. <title>Dynamic Model Bridges</title>
  16328. <subtitle>Package</subtitle>
  16329. <para><literallayout xml:space='preserve' class='monospaced'>Incoming bridges for creating model elements of the Dynamics subsystem as
  16330. metamodel instances.
  16331. <figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-IncomingBridges-DynamicModelBridges-PackageDiagram-figure'>
  16332. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-IncomingBridges-DynamicModelBridges-PackageDiagram-figure-title'>Dynamic Model Bridges Package Diagram</title>
  16333. <mediaobject><imageobject>
  16334. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Incoming Bridges-Dynamic Model Bridges-Package Diagram.png' scalefit='1' width='100%'/>
  16335. </imageobject></mediaobject>
  16336. </figure>
  16337. </literallayout></para>
  16338. <section>
  16339. <title>Functions</title>
  16340. <subtitle>Functions</subtitle>
  16341. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  16342. <title>Dynamic Model Bridges</title>
  16343. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  16344. <thead>
  16345. <row>
  16346. <entry>
  16347. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  16348. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  16349. </imageobject></mediaobject>
  16350. </literallayout></para>
  16351. </entry>
  16352. <entry>
  16353. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  16354. </entry>
  16355. <entry>
  16356. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  16357. </entry>
  16358. </row>
  16359. </thead>
  16360. <tbody>
  16361. <row>
  16362. <entry>
  16363. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  16364. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  16365. </imageobject></mediaobject>
  16366. </literallayout></para>
  16367. </entry>
  16368. <entry>
  16369. <para><literallayout xml:space='preserve' class='monospaced'>addDataToEntryRule(domainobjectstateNamedataType)</literallayout></para>
  16370. </entry>
  16371. <entry>
  16372. <para><literallayout xml:space='preserve' class='monospaced'>Add a data member to an entry rule. An entry rule with no data members will not
  16373. allow an event with parameters to be assigned to it&apos;&apos;s transition. An entry rule
  16374. with data will use the data to ensure the same data rule is followed whenever
  16375. an event is assigned to it&apos;&apos;s transition.</literallayout></para>
  16376. </entry>
  16377. </row>
  16378. <row>
  16379. <entry>
  16380. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  16381. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  16382. </imageobject></mediaobject>
  16383. </literallayout></para>
  16384. </entry>
  16385. <entry>
  16386. <para><literallayout xml:space='preserve' class='monospaced'>createState(domainobjecttypeisAssignernamenumber)</literallayout></para>
  16387. </entry>
  16388. <entry>
  16389. <para><literallayout xml:space='preserve' class='monospaced'>Adds a state to an existing state model.</literallayout></para>
  16390. </entry>
  16391. </row>
  16392. <row>
  16393. <entry>
  16394. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  16395. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  16396. </imageobject></mediaobject>
  16397. </literallayout></para>
  16398. </entry>
  16399. <entry>
  16400. <para><literallayout xml:space='preserve' class='monospaced'>createStateModelSegment(domainobject)</literallayout></para>
  16401. </entry>
  16402. <entry>
  16403. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty instance-based state model segment to the specified subset.
  16404. As states are unconditional requirements, an informational log message is
  16405. generated to remind the user that states need to be created.
  16406. Segments can be whole stand-alone state models, or splices of state models.
  16407. At the set level, a state model segment is subtyped as a general segment to
  16408. allow for subset segments to be subtyped as specializing segments. General
  16409. segments can only exist at the object level (topmost) of a subtyping hierarchy.
  16410. Subtype segments are labeled peer segments when they represent a whole
  16411. lifecycle (even if a splice), or a splice when they represent a unique path
  16412. within the whole lifecycle.
  16413. Splices are branches formed via one supertype relationship. Splicing can be
  16414. done multi-level, but a multidirectional supertype requires another splice. An
  16415. object instance can only be in one state at a time, and the state must be
  16416. unambiguous.
  16417. A splice represents a instance-determined branch in the path of the
  16418. lifecycle. A splice should always share a common transition from a common state
  16419. to start the path, but the path doesn&apos;&apos;t have to rejoin at the same state or by
  16420. the same transition. The &quot;same data&quot; rule applies to the common transition at
  16421. the start of a splice, even though the instance-based states can have their own
  16422. process models.
  16423. Peer subtype segments are not splices of a supertype; they represent the
  16424. whole lifecycle of an object instance. Peer subtypes restrict the legality of
  16425. the existence of state models among subtypes, because an object instance can&apos;&apos;t
  16426. have two concurrent lifecycles; this implies special caution when dealing with
  16427. multidirectional and intersecting subtypes.
  16428. A peer subtype segment will have no segments above it in a subtyping
  16429. hierarchy.</literallayout></para>
  16430. </entry>
  16431. </row>
  16432. <row>
  16433. <entry>
  16434. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  16435. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  16436. </imageobject></mediaobject>
  16437. </literallayout></para>
  16438. </entry>
  16439. <entry>
  16440. <para><literallayout xml:space='preserve' class='monospaced'>createTransitionAndEvent(domainfromStatetoStateobjectisAssignereventName)</literallayout></para>
  16441. </entry>
  16442. <entry>
  16443. <para><literallayout xml:space='preserve' class='monospaced'>Adds a successful transition to an existing state model between the specified
  16444. to and from states. Creates and assigns the specified event to the exit rule
  16445. created.
  16446. </literallayout></para>
  16447. </entry>
  16448. </row>
  16449. <row>
  16450. <entry>
  16451. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  16452. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  16453. </imageobject></mediaobject>
  16454. </literallayout></para>
  16455. </entry>
  16456. <entry>
  16457. <para><literallayout xml:space='preserve' class='monospaced'>createUnsuccessfulTransition(domainobjectfromStateisAssignertoStatetype)</literallayout></para>
  16458. </entry>
  16459. <entry>
  16460. <para><literallayout xml:space='preserve' class='monospaced'>Create a &quot;Can&apos;&apos;t Happen&quot; or &quot;Event Ignored&quot; transistion between two existing
  16461. states.</literallayout></para>
  16462. </entry>
  16463. </row>
  16464. <row>
  16465. <entry>
  16466. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  16467. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  16468. </imageobject></mediaobject>
  16469. </literallayout></para>
  16470. </entry>
  16471. <entry>
  16472. <para><literallayout xml:space='preserve' class='monospaced'>addParameterToEvent(domainobjecteventnametype)</literallayout></para>
  16473. </entry>
  16474. <entry>
  16475. <para><literallayout xml:space='preserve' class='monospaced'>Adds a parameter of the specified type to the named event.
  16476. </literallayout></para>
  16477. </entry>
  16478. </row>
  16479. <row>
  16480. <entry>
  16481. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  16482. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  16483. </imageobject></mediaobject>
  16484. </literallayout></para>
  16485. </entry>
  16486. <entry>
  16487. <para><literallayout xml:space='preserve' class='monospaced'>createAssignerStateModel(domainobject)</literallayout></para>
  16488. </entry>
  16489. <entry>
  16490. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  16491. </entry>
  16492. </row>
  16493. </tbody>
  16494. </tgroup>
  16495. </table>
  16496. </literallayout></para>
  16497. <section>
  16498. <title>Function Activities</title>
  16499. <subtitle></subtitle>
  16500. <section>
  16501. <title>addDataToEntryRule</title>
  16502. <subtitle></subtitle>
  16503. <para><literallayout xml:space='preserve' class='monospaced'>Add a data member to an entry rule. An entry rule with no data members will not
  16504. allow an event with parameters to be assigned to it&apos;&apos;s transition. An entry rule
  16505. with data will use the data to ensure the same data rule is followed whenever
  16506. an event is assigned to it&apos;&apos;s transition.</literallayout></para>
  16507. <para><programlisting>result = creationResult_t::SUCCESS;
  16508. select any domain from instances of MDOM where selected.name == param.domain;
  16509. if (empty domain)
  16510. result = creationResult_t::FAILURE;
  16511. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  16512. else
  16513. select any sub from instances of SUB where (selected.name == param.object);
  16514. if (empty sub)
  16515. result = creationResult_t::FAILURE;
  16516. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  16517. else
  16518. select one model related by sub-&gt;LIF[R347]-&gt;SM[R300];
  16519. if (empty model)
  16520. select one model related by sub-&gt;ASR[R354]-&gt;SM[R300];
  16521. end if;
  16522. if (empty model)
  16523. result = creationResult_t::FAILURE;
  16524. LOG::LogFailure( message:&quot;State model not instantiated!&quot; );
  16525. else
  16526. select any sta from instances of STA where (selected.name == param.stateName) and (selected.model_id == model.id);
  16527. if (empty sta)
  16528. result = creationResult_t::FAILURE;
  16529. LOG::LogFailure( message:&quot;State, &quot; + param.stateName + &quot;, not instantiated!&quot; );
  16530. else
  16531. select any type from instances of TYPE where selected.name == param.dataType;
  16532. if (empty type)
  16533. result = creationResult_t::FAILURE;
  16534. LOG::LogFailure( message:&quot;Data type, &quot; + param.dataType + &quot;, not instantiated!&quot; );
  16535. else
  16536. select one enrl related by sta-&gt;ENRL[R325];
  16537. if (empty enrl)
  16538. result = creationResult_t::FAILURE;
  16539. LOG::LogFailure( message:&quot;Entry rule not instantiated for state, &quot; + param.stateName + &quot;!&quot; );
  16540. else
  16541. create object instance end of END;
  16542. relate type to end across R359;
  16543. LOG::LogInfo( message:&quot;Entry data instantiated without any event parameters!&quot; );
  16544. end if;
  16545. end if;
  16546. end if;
  16547. end if;
  16548. end if;
  16549. end if;
  16550. return result;
  16551. </programlisting></para>
  16552. </section>
  16553. <section>
  16554. <title>createState</title>
  16555. <subtitle></subtitle>
  16556. <para><literallayout xml:space='preserve' class='monospaced'>Adds a state to an existing state model.</literallayout></para>
  16557. <para><programlisting>result = creationResult_t::SUCCESS;
  16558. select any domain from instances of MDOM where selected.name == param.domain;
  16559. if (empty domain)
  16560. result = creationResult_t::FAILURE;
  16561. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  16562. else
  16563. select any sub from instances of SUB where selected.name == param.object;
  16564. if (empty sub)
  16565. result = creationResult_t::FAILURE;
  16566. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  16567. else
  16568. select one model related by sub-&gt;LIF[R347]-&gt;SM[R300];
  16569. if (param.isAssigner)
  16570. select one model related by sub-&gt;ASR[R354]-&gt;SM[R300];
  16571. end if;
  16572. select any sta related by model-&gt;STA[R341] where (selected.name == param.name) or (selected.number == param.number);
  16573. if (not empty sta)
  16574. result = creationResult_t::DUPLICATE;
  16575. LOG::LogFailure( message:&quot;State, &quot; + param.name + &quot;, already instantiated!&quot; );
  16576. else
  16577. if (param.isAssigner)
  16578. if ((state_t::CREATION == param.type) or (state_t::DELETION == param.type))
  16579. result = creationResult_t::FAILURE;
  16580. LOG::LogFailure( message:&quot;State type is invalid for this state model!&quot; );
  16581. else
  16582. select one asr related by sub-&gt;ASR[R354];
  16583. if (empty asr)
  16584. result = creationResult_t::FAILURE;
  16585. LOG::LogFailure( message:&quot;Assigner model not instantiated!&quot; );
  16586. else
  16587. select one sm related by asr-&gt;SM[R300];
  16588. select one smc related by asr-&gt;ASM[R352]-&gt;SMC[R350];
  16589. if (state_t::START == param.type)
  16590. select one ncs related by asr-&gt;NCS[R345];
  16591. if (not empty ncs)
  16592. result = creationResult_t::DUPLICATE;
  16593. LOG::LogFailure( message:&quot;Start state already instantiated!&quot; );
  16594. else
  16595. create object instance sta of STA;
  16596. sta.name = param.name;
  16597. sta.number = param.number;
  16598. relate sta to sm across R341;
  16599. relate sta to smc across R353;
  16600. create object instance liv of LIV;
  16601. relate liv to sta across R305;
  16602. create object instance cre of CRE;
  16603. relate cre to liv across R306;
  16604. create object instance ncs of NCS;
  16605. relate ncs to cre across R313;
  16606. relate ncs to asr across R345;
  16607. end if;
  16608. else
  16609. create object instance sta of STA;
  16610. sta.name = param.name;
  16611. sta.number = param.number;
  16612. relate sta to sm across R341;
  16613. relate sta to smc across R353;
  16614. create object instance liv of LIV;
  16615. relate liv to sta across R305;
  16616. create object instance nst of NST;
  16617. relate nst to liv across R306;
  16618. end if;
  16619. end if;
  16620. end if;
  16621. else
  16622. select one lif related by sub-&gt;LIF[R347];
  16623. if (empty lif)
  16624. result = creationResult_t::FAILURE;
  16625. LOG::LogFailure( message:&quot;Assigner model not instantiated!&quot; );
  16626. else
  16627. select one sm related by lif-&gt;SM[R300];
  16628. create object instance sta of STA;
  16629. sta.name = param.name;
  16630. sta.number = param.number;
  16631. relate sta to sm across R341;
  16632. if (state_t::DELETION == param.type)
  16633. else
  16634. create objec
  16635. </programlisting></para>
  16636. </section>
  16637. <section>
  16638. <title>createStateModelSegment</title>
  16639. <subtitle></subtitle>
  16640. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty instance-based state model segment to the specified subset.
  16641. As states are unconditional requirements, an informational log message is
  16642. generated to remind the user that states need to be created.
  16643. Segments can be whole stand-alone state models, or splices of state models.
  16644. At the set level, a state model segment is subtyped as a general segment to
  16645. allow for subset segments to be subtyped as specializing segments. General
  16646. segments can only exist at the object level (topmost) of a subtyping hierarchy.
  16647. Subtype segments are labeled peer segments when they represent a whole
  16648. lifecycle (even if a splice), or a splice when they represent a unique path
  16649. within the whole lifecycle.
  16650. Splices are branches formed via one supertype relationship. Splicing can be
  16651. done multi-level, but a multidirectional supertype requires another splice. An
  16652. object instance can only be in one state at a time, and the state must be
  16653. unambiguous.
  16654. A splice represents a instance-determined branch in the path of the
  16655. lifecycle. A splice should always share a common transition from a common state
  16656. to start the path, but the path doesn&apos;&apos;t have to rejoin at the same state or by
  16657. the same transition. The &quot;same data&quot; rule applies to the common transition at
  16658. the start of a splice, even though the instance-based states can have their own
  16659. process models.
  16660. Peer subtype segments are not splices of a supertype; they represent the
  16661. whole lifecycle of an object instance. Peer subtypes restrict the legality of
  16662. the existence of state models among subtypes, because an object instance can&apos;&apos;t
  16663. have two concurrent lifecycles; this implies special caution when dealing with
  16664. multidirectional and intersecting subtypes.
  16665. A peer subtype segment will have no segments above it in a subtyping
  16666. hierarchy.</literallayout></para>
  16667. <para><programlisting>result = creationResult_t::SUCCESS;
  16668. select any domain from instances of MDOM where selected.name == param.domain;
  16669. if (empty domain)
  16670. result = creationResult_t::FAILURE;
  16671. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  16672. else
  16673. select any sub from instances of SUB where selected.name == param.object;
  16674. if (empty sub)
  16675. result = creationResult_t::FAILURE;
  16676. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  16677. else
  16678. select one lif related by sub-&gt;LIF[R347];
  16679. if ( empty lif )
  16680. create object instance sm of SM;
  16681. create object instance lif of LIF;
  16682. relate lif to sm across R300;
  16683. relate lif to sub across R347;
  16684. end if;
  16685. create object instance spl of SPL;
  16686. create object instance sms of SMS;
  16687. relate lif to sms across R362 using spl;
  16688. select one obj related by sub-&gt;OBJ[R107];
  16689. if (not empty obj)
  16690. create object instance gs of GS;
  16691. relate gs to sms across R363;
  16692. else
  16693. select one prp related by sub-&gt;PRP[R107];
  16694. select many sbts related by prp-&gt;SBT[R122];
  16695. for each sbt in sbts
  16696. create object instance sps of SPS;
  16697. relate sps to sms across R363;
  16698. select any sbs related by sbt-&gt;OBS[R126]-&gt;SBS[R125];
  16699. if (not empty sbs)
  16700. select one obs related by sbs-&gt;OBS[R125];
  16701. unrelate sbs from obs across R125;
  16702. delete object instance sbs;
  16703. relate sps to obs across R125;
  16704. else
  16705. create object instance obs of OBS;
  16706. relate obs to sps across R125;
  16707. relate sbt to obs across R126;
  16708. end if;
  16709. if (prp.hasPeerSegment())
  16710. create object instance psg of PSG;
  16711. relate psg to sps across R364;
  16712. else
  16713. create object instance ssg of SSG;
  16714. relate ssg to sps across R364;
  16715. end if;
  16716. end for;
  16717. end if;
  16718. LOG::LogInfo( message:&quot;Lifecycle state model created without states!&quot; );
  16719. end if;
  16720. end if;
  16721. return result;
  16722. </programlisting></para>
  16723. </section>
  16724. <section>
  16725. <title>createTransitionAndEvent</title>
  16726. <subtitle></subtitle>
  16727. <para><literallayout xml:space='preserve' class='monospaced'>Adds a successful transition to an existing state model between the specified
  16728. to and from states. Creates and assigns the specified event to the exit rule
  16729. created.
  16730. </literallayout></para>
  16731. <para><programlisting>result = creationResult_t::SUCCESS;
  16732. select any domain from instances of MDOM where selected.name == param.domain;
  16733. if (empty domain)
  16734. result = creationResult_t::FAILURE;
  16735. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  16736. else
  16737. select any sub from instances of SUB where (selected.name == param.object);
  16738. if (empty sub)
  16739. result = creationResult_t::FAILURE;
  16740. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  16741. else
  16742. select one model related by sub-&gt;LIF[R347]-&gt;SM[R300];
  16743. if (param.isAssigner)
  16744. select one model related by sub-&gt;ASR[R354]-&gt;SM[R300];
  16745. end if;
  16746. if (empty model)
  16747. result = creationResult_t::FAILURE;
  16748. LOG::LogFailure( message:&quot;State model not instantiated!&quot; );
  16749. else
  16750. select any fsta related by model-&gt;STA[R341] where selected.name == param.fromState;
  16751. select any tsta related by model-&gt;STA[R341] where selected.name == param.toState;
  16752. if (empty fsta or empty tsta)
  16753. result = creationResult_t::FAILURE;
  16754. LOG::LogFailure( message:&quot;State, &quot; + param.fromState + &quot; or &quot; + param.toState + &quot;, not instantiated!&quot; );
  16755. else
  16756. select one del related by fsta-&gt;DEL[R305];
  16757. if (not empty del)
  16758. result = creationResult_t::FAILURE;
  16759. LOG::LogFailure( message:&quot;From state can&apos;&apos;t be a deletion state!&quot; );
  16760. else
  16761. select any evt related by fsta-&gt;LIV[R305]-&gt;EXRL[R324]-&gt;EVT[R326] where selected.name == param.eventName;
  16762. if (not empty evt)
  16763. result = creationResult_t::FAILURE;
  16764. LOG::LogFailure( message:&quot;Event, &quot; + param.eventName + &quot;, already exits state, &quot; + fsta.name + &quot;, at a different exit point!&quot; );
  16765. else
  16766. select any evt from instances of EVT where (selected.name == param.eventName) and (selected.object_name == param.object);
  16767. if (empty evt)
  16768. // Create event
  16769. create object instance evt of EVT;
  16770. relate evt to sub across R535;
  16771. create object instance asa of ASA;
  16772. relate asa to evt across R506;
  16773. create object instance acc of ACC;
  16774. relate acc to asa across R505;
  16775. acc.name = param.eventName;
  16776. end if;
  16777. // Do the &quot;to&quot; transition.
  16778. create object instance trule of TRUL;
  16779. select one enrl related by tsta-&gt;ENRL[R325];
  16780. if (empty enrl)
  16781. create object instance enrl of ENRL;
  16782. end if;
  16783. relate trule to enrl across R321;
  16784. relate enrl to tsta across R325;
  16785. create object instance tr of TR;
  16786. relate tr to enrl across R323;
  16787. // Always successful in this bridge. &quot;Can&apos;&apos;t happen&quot; and &quot;event ignored&quot;
  16788. // have their own bridges.
  16789. create object instance st of ST;
  16790. relate st to tr across R355;
  16791. relate st to tsta across R332;
  16792. // Do the &quot;from&quot; transition.
  16793. create object instance trulx of TRUL;
  16794. create object instance exrl of EXRL;
  16795. relate trulx to exrl across R321;
  16796. relate exrl to tr across R329;
  16797. select one liv related by fsta-&gt;LIV[R305];
  16798. relate liv to exrl across R324;
  16799. end if;
  16800. end if;
  16801. end if;
  16802. end if;
  16803. end if;
  16804. end if;
  16805. return result;
  16806. </programlisting></para>
  16807. </section>
  16808. <section>
  16809. <title>createUnsuccessfulTransition</title>
  16810. <subtitle></subtitle>
  16811. <para><literallayout xml:space='preserve' class='monospaced'>Create a &quot;Can&apos;&apos;t Happen&quot; or &quot;Event Ignored&quot; transistion between two existing
  16812. states.</literallayout></para>
  16813. <para><programlisting>result = creationResult_t::SUCCESS;
  16814. select any domain from instances of MDOM where selected.name == param.domain;
  16815. if (empty domain)
  16816. result = creationResult_t::FAILURE;
  16817. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  16818. else
  16819. select any sub from instances of SUB where selected.name == param.object;
  16820. if (empty sub)
  16821. result = creationResult_t::FAILURE;
  16822. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  16823. else
  16824. select one model related by sub-&gt;LIF[R347]-&gt;SM[R300];
  16825. if (empty model)
  16826. result = creationResult_t::FAILURE;
  16827. LOG::LogFailure( message:&quot;State model not instantiated!&quot; );
  16828. else
  16829. select any fsta related by model-&gt;STA[R341] where selected.name == param.fromState;
  16830. select any tsta related by model-&gt;STA[R341] where selected.name == param.toState;
  16831. if (empty fsta or empty tsta)
  16832. result = creationResult_t::FAILURE;
  16833. LOG::LogFailure( message:&quot;State, &quot; + param.fromState + &quot; or &quot; + param.toState + &quot;, not instantiated!&quot; );
  16834. else
  16835. // Do the &quot;to&quot; transition.
  16836. create object instance trule of TRUL;
  16837. create object instance enrl of ENRL;
  16838. relate trule to enrl across R321;
  16839. relate enrl to tsta across R325;
  16840. create object instance tr of TR;
  16841. relate tr to enrl across R323;
  16842. create object instance ut of UT;
  16843. relate ut to tr across R355;
  16844. if (transition_t::CANNOT_HAPPEN == param.type)
  16845. create object instance cht of CHT;
  16846. relate cht to ut across R331;
  16847. else
  16848. create object instance eit of EIT;
  16849. relate eit to ut across R331;
  16850. end if;
  16851. create object instance trulx of TRUL;
  16852. create object instance exrl of EXRL;
  16853. relate trulx to exrl across R321;
  16854. relate exrl to tr across R329;
  16855. select one liv related by fsta-&gt;LIV[R305];
  16856. relate liv to exrl across R324;
  16857. LOG::LogInfo( message:&quot;Transition rules created without event!&quot; );
  16858. end if;
  16859. end if;
  16860. end if;
  16861. end if;
  16862. return result;
  16863. </programlisting></para>
  16864. </section>
  16865. <section>
  16866. <title>addParameterToEvent</title>
  16867. <subtitle></subtitle>
  16868. <para><literallayout xml:space='preserve' class='monospaced'>Adds a parameter of the specified type to the named event.
  16869. </literallayout></para>
  16870. <para><programlisting>result = creationResult_t::SUCCESS;
  16871. select any domain from instances of MDOM where selected.name == param.domain;
  16872. if (empty domain)
  16873. result = creationResult_t::FAILURE;
  16874. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  16875. else
  16876. select any sub from instances of SUB where (selected.name == param.object);
  16877. if (empty sub)
  16878. result = creationResult_t::FAILURE;
  16879. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated in domain!&quot; );
  16880. else
  16881. select any evt from instances of EVT where (selected.name == param.event) and (selected.object_name == sub.name);
  16882. if (empty evt)
  16883. result = creationResult_t::FAILURE;
  16884. LOG::LogFailure( message:&quot;Event, &quot; + param.event + &quot;, of object, &quot; + param.object + &quot;, not instantiated!&quot; );
  16885. else
  16886. select one acc related by evt-&gt;ASA[R506]-&gt;ACC[R505];
  16887. select any prm related by acc-&gt;PRM[R540] where (selected.name == param.name) and (selected.accessor_name == param.event);
  16888. if (not empty prm)
  16889. result = creationResult_t::DUPLICATE;
  16890. LOG::LogFailure( message:&quot;Parameter data,&quot; + param.name + &quot;, already added to accessor!&quot; );
  16891. else
  16892. select any type from instances of TYPE where selected.name == param.type;
  16893. if (not empty type)
  16894. result = creationResult_t::FAILURE;
  16895. LOG::LogFailure( message:&quot;Type, &quot; + param.type + &quot;, not instantiated!&quot; );
  16896. else
  16897. select one enrl related by evt-&gt;ENRL[R356];
  16898. select many ends related by enrl-&gt;END[R357] where selected.type_name == type.name;
  16899. spotFound = false;
  16900. for each end in ends
  16901. if (end.type_name == param.type)
  16902. select any evp related by end-&gt;EVP[R358] where selected.accessor_name == evt.name;
  16903. if (empty evp)
  16904. create object instance prm of PRM;
  16905. relate prm to acc across R540;
  16906. create object instance evp of EVP;
  16907. relate evp to prm across R542;
  16908. relate evp to end across R358;
  16909. spotFound = true;
  16910. break;
  16911. end if;
  16912. end if;
  16913. end for;
  16914. if (not spotFound)
  16915. result = creationResult_t::FAILURE;
  16916. LOG::LogFailure( message:&quot;No entry data found for parameter type, &quot; + type.name + &quot;!&quot; );
  16917. end if;
  16918. end if;
  16919. end if;
  16920. end if;
  16921. end if;
  16922. end if;
  16923. return result;
  16924. </programlisting></para>
  16925. </section>
  16926. <section>
  16927. <title>createAssignerStateModel</title>
  16928. <subtitle></subtitle>
  16929. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  16930. <para><programlisting>result = creationResult_t::SUCCESS;
  16931. select any domain from instances of MDOM where selected.name == param.domain;
  16932. if (empty domain)
  16933. result = creationResult_t::FAILURE;
  16934. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  16935. else
  16936. // Assigner state model must be instantiated for the whole set.
  16937. select any obj from instances of OBJ where selected.name == param.object;
  16938. if (empty obj)
  16939. result = creationResult_t::FAILURE;
  16940. LOG::LogFailure( message:&quot;Object, &quot; + param.object + &quot;, not instantiated!&quot; );
  16941. else
  16942. select any sub from instances of SUB where selected.name == param.object;
  16943. if ( sub.hasStateModel( assigner:true ) )
  16944. result = creationResult_t::DUPLICATE;
  16945. LOG::LogFailure( message:&quot;State model already instantiated!&quot; );
  16946. else
  16947. create object instance sm of SM;
  16948. create object instance asr of ASR;
  16949. relate asr to sm across R300;
  16950. relate asr to sub across R354;
  16951. create object instance smc of SMC;
  16952. create object instance asm of ASM;
  16953. relate asm to smc across R350;
  16954. relate asr to asm across R352;
  16955. LOG::LogInfo( message:&quot;Assigner state model created without states!&quot; );
  16956. end if;
  16957. end if;
  16958. end if;
  16959. return result;
  16960. </programlisting></para>
  16961. </section>
  16962. </section>
  16963. </section>
  16964. </section>
  16965. <section>
  16966. <title>Data Bridges</title>
  16967. <subtitle>Package</subtitle>
  16968. <para><literallayout xml:space='preserve' class='monospaced'>Incoming bridges for creating model elements of the Data subsystem as metamodel
  16969. instances.<figure id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-IncomingBridges-DataBridges-PackageDiagram-figure'>
  16970. <title id='shlaer-mellor-metamodel-metamodel-Shlaer-MellorMetamodel-IncomingBridges-DataBridges-PackageDiagram-figure-title'>Data Bridges Package Diagram</title>
  16971. <mediaobject><imageobject>
  16972. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-Shlaer-Mellor Metamodel-Incoming Bridges-Data Bridges-Package Diagram.png' scalefit='1' width='100%'/>
  16973. </imageobject></mediaobject>
  16974. </figure>
  16975. </literallayout></para>
  16976. <section>
  16977. <title>Functions</title>
  16978. <subtitle>Functions</subtitle>
  16979. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  16980. <title>Data Bridges</title>
  16981. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  16982. <thead>
  16983. <row>
  16984. <entry>
  16985. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  16986. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  16987. </imageobject></mediaobject>
  16988. </literallayout></para>
  16989. </entry>
  16990. <entry>
  16991. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  16992. </entry>
  16993. <entry>
  16994. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  16995. </entry>
  16996. </row>
  16997. </thead>
  16998. <tbody>
  16999. <row>
  17000. <entry>
  17001. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17002. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  17003. </imageobject></mediaobject>
  17004. </literallayout></para>
  17005. </entry>
  17006. <entry>
  17007. <para><literallayout xml:space='preserve' class='monospaced'>addEnumerationValue(domainnameenumeration)</literallayout></para>
  17008. </entry>
  17009. <entry>
  17010. <para><literallayout xml:space='preserve' class='monospaced'>Add an enumeration value to an existing enumeration type.
  17011. This bridge must be called for each enumeration value. Every enumeration
  17012. type requires at least one enumeration.</literallayout></para>
  17013. </entry>
  17014. </row>
  17015. <row>
  17016. <entry>
  17017. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17018. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  17019. </imageobject></mediaobject>
  17020. </literallayout></para>
  17021. </entry>
  17022. <entry>
  17023. <para><literallayout xml:space='preserve' class='monospaced'>createType(domainnamecoreType)</literallayout></para>
  17024. </entry>
  17025. <entry>
  17026. <para><literallayout xml:space='preserve' class='monospaced'>Create a new user-defined type from a domain model to be verified against the
  17027. Shlaer-Mellor metamodel. The only expected failure scenarios are duplication,
  17028. and invalid parameters.</literallayout></para>
  17029. </entry>
  17030. </row>
  17031. <row>
  17032. <entry>
  17033. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17034. <imagedata fileref='images/Function.gif' scalefit='1' width='100%'/>
  17035. </imageobject></mediaobject>
  17036. </literallayout></para>
  17037. </entry>
  17038. <entry>
  17039. <para><literallayout xml:space='preserve' class='monospaced'>createOperator(domaintypenamesymbolresultType)</literallayout></para>
  17040. </entry>
  17041. <entry>
  17042. <para><literallayout xml:space='preserve' class='monospaced'>Create an operator for a user-defined type that is not already part of the set
  17043. of operators for its core type.</literallayout></para>
  17044. </entry>
  17045. </row>
  17046. </tbody>
  17047. </tgroup>
  17048. </table>
  17049. </literallayout></para>
  17050. <section>
  17051. <title>Function Activities</title>
  17052. <subtitle></subtitle>
  17053. <section>
  17054. <title>addEnumerationValue</title>
  17055. <subtitle></subtitle>
  17056. <para><literallayout xml:space='preserve' class='monospaced'>Add an enumeration value to an existing enumeration type.
  17057. This bridge must be called for each enumeration value. Every enumeration
  17058. type requires at least one enumeration.</literallayout></para>
  17059. <para><programlisting>result = creationResult_t::SUCCESS;
  17060. if (&quot;&quot; == param.name)
  17061. result = creationResult_t::FAILURE;
  17062. LOG::LogFailure( message:&quot;Create object failed due to invalid object name, &quot; + param.name + &quot;.&quot; );
  17063. else
  17064. select any domain from instances of MDOM where selected.name == param.domain;
  17065. if (empty domain)
  17066. result = creationResult_t::FAILURE;
  17067. LOG::LogFailure( message:&quot;Domain, &quot; + param.domain + &quot;, not instantiated!&quot; );
  17068. else
  17069. select any enum from instances of ENUM;
  17070. if (empty enum)
  17071. result = creationResult_t::FAILURE;
  17072. LOG::LogFailure( message:&quot;Enumeration type not instantiated!&quot; );
  17073. else
  17074. select any enud from instances of ENUD where selected.name == param.enumeration;
  17075. if (not empty enud)
  17076. select any enuv related by enud-&gt;ENUV[R420] where selected.name == param.name;
  17077. if (not empty enuv)
  17078. result = creationResult_t::DUPLICATE;
  17079. LOG::LogInfo( message:&quot;Enumeration value, &quot; + param.name + &quot;, already assigned to enumeration, &quot; + param.enumeration + &quot;.&quot; );
  17080. end if;
  17081. else
  17082. create object instance enud of ENUD;
  17083. end if;
  17084. if ( creationResult_t::SUCCESS == result )
  17085. relate enud to enum across R416;
  17086. create object instance enuv of ENUV;
  17087. enuv.name = param.name;
  17088. relate enuv to enud across R420;
  17089. create object instance value of VAL;
  17090. relate enuv to value across R629;
  17091. create object instance dus of DUS;
  17092. relate dus to value across R624;
  17093. create object instance re of RE;
  17094. relate dus to re across R514;
  17095. select one type related by enum-&gt;CORE[R403]-&gt;TYPE[R401];
  17096. relate type to dus across R625.&apos;&apos;constrains&apos;&apos;;
  17097. end if;
  17098. end if;
  17099. end if;
  17100. end if;
  17101. </programlisting></para>
  17102. </section>
  17103. <section>
  17104. <title>createType</title>
  17105. <subtitle></subtitle>
  17106. <para><literallayout xml:space='preserve' class='monospaced'>Create a new user-defined type from a domain model to be verified against the
  17107. Shlaer-Mellor metamodel. The only expected failure scenarios are duplication,
  17108. and invalid parameters.</literallayout></para>
  17109. <para><programlisting>result = creationResult_t::SUCCESS;
  17110. if (&quot;&quot; == param.name)
  17111. result = creationResult_t::FAILURE;
  17112. LOG::LogFailure( message:&quot;Create type failed due to invalid type name, &quot; + param.name + &quot;.&quot; );
  17113. else
  17114. select any domain from instances of DOM where selected.name == param.domain;
  17115. if (empty domain)
  17116. result = creationResult_t::FAILURE;
  17117. LOG::LogFailure( message:&quot;Domain not instantiated!&quot; );
  17118. else
  17119. select any type from instances of TYPE where selected.name == param.name;
  17120. if (not empty type)
  17121. result = creationResult_t::DUPLICATE;
  17122. LOG::LogInfo( message:&quot;Duplicate type instantiation attempt!&quot; );
  17123. else
  17124. generate DOMD1:create( name:param.name, coreType:param.coreType, domain:param.domain ) to DOMD creator;
  17125. end if;
  17126. end if;
  17127. end if;
  17128. return result;
  17129. </programlisting></para>
  17130. </section>
  17131. <section>
  17132. <title>createOperator</title>
  17133. <subtitle></subtitle>
  17134. <para><literallayout xml:space='preserve' class='monospaced'>Create an operator for a user-defined type that is not already part of the set
  17135. of operators for its core type.</literallayout></para>
  17136. <para><programlisting>result = creationResult_t::SUCCESS;
  17137. if (&quot;&quot; == param.name)
  17138. result = creationResult_t::FAILURE;
  17139. LOG::LogFailure( message:&quot;Create operator failed due to invalid name, &quot; + param.name);
  17140. else
  17141. select any domain from instances of DOM where selected.name == param.domain;
  17142. if (empty domain)
  17143. result = creationResult_t::FAILURE;
  17144. LOG::LogFailure( message:&quot;Domain not instantiated!&quot; );
  17145. else
  17146. select any type from instances of TYPE where selected.name == param.type;
  17147. if (empty type)
  17148. result = creationResult_t::FAILURE;
  17149. LOG::LogFailure( message:&quot;Type not instantiated!&quot; );
  17150. else
  17151. select any type from instances of TYPE where selected.name == param.resultType;
  17152. if (empty type)
  17153. result = creationResult_t::FAILURE;
  17154. LOG::LogFailure( message:&quot;Result type not instantiated!&quot; );
  17155. else
  17156. select any tyop from instances of TYOP where (selected.type_name == param.type) and (selected.operation_name == param.name) and (selected.result_type_name == param.resultType);
  17157. if (not empty tyop)
  17158. result = creationResult_t::DUPLICATE;
  17159. LOG::LogFailure( message:&quot;Duplication of operator, &quot; + param.name + &quot; , for type, &quot; + param.type + &quot;.&quot; );
  17160. else
  17161. generate TYOP_A1:create( type:param.type, name:param.name, symbol:param.symbol, result:param.resultType ) to TYOP class;
  17162. end if;
  17163. end if;
  17164. end if;
  17165. end if;
  17166. end if;
  17167. return result;
  17168. </programlisting></para>
  17169. </section>
  17170. </section>
  17171. </section>
  17172. </section>
  17173. </section>
  17174. </section>
  17175. </section>
  17176. </section>
  17177. <section>
  17178. <title>Shlaer-Mellor Metamodel Interface</title>
  17179. <subtitle>Interface</subtitle>
  17180. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  17181. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  17182. <title>Shlaer-Mellor Metamodel Interface Messages</title>
  17183. <tgroup cols='4' align='left' colsep='0' rowsep='0'>
  17184. <thead>
  17185. <row>
  17186. <entry>
  17187. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17188. <imagedata fileref='images/Message.gif' scalefit='1' width='100%'/>
  17189. </imageobject></mediaobject>
  17190. </literallayout></para>
  17191. </entry>
  17192. <entry>
  17193. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  17194. </entry>
  17195. <entry>
  17196. <para><literallayout xml:space='preserve' class='monospaced'>Direction</literallayout></para>
  17197. </entry>
  17198. <entry>
  17199. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  17200. </entry>
  17201. </row>
  17202. </thead>
  17203. <tbody>
  17204. <row>
  17205. <entry>
  17206. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17207. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17208. </imageobject></mediaobject>
  17209. </literallayout></para>
  17210. </entry>
  17211. <entry>
  17212. <para><literallayout xml:space='preserve' class='monospaced'>addEnumerationValue</literallayout></para>
  17213. </entry>
  17214. <entry>
  17215. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17216. </entry>
  17217. <entry>
  17218. <para><literallayout xml:space='preserve' class='monospaced'>Add an enumeration value to an existing enumeration type.
  17219. This bridge must be called for each enumeration value. Every enumeration
  17220. type requires at least one enumeration.</literallayout></para>
  17221. </entry>
  17222. </row>
  17223. <row>
  17224. <entry>
  17225. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17226. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17227. </imageobject></mediaobject>
  17228. </literallayout></para>
  17229. </entry>
  17230. <entry>
  17231. <para><literallayout xml:space='preserve' class='monospaced'>createOperator</literallayout></para>
  17232. </entry>
  17233. <entry>
  17234. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17235. </entry>
  17236. <entry>
  17237. <para><literallayout xml:space='preserve' class='monospaced'>Create an operator for a user-defined type that is not already part of the set
  17238. of operators for its core type.</literallayout></para>
  17239. </entry>
  17240. </row>
  17241. <row>
  17242. <entry>
  17243. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17244. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17245. </imageobject></mediaobject>
  17246. </literallayout></para>
  17247. </entry>
  17248. <entry>
  17249. <para><literallayout xml:space='preserve' class='monospaced'>createType</literallayout></para>
  17250. </entry>
  17251. <entry>
  17252. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17253. </entry>
  17254. <entry>
  17255. <para><literallayout xml:space='preserve' class='monospaced'>Create a new user-defined type from a domain model to be verified against the
  17256. Shlaer-Mellor metamodel. The only expected failure scenarios are duplication,
  17257. and invalid parameters.</literallayout></para>
  17258. </entry>
  17259. </row>
  17260. <row>
  17261. <entry>
  17262. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17263. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17264. </imageobject></mediaobject>
  17265. </literallayout></para>
  17266. </entry>
  17267. <entry>
  17268. <para><literallayout xml:space='preserve' class='monospaced'>addDataToEntryRule</literallayout></para>
  17269. </entry>
  17270. <entry>
  17271. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17272. </entry>
  17273. <entry>
  17274. <para><literallayout xml:space='preserve' class='monospaced'>Add a data member to an entry rule. An entry rule with no data members will not
  17275. allow an event with parameters to be assigned to it&apos;&apos;s transition. An entry rule
  17276. with data will use the data to ensure the same data rule is followed whenever
  17277. an event is assigned to it&apos;&apos;s transition.</literallayout></para>
  17278. </entry>
  17279. </row>
  17280. <row>
  17281. <entry>
  17282. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17283. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17284. </imageobject></mediaobject>
  17285. </literallayout></para>
  17286. </entry>
  17287. <entry>
  17288. <para><literallayout xml:space='preserve' class='monospaced'>addParameterToEvent</literallayout></para>
  17289. </entry>
  17290. <entry>
  17291. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17292. </entry>
  17293. <entry>
  17294. <para><literallayout xml:space='preserve' class='monospaced'>Adds a parameter of the specified type to the named event.
  17295. </literallayout></para>
  17296. </entry>
  17297. </row>
  17298. <row>
  17299. <entry>
  17300. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17301. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17302. </imageobject></mediaobject>
  17303. </literallayout></para>
  17304. </entry>
  17305. <entry>
  17306. <para><literallayout xml:space='preserve' class='monospaced'>createAssignerStateModel</literallayout></para>
  17307. </entry>
  17308. <entry>
  17309. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17310. </entry>
  17311. <entry>
  17312. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  17313. </entry>
  17314. </row>
  17315. <row>
  17316. <entry>
  17317. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17318. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17319. </imageobject></mediaobject>
  17320. </literallayout></para>
  17321. </entry>
  17322. <entry>
  17323. <para><literallayout xml:space='preserve' class='monospaced'>createState</literallayout></para>
  17324. </entry>
  17325. <entry>
  17326. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17327. </entry>
  17328. <entry>
  17329. <para><literallayout xml:space='preserve' class='monospaced'>Adds a state to an existing state model.</literallayout></para>
  17330. </entry>
  17331. </row>
  17332. <row>
  17333. <entry>
  17334. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17335. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17336. </imageobject></mediaobject>
  17337. </literallayout></para>
  17338. </entry>
  17339. <entry>
  17340. <para><literallayout xml:space='preserve' class='monospaced'>createStateModelSegment</literallayout></para>
  17341. </entry>
  17342. <entry>
  17343. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17344. </entry>
  17345. <entry>
  17346. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty instance-based state model segment to the specified subset.
  17347. As states are unconditional requirements, an informational log message is
  17348. generated to remind the user that states need to be created.
  17349. Segments can be whole stand-alone state models, or splices of state models.
  17350. At the set level, a state model segment is subtyped as a general segment to
  17351. allow for subset segments to be subtyped as specializing segments. General
  17352. segments can only exist at the object level (topmost) of a subtyping hierarchy.
  17353. Subtype segments are labeled peer segments when they represent a whole
  17354. lifecycle (even if a splice), or a splice when they represent a unique path
  17355. within the whole lifecycle.
  17356. Splices are branches formed via one supertype relationship. Splicing can be
  17357. done multi-level, but a multidirectional supertype requires another splice. An
  17358. object instance can only be in one state at a time, and the state must be
  17359. unambiguous.
  17360. A splice represents a instance-determined branch in the path of the
  17361. lifecycle. A splice should always share a common transition from a common state
  17362. to start the path, but the path doesn&apos;&apos;t have to rejoin at the same state or by
  17363. the same transition. The &quot;same data&quot; rule applies to the common transition at
  17364. the start of a splice, even though the instance-based states can have their own
  17365. process models.
  17366. Peer subtype segments are not splices of a supertype; they represent the
  17367. whole lifecycle of an object instance. Peer subtypes restrict the legality of
  17368. the existence of state models among subtypes, because an object instance can&apos;&apos;t
  17369. have two concurrent lifecycles; this implies special caution when dealing with
  17370. multidirectional and intersecting subtypes.
  17371. A peer subtype segment will have no segments above it in a subtyping
  17372. hierarchy.</literallayout></para>
  17373. </entry>
  17374. </row>
  17375. <row>
  17376. <entry>
  17377. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17378. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17379. </imageobject></mediaobject>
  17380. </literallayout></para>
  17381. </entry>
  17382. <entry>
  17383. <para><literallayout xml:space='preserve' class='monospaced'>createTransitionAndEvent</literallayout></para>
  17384. </entry>
  17385. <entry>
  17386. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17387. </entry>
  17388. <entry>
  17389. <para><literallayout xml:space='preserve' class='monospaced'>Adds a successful transition to an existing state model between the specified
  17390. to and from states. Creates and assigns the specified event to the exit rule
  17391. created.
  17392. </literallayout></para>
  17393. </entry>
  17394. </row>
  17395. <row>
  17396. <entry>
  17397. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17398. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17399. </imageobject></mediaobject>
  17400. </literallayout></para>
  17401. </entry>
  17402. <entry>
  17403. <para><literallayout xml:space='preserve' class='monospaced'>createUnsuccessfulTransition</literallayout></para>
  17404. </entry>
  17405. <entry>
  17406. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17407. </entry>
  17408. <entry>
  17409. <para><literallayout xml:space='preserve' class='monospaced'>Create a &quot;Can&apos;&apos;t Happen&quot; or &quot;Event Ignored&quot; transistion between two existing
  17410. states.</literallayout></para>
  17411. </entry>
  17412. </row>
  17413. <row>
  17414. <entry>
  17415. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17416. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17417. </imageobject></mediaobject>
  17418. </literallayout></para>
  17419. </entry>
  17420. <entry>
  17421. <para><literallayout xml:space='preserve' class='monospaced'>addParameterToBridge</literallayout></para>
  17422. </entry>
  17423. <entry>
  17424. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17425. </entry>
  17426. <entry>
  17427. <para><literallayout xml:space='preserve' class='monospaced'>Adds parameter of specified type to the named bridge.</literallayout></para>
  17428. </entry>
  17429. </row>
  17430. <row>
  17431. <entry>
  17432. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17433. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17434. </imageobject></mediaobject>
  17435. </literallayout></para>
  17436. </entry>
  17437. <entry>
  17438. <para><literallayout xml:space='preserve' class='monospaced'>addParameterToMethod</literallayout></para>
  17439. </entry>
  17440. <entry>
  17441. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17442. </entry>
  17443. <entry>
  17444. <para><literallayout xml:space='preserve' class='monospaced'>Adds a parameter of the specified type to the named method.</literallayout></para>
  17445. </entry>
  17446. </row>
  17447. <row>
  17448. <entry>
  17449. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17450. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17451. </imageobject></mediaobject>
  17452. </literallayout></para>
  17453. </entry>
  17454. <entry>
  17455. <para><literallayout xml:space='preserve' class='monospaced'>addReturnTypeToAttributeAction</literallayout></para>
  17456. </entry>
  17457. <entry>
  17458. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17459. </entry>
  17460. <entry>
  17461. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  17462. </entry>
  17463. </row>
  17464. <row>
  17465. <entry>
  17466. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17467. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17468. </imageobject></mediaobject>
  17469. </literallayout></para>
  17470. </entry>
  17471. <entry>
  17472. <para><literallayout xml:space='preserve' class='monospaced'>addReturnTypeToBridge</literallayout></para>
  17473. </entry>
  17474. <entry>
  17475. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17476. </entry>
  17477. <entry>
  17478. <para><literallayout xml:space='preserve' class='monospaced'>Add a return type to bridge created as an asynchronous bridge to make it a
  17479. synchronous bridge.</literallayout></para>
  17480. </entry>
  17481. </row>
  17482. <row>
  17483. <entry>
  17484. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17485. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17486. </imageobject></mediaobject>
  17487. </literallayout></para>
  17488. </entry>
  17489. <entry>
  17490. <para><literallayout xml:space='preserve' class='monospaced'>addReturnTypeToMethod</literallayout></para>
  17491. </entry>
  17492. <entry>
  17493. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17494. </entry>
  17495. <entry>
  17496. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  17497. </entry>
  17498. </row>
  17499. <row>
  17500. <entry>
  17501. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17502. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17503. </imageobject></mediaobject>
  17504. </literallayout></para>
  17505. </entry>
  17506. <entry>
  17507. <para><literallayout xml:space='preserve' class='monospaced'>changeAttributeToDerived</literallayout></para>
  17508. </entry>
  17509. <entry>
  17510. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17511. </entry>
  17512. <entry>
  17513. <para><literallayout xml:space='preserve' class='monospaced'>Add the relationship path from a non-referential attribute to the attribute it
  17514. is derived from.
  17515. Process modeling of the derivation is added in another bridge.</literallayout></para>
  17516. </entry>
  17517. </row>
  17518. <row>
  17519. <entry>
  17520. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17521. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17522. </imageobject></mediaobject>
  17523. </literallayout></para>
  17524. </entry>
  17525. <entry>
  17526. <para><literallayout xml:space='preserve' class='monospaced'>createAttribute</literallayout></para>
  17527. </entry>
  17528. <entry>
  17529. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17530. </entry>
  17531. <entry>
  17532. <para><literallayout xml:space='preserve' class='monospaced'>Create an attribute for a given object with type and identification qualifiers.
  17533. It should be noted, that attribute derivations are created in a separate step.</literallayout></para>
  17534. </entry>
  17535. </row>
  17536. <row>
  17537. <entry>
  17538. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17539. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17540. </imageobject></mediaobject>
  17541. </literallayout></para>
  17542. </entry>
  17543. <entry>
  17544. <para><literallayout xml:space='preserve' class='monospaced'>createBinaryRelationship</literallayout></para>
  17545. </entry>
  17546. <entry>
  17547. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17548. </entry>
  17549. <entry>
  17550. <para><literallayout xml:space='preserve' class='monospaced'>Create a binary relationship between two specified object instances, or create
  17551. a temporary binary relationship between one or two specified objects for the
  17552. purpose of statically verifying an object model.
  17553. A binary relationship between the same object must specify the object in
  17554. both the passiveObject and activeObject parameters.
  17555. The temporary instances are created by setting both instance parameters to
  17556. zero. Only setting one to zero is an error.
  17557. The active/passive terminology used is reflective of how verb phrases are
  17558. often used in relationships with one using an active perspective and one using
  17559. a passive perspective. It is a differentiator in the metamodel, but not a hard
  17560. rule for Shlaer-Mellor modeling. If the perspective is unclear or the same in
  17561. both directions, then just arbitrarily assign the parameters.
  17562. Referential cheatsheet:
  17563. (All are reflexive)
  17564. 1:1 - choose either side
  17565. 1:1c - 1c
  17566. 1:M - M
  17567. 1:Mc - Mc
  17568. 1c:1c - use associative object
  17569. 1c:M - use associative object
  17570. 1c:Mc - use associative object
  17571. M:M - use associative object
  17572. Mc:M - use associative object
  17573. Mc:Mc - use associative object
  17574. </literallayout></para>
  17575. </entry>
  17576. </row>
  17577. <row>
  17578. <entry>
  17579. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17580. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17581. </imageobject></mediaobject>
  17582. </literallayout></para>
  17583. </entry>
  17584. <entry>
  17585. <para><literallayout xml:space='preserve' class='monospaced'>createDomain</literallayout></para>
  17586. </entry>
  17587. <entry>
  17588. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17589. </entry>
  17590. <entry>
  17591. <para><literallayout xml:space='preserve' class='monospaced'>Create a domain for the purposes of model verification. This creation will
  17592. always result in a failure, due to the constraint that a domain model must
  17593. contain at least one object. A log entry will be created for any failure.
  17594. A duplication failure will be reported with higher precedence.</literallayout></para>
  17595. </entry>
  17596. </row>
  17597. <row>
  17598. <entry>
  17599. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17600. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17601. </imageobject></mediaobject>
  17602. </literallayout></para>
  17603. </entry>
  17604. <entry>
  17605. <para><literallayout xml:space='preserve' class='monospaced'>createIntersectingSubtype</literallayout></para>
  17606. </entry>
  17607. <entry>
  17608. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17609. </entry>
  17610. <entry>
  17611. <para><literallayout xml:space='preserve' class='monospaced'>Create a Shlaer-Mellor intersecting subtype object of the specified supertype
  17612. objects using the specified relationships in the specified domain.
  17613. The subtype and supertypes specify the intersection of two sets (objects).
  17614. The intersecting subtype might have already be created, and this call is
  17615. just specifying another set participating in the intersection, or the subtype
  17616. might already exist as a non-intersecting subtype; this call is then
  17617. transforming the non-intersecting subtype into an intersecting subtype.
  17618. </literallayout></para>
  17619. </entry>
  17620. </row>
  17621. <row>
  17622. <entry>
  17623. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17624. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17625. </imageobject></mediaobject>
  17626. </literallayout></para>
  17627. </entry>
  17628. <entry>
  17629. <para><literallayout xml:space='preserve' class='monospaced'>createMethod</literallayout></para>
  17630. </entry>
  17631. <entry>
  17632. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17633. </entry>
  17634. <entry>
  17635. <para><literallayout xml:space='preserve' class='monospaced'>Add an object method to an existing object or subset.</literallayout></para>
  17636. </entry>
  17637. </row>
  17638. <row>
  17639. <entry>
  17640. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17641. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17642. </imageobject></mediaobject>
  17643. </literallayout></para>
  17644. </entry>
  17645. <entry>
  17646. <para><literallayout xml:space='preserve' class='monospaced'>createNonIntersectingSubtype</literallayout></para>
  17647. </entry>
  17648. <entry>
  17649. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17650. </entry>
  17651. <entry>
  17652. <para><literallayout xml:space='preserve' class='monospaced'>Create a Shlaer-Mellor non-intersecting subtype object of the specified
  17653. supertype object using the specified relationship in the specified domain.</literallayout></para>
  17654. </entry>
  17655. </row>
  17656. <row>
  17657. <entry>
  17658. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17659. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17660. </imageobject></mediaobject>
  17661. </literallayout></para>
  17662. </entry>
  17663. <entry>
  17664. <para><literallayout xml:space='preserve' class='monospaced'>createObject</literallayout></para>
  17665. </entry>
  17666. <entry>
  17667. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17668. </entry>
  17669. <entry>
  17670. <para><literallayout xml:space='preserve' class='monospaced'>Create a Shlaer-Mellor object or root supertype object in the specified domain.</literallayout></para>
  17671. </entry>
  17672. </row>
  17673. <row>
  17674. <entry>
  17675. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17676. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17677. </imageobject></mediaobject>
  17678. </literallayout></para>
  17679. </entry>
  17680. <entry>
  17681. <para><literallayout xml:space='preserve' class='monospaced'>createProvidedBridge</literallayout></para>
  17682. </entry>
  17683. <entry>
  17684. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17685. </entry>
  17686. <entry>
  17687. <para><literallayout xml:space='preserve' class='monospaced'>Create an incoming bridge to the modeled domain.
  17688. The bridge is created as an asynchronous bridge, which can be changed to
  17689. synchronous by adding a return type via another provided bridge of this
  17690. metamodel.</literallayout></para>
  17691. </entry>
  17692. </row>
  17693. <row>
  17694. <entry>
  17695. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17696. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17697. </imageobject></mediaobject>
  17698. </literallayout></para>
  17699. </entry>
  17700. <entry>
  17701. <para><literallayout xml:space='preserve' class='monospaced'>createRequiredBridge</literallayout></para>
  17702. </entry>
  17703. <entry>
  17704. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17705. </entry>
  17706. <entry>
  17707. <para><literallayout xml:space='preserve' class='monospaced'>Create an outgoing bridge between the modeled domain and an external domain.
  17708. The bridge is created as an asynchronous bridge, which can be changed to
  17709. synchronous by adding a return type via another provided bridge of this
  17710. metamodel.</literallayout></para>
  17711. </entry>
  17712. </row>
  17713. <row>
  17714. <entry>
  17715. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17716. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17717. </imageobject></mediaobject>
  17718. </literallayout></para>
  17719. </entry>
  17720. <entry>
  17721. <para><literallayout xml:space='preserve' class='monospaced'>createSymmetricReflexiveRelationship</literallayout></para>
  17722. </entry>
  17723. <entry>
  17724. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17725. </entry>
  17726. <entry>
  17727. <para><literallayout xml:space='preserve' class='monospaced'>Creates a symmetric reflexive relationship on the specified object.
  17728. &quot;4.2 Modeling Symmetric Reflexive Relationships
  17729. On the Information Model, show a symmetric relationship with a relationship
  17730. line that loops back to the object. Since, by definition, such a relationship
  17731. must have the same name, multiplicity, and conditionality at each end, name and
  17732. characterize the relationship at one end only. To ensure that an instance of
  17733. the relationship appears only once in the model, always formalize the
  17734. relationship with an associative object regardless of the multiplicity of the
  17735. relationship itself. In Figure 4.1 we show the Employee WORKS WITH Employee
  17736. relationship so formalized.&quot; [OOA96]
  17737. Unlike The OOA96 Report, this metamodel only requires an associative object for
  17738. relationship multiplicities that normally require an associative object. For
  17739. symmetric reflexive, there is only the one multiplicity that doesn&apos;&apos;t require an
  17740. associative object.</literallayout></para>
  17741. </entry>
  17742. </row>
  17743. <row>
  17744. <entry>
  17745. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17746. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17747. </imageobject></mediaobject>
  17748. </literallayout></para>
  17749. </entry>
  17750. <entry>
  17751. <para><literallayout xml:space='preserve' class='monospaced'>setCompositionConstraint</literallayout></para>
  17752. </entry>
  17753. <entry>
  17754. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17755. </entry>
  17756. <entry>
  17757. <para><literallayout xml:space='preserve' class='monospaced'>Set an existing relationship to be constrained as a composition from it&apos;&apos;s
  17758. participation in a relationship loop, rather than by referential attributes.
  17759. &quot;[When a relationship is the logical consequence of other relationships,]
  17760. Such a relationship is said to be formed by composition (as in composition of
  17761. functions in mathematics. [...] A relationship formed by composition cannot be
  17762. formalized in referential attributes, since the connections between the
  17763. instances is already given by the connections between the [composing
  17764. relationships].
  17765. A relationship formed by composition is annotated on the model as [composed
  17766. relationship = 1st composing relationship + 2nd composing relationship [+ nth
  17767. composing relationship ...]].&quot; [OL:MWS]
  17768. &quot;Composed Relationships. Another special case occurs when the constraint on the
  17769. referential attribute is such that it identifies a single instance of the
  17770. associated object. [...] Composition of relationships captures the constraint
  17771. directly in data [...] However the use of composition is limited in that it
  17772. requires that the constraint always identify a single associated instance.&quot;
  17773. [OOA96]
  17774. Both definitions identify compositions as relationship combinations that loop
  17775. back to the originating instance. [miUML] calls compositions, &quot;Constrained
  17776. Loops&quot;, because the compostion equation forms a constraint on the object
  17777. instances allowed to participate.
  17778. [OOA96] also discusses collapsed referentials, but the example shows them
  17779. to be an alternative way to draw compositions on the object model. This
  17780. metamodel will only model a composition and leave the way to display it up to
  17781. the model editor.</literallayout></para>
  17782. </entry>
  17783. </row>
  17784. <row>
  17785. <entry>
  17786. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17787. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17788. </imageobject></mediaobject>
  17789. </literallayout></para>
  17790. </entry>
  17791. <entry>
  17792. <para><literallayout xml:space='preserve' class='monospaced'>addAccessedParameterToOperand</literallayout></para>
  17793. </entry>
  17794. <entry>
  17795. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17796. </entry>
  17797. <entry>
  17798. <para><literallayout xml:space='preserve' class='monospaced'>Add an uninitialized parameter instance to the accessor process model at the
  17799. specified operand. Upon creation of an instance of the accessor and assignment
  17800. of value to the parameter, the uninitialized parameter instance will become
  17801. an initialized parameter instance.</literallayout></para>
  17802. </entry>
  17803. </row>
  17804. <row>
  17805. <entry>
  17806. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17807. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17808. </imageobject></mediaobject>
  17809. </literallayout></para>
  17810. </entry>
  17811. <entry>
  17812. <para><literallayout xml:space='preserve' class='monospaced'>addActionToBridge</literallayout></para>
  17813. </entry>
  17814. <entry>
  17815. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17816. </entry>
  17817. <entry>
  17818. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty process model to prepare it for addition of process modeling
  17819. elements.</literallayout></para>
  17820. </entry>
  17821. </row>
  17822. <row>
  17823. <entry>
  17824. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17825. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17826. </imageobject></mediaobject>
  17827. </literallayout></para>
  17828. </entry>
  17829. <entry>
  17830. <para><literallayout xml:space='preserve' class='monospaced'>addActionToDerivedAttribute</literallayout></para>
  17831. </entry>
  17832. <entry>
  17833. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17834. </entry>
  17835. <entry>
  17836. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty process model to prepare it for addition of process modeling
  17837. elements.</literallayout></para>
  17838. </entry>
  17839. </row>
  17840. <row>
  17841. <entry>
  17842. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17843. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17844. </imageobject></mediaobject>
  17845. </literallayout></para>
  17846. </entry>
  17847. <entry>
  17848. <para><literallayout xml:space='preserve' class='monospaced'>addActionToMethod</literallayout></para>
  17849. </entry>
  17850. <entry>
  17851. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17852. </entry>
  17853. <entry>
  17854. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty process model to prepare it for addition of process modeling
  17855. elements.
  17856. </literallayout></para>
  17857. </entry>
  17858. </row>
  17859. <row>
  17860. <entry>
  17861. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17862. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17863. </imageobject></mediaobject>
  17864. </literallayout></para>
  17865. </entry>
  17866. <entry>
  17867. <para><literallayout xml:space='preserve' class='monospaced'>addActionToState</literallayout></para>
  17868. </entry>
  17869. <entry>
  17870. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17871. </entry>
  17872. <entry>
  17873. <para><literallayout xml:space='preserve' class='monospaced'>Adds an empty process model to prepare it for addition of process modeling
  17874. elements.
  17875. </literallayout></para>
  17876. </entry>
  17877. </row>
  17878. <row>
  17879. <entry>
  17880. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17881. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17882. </imageobject></mediaobject>
  17883. </literallayout></para>
  17884. </entry>
  17885. <entry>
  17886. <para><literallayout xml:space='preserve' class='monospaced'>addAttributeToOperand</literallayout></para>
  17887. </entry>
  17888. <entry>
  17889. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17890. </entry>
  17891. <entry>
  17892. <para><literallayout xml:space='preserve' class='monospaced'>Add an attribute of an object instance, already added to the process model, to
  17893. the left-hand or right-hand operand of the specified expression.</literallayout></para>
  17894. </entry>
  17895. </row>
  17896. <row>
  17897. <entry>
  17898. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17899. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17900. </imageobject></mediaobject>
  17901. </literallayout></para>
  17902. </entry>
  17903. <entry>
  17904. <para><literallayout xml:space='preserve' class='monospaced'>addBridgeAccessorToProcess</literallayout></para>
  17905. </entry>
  17906. <entry>
  17907. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17908. </entry>
  17909. <entry>
  17910. <para><literallayout xml:space='preserve' class='monospaced'>Adds an asynchronous bridge call to the process specified in the action
  17911. specified.
  17912. A synchronous bridge call will be added as a return value added to an
  17913. operand.</literallayout></para>
  17914. </entry>
  17915. </row>
  17916. <row>
  17917. <entry>
  17918. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17919. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17920. </imageobject></mediaobject>
  17921. </literallayout></para>
  17922. </entry>
  17923. <entry>
  17924. <para><literallayout xml:space='preserve' class='monospaced'>addConstantToOperand</literallayout></para>
  17925. </entry>
  17926. <entry>
  17927. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17928. </entry>
  17929. <entry>
  17930. <para><literallayout xml:space='preserve' class='monospaced'>Add a constant value to the left or right hand operand of an expression.
  17931. As the actual value isn&apos;&apos;t that interesting to the metamodel, the parameter,
  17932. name, is used to allow process model construction within the constraints the
  17933. metamodel. The value of name is symbolic representation of the value is akin to
  17934. using defines in C to represent &quot;magic numbers&quot;.
  17935. </literallayout></para>
  17936. </entry>
  17937. </row>
  17938. <row>
  17939. <entry>
  17940. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17941. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17942. </imageobject></mediaobject>
  17943. </literallayout></para>
  17944. </entry>
  17945. <entry>
  17946. <para><literallayout xml:space='preserve' class='monospaced'>addEnumerationValueToOperand</literallayout></para>
  17947. </entry>
  17948. <entry>
  17949. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17950. </entry>
  17951. <entry>
  17952. <para><literallayout xml:space='preserve' class='monospaced'>Add an enumeration value to the left or right hand operand of an expression.</literallayout></para>
  17953. </entry>
  17954. </row>
  17955. <row>
  17956. <entry>
  17957. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17958. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17959. </imageobject></mediaobject>
  17960. </literallayout></para>
  17961. </entry>
  17962. <entry>
  17963. <para><literallayout xml:space='preserve' class='monospaced'>addEquationToProcess</literallayout></para>
  17964. </entry>
  17965. <entry>
  17966. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17967. </entry>
  17968. <entry>
  17969. <para><literallayout xml:space='preserve' class='monospaced'>Add an equation without expressions to the process specified within the action
  17970. specified.</literallayout></para>
  17971. </entry>
  17972. </row>
  17973. <row>
  17974. <entry>
  17975. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17976. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17977. </imageobject></mediaobject>
  17978. </literallayout></para>
  17979. </entry>
  17980. <entry>
  17981. <para><literallayout xml:space='preserve' class='monospaced'>addEventAccessorToProcess</literallayout></para>
  17982. </entry>
  17983. <entry>
  17984. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  17985. </entry>
  17986. <entry>
  17987. <para><literallayout xml:space='preserve' class='monospaced'>Adds an event accessor to the process specified in the action specified.
  17988. </literallayout></para>
  17989. </entry>
  17990. </row>
  17991. <row>
  17992. <entry>
  17993. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  17994. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  17995. </imageobject></mediaobject>
  17996. </literallayout></para>
  17997. </entry>
  17998. <entry>
  17999. <para><literallayout xml:space='preserve' class='monospaced'>addExpressionToEquation</literallayout></para>
  18000. </entry>
  18001. <entry>
  18002. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18003. </entry>
  18004. <entry>
  18005. <para><literallayout xml:space='preserve' class='monospaced'>Add an expression, without operands, operation, or outcome, at the position
  18006. specified to the equation of the process specified in the action specified.</literallayout></para>
  18007. </entry>
  18008. </row>
  18009. <row>
  18010. <entry>
  18011. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18012. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18013. </imageobject></mediaobject>
  18014. </literallayout></para>
  18015. </entry>
  18016. <entry>
  18017. <para><literallayout xml:space='preserve' class='monospaced'>addIterationToAction</literallayout></para>
  18018. </entry>
  18019. <entry>
  18020. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18021. </entry>
  18022. <entry>
  18023. <para><literallayout xml:space='preserve' class='monospaced'>Add an iteration process to the specified action at the specified ordinal
  18024. position.</literallayout></para>
  18025. </entry>
  18026. </row>
  18027. <row>
  18028. <entry>
  18029. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18030. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18031. </imageobject></mediaobject>
  18032. </literallayout></para>
  18033. </entry>
  18034. <entry>
  18035. <para><literallayout xml:space='preserve' class='monospaced'>addKeywordToOperand</literallayout></para>
  18036. </entry>
  18037. <entry>
  18038. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18039. </entry>
  18040. <entry>
  18041. <para><literallayout xml:space='preserve' class='monospaced'>Adds a the specified keyword value to the process model at the specified
  18042. statement position.</literallayout></para>
  18043. </entry>
  18044. </row>
  18045. <row>
  18046. <entry>
  18047. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18048. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18049. </imageobject></mediaobject>
  18050. </literallayout></para>
  18051. </entry>
  18052. <entry>
  18053. <para><literallayout xml:space='preserve' class='monospaced'>addLoopToAction</literallayout></para>
  18054. </entry>
  18055. <entry>
  18056. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18057. </entry>
  18058. <entry>
  18059. <para><literallayout xml:space='preserve' class='monospaced'>Add a loop process to the specified action at the specified ordinal position.</literallayout></para>
  18060. </entry>
  18061. </row>
  18062. <row>
  18063. <entry>
  18064. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18065. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18066. </imageobject></mediaobject>
  18067. </literallayout></para>
  18068. </entry>
  18069. <entry>
  18070. <para><literallayout xml:space='preserve' class='monospaced'>addObjectInstanceToOperand</literallayout></para>
  18071. </entry>
  18072. <entry>
  18073. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18074. </entry>
  18075. <entry>
  18076. <para><literallayout xml:space='preserve' class='monospaced'>Add an object to the right-hand operand of the specified expression as an
  18077. instance. The only valid use of this is when you are creating an object
  18078. instance for assignment to a variable for later use in the process model, which
  18079. is why it is always the right-hand operand.</literallayout></para>
  18080. </entry>
  18081. </row>
  18082. <row>
  18083. <entry>
  18084. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18085. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18086. </imageobject></mediaobject>
  18087. </literallayout></para>
  18088. </entry>
  18089. <entry>
  18090. <para><literallayout xml:space='preserve' class='monospaced'>addOperandToExpression</literallayout></para>
  18091. </entry>
  18092. <entry>
  18093. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18094. </entry>
  18095. <entry>
  18096. <para><literallayout xml:space='preserve' class='monospaced'>Add a left-hand or right-hand operand to the expression. The order of addition
  18097. to the expression is left-hand operand, right-hand operand, and then operator,
  18098. and this is strictly enforced.</literallayout></para>
  18099. </entry>
  18100. </row>
  18101. <row>
  18102. <entry>
  18103. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18104. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18105. </imageobject></mediaobject>
  18106. </literallayout></para>
  18107. </entry>
  18108. <entry>
  18109. <para><literallayout xml:space='preserve' class='monospaced'>addPathEvaluationToAction</literallayout></para>
  18110. </entry>
  18111. <entry>
  18112. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18113. </entry>
  18114. <entry>
  18115. <para><literallayout xml:space='preserve' class='monospaced'>Add a path evaluation process to the specified action at the specified ordinal
  18116. position. This creates the path evaluation specifier and opens the first path
  18117. container.</literallayout></para>
  18118. </entry>
  18119. </row>
  18120. <row>
  18121. <entry>
  18122. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18123. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18124. </imageobject></mediaobject>
  18125. </literallayout></para>
  18126. </entry>
  18127. <entry>
  18128. <para><literallayout xml:space='preserve' class='monospaced'>addPerspectiveToOperand</literallayout></para>
  18129. </entry>
  18130. <entry>
  18131. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18132. </entry>
  18133. <entry>
  18134. <para><literallayout xml:space='preserve' class='monospaced'>Add a perspective to the specified relationship instance at the specified
  18135. operand position.</literallayout></para>
  18136. </entry>
  18137. </row>
  18138. <row>
  18139. <entry>
  18140. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18141. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18142. </imageobject></mediaobject>
  18143. </literallayout></para>
  18144. </entry>
  18145. <entry>
  18146. <para><literallayout xml:space='preserve' class='monospaced'>addReferentialAttributeToOperand</literallayout></para>
  18147. </entry>
  18148. <entry>
  18149. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18150. </entry>
  18151. <entry>
  18152. <para><literallayout xml:space='preserve' class='monospaced'>Add a referential attribute of an object instance, already added to the process
  18153. model, to the left-hand or right-hand operand of the specified expression.
  18154. </literallayout></para>
  18155. </entry>
  18156. </row>
  18157. <row>
  18158. <entry>
  18159. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18160. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18161. </imageobject></mediaobject>
  18162. </literallayout></para>
  18163. </entry>
  18164. <entry>
  18165. <para><literallayout xml:space='preserve' class='monospaced'>addRelationshipInstanceToOperand</literallayout></para>
  18166. </entry>
  18167. <entry>
  18168. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18169. </entry>
  18170. <entry>
  18171. <para><literallayout xml:space='preserve' class='monospaced'>Creates an instance of the specified relationship and attaches it to the
  18172. operand at the specified position.</literallayout></para>
  18173. </entry>
  18174. </row>
  18175. <row>
  18176. <entry>
  18177. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18178. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18179. </imageobject></mediaobject>
  18180. </literallayout></para>
  18181. </entry>
  18182. <entry>
  18183. <para><literallayout xml:space='preserve' class='monospaced'>addReturnValueToOperand</literallayout></para>
  18184. </entry>
  18185. <entry>
  18186. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18187. </entry>
  18188. <entry>
  18189. <para><literallayout xml:space='preserve' class='monospaced'>Add a return value to the left or right operand of an expression. This bridge
  18190. will be called when an accessor is part of an equation. e.g., a = a + sum(b, c)
  18191. If the return value is on the right hand side of an assignment, it can be
  18192. the return from the current process model.
  18193. This call will be used whenever any synchronous accessor (synchronous
  18194. bridge, object method, or attribute action) is added to a process model. </literallayout></para>
  18195. </entry>
  18196. </row>
  18197. <row>
  18198. <entry>
  18199. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18200. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18201. </imageobject></mediaobject>
  18202. </literallayout></para>
  18203. </entry>
  18204. <entry>
  18205. <para><literallayout xml:space='preserve' class='monospaced'>addStatementToAction</literallayout></para>
  18206. </entry>
  18207. <entry>
  18208. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18209. </entry>
  18210. <entry>
  18211. <para><literallayout xml:space='preserve' class='monospaced'>Add a Statement Process to the specified action at the specified ordinal
  18212. position.</literallayout></para>
  18213. </entry>
  18214. </row>
  18215. <row>
  18216. <entry>
  18217. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18218. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18219. </imageobject></mediaobject>
  18220. </literallayout></para>
  18221. </entry>
  18222. <entry>
  18223. <para><literallayout xml:space='preserve' class='monospaced'>addTypedOperatorToExpression</literallayout></para>
  18224. </entry>
  18225. <entry>
  18226. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18227. </entry>
  18228. <entry>
  18229. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  18230. </entry>
  18231. </row>
  18232. <row>
  18233. <entry>
  18234. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18235. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18236. </imageobject></mediaobject>
  18237. </literallayout></para>
  18238. </entry>
  18239. <entry>
  18240. <para><literallayout xml:space='preserve' class='monospaced'>addValueToParameter</literallayout></para>
  18241. </entry>
  18242. <entry>
  18243. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18244. </entry>
  18245. <entry>
  18246. <para><literallayout xml:space='preserve' class='monospaced'>Assigns the named value, or the value help by a named variable, to the named
  18247. parameter at the given position in a process model.</literallayout></para>
  18248. </entry>
  18249. </row>
  18250. <row>
  18251. <entry>
  18252. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18253. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18254. </imageobject></mediaobject>
  18255. </literallayout></para>
  18256. </entry>
  18257. <entry>
  18258. <para><literallayout xml:space='preserve' class='monospaced'>addVariableToOperand</literallayout></para>
  18259. </entry>
  18260. <entry>
  18261. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18262. </entry>
  18263. <entry>
  18264. <para><literallayout xml:space='preserve' class='monospaced'>Add a transient variable to the left or right hand operand of an expression.
  18265. </literallayout></para>
  18266. </entry>
  18267. </row>
  18268. <row>
  18269. <entry>
  18270. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18271. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18272. </imageobject></mediaobject>
  18273. </literallayout></para>
  18274. </entry>
  18275. <entry>
  18276. <para><literallayout xml:space='preserve' class='monospaced'>getActionOfBridge</literallayout></para>
  18277. </entry>
  18278. <entry>
  18279. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18280. </entry>
  18281. <entry>
  18282. <para><literallayout xml:space='preserve' class='monospaced'>Returns the identifier of the action instance associated with the specified
  18283. element. Will return an invalid identifier if the model isn&apos;&apos;t correct for this
  18284. action.</literallayout></para>
  18285. </entry>
  18286. </row>
  18287. <row>
  18288. <entry>
  18289. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18290. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18291. </imageobject></mediaobject>
  18292. </literallayout></para>
  18293. </entry>
  18294. <entry>
  18295. <para><literallayout xml:space='preserve' class='monospaced'>getActionOfDerivedAttribute</literallayout></para>
  18296. </entry>
  18297. <entry>
  18298. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18299. </entry>
  18300. <entry>
  18301. <para><literallayout xml:space='preserve' class='monospaced'>Returns the identifier of the action instance associated with the specified
  18302. element. Will return an invalid identifier if the model isn&apos;&apos;t correct for this
  18303. action.</literallayout></para>
  18304. </entry>
  18305. </row>
  18306. <row>
  18307. <entry>
  18308. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18309. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18310. </imageobject></mediaobject>
  18311. </literallayout></para>
  18312. </entry>
  18313. <entry>
  18314. <para><literallayout xml:space='preserve' class='monospaced'>getActionOfMethod</literallayout></para>
  18315. </entry>
  18316. <entry>
  18317. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18318. </entry>
  18319. <entry>
  18320. <para><literallayout xml:space='preserve' class='monospaced'>Returns the identifier of the action instance associated with the specified
  18321. element. Will return an invalid identifier if the model isn&apos;&apos;t correct for this
  18322. action.</literallayout></para>
  18323. </entry>
  18324. </row>
  18325. <row>
  18326. <entry>
  18327. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18328. <imagedata fileref='images/Operation.gif' scalefit='1' width='100%'/>
  18329. </imageobject></mediaobject>
  18330. </literallayout></para>
  18331. </entry>
  18332. <entry>
  18333. <para><literallayout xml:space='preserve' class='monospaced'>getActionOfState</literallayout></para>
  18334. </entry>
  18335. <entry>
  18336. <para><literallayout xml:space='preserve' class='monospaced'>Client to Server (Requirer to Provider)</literallayout></para>
  18337. </entry>
  18338. <entry>
  18339. <para><literallayout xml:space='preserve' class='monospaced'>Returns the identifier of the action instance associated with the specified
  18340. element. Will return an invalid identifier if the model isn&apos;&apos;t correct for this
  18341. action.</literallayout></para>
  18342. </entry>
  18343. </row>
  18344. </tbody>
  18345. </tgroup>
  18346. </table>
  18347. </literallayout></para>
  18348. </section>
  18349. <section>
  18350. <title>metamodel Packages</title>
  18351. <subtitle></subtitle>
  18352. <para><literallayout xml:space='preserve' class='monospaced'>Rendered here are the contained package diagrams.</literallayout></para>
  18353. <section>
  18354. <title>DataTypes</title>
  18355. <subtitle>Package</subtitle>
  18356. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-metamodel-DataTypes-PackageDiagram-figure'>
  18357. <title id='shlaer-mellor-metamodel-metamodel-DataTypes-PackageDiagram-figure-title'>DataTypes Package Diagram</title>
  18358. <mediaobject><imageobject>
  18359. <imagedata fileref='images/shlaer-mellor-metamodel-metamodel-DataTypes-Package Diagram.png' scalefit='1' width='100%'/>
  18360. </imageobject></mediaobject>
  18361. </figure>
  18362. </literallayout></para>
  18363. <section>
  18364. <title>Datatypes</title>
  18365. <subtitle></subtitle>
  18366. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  18367. <title>Datatypes</title>
  18368. <tgroup cols='3' align='left' colsep='0' rowsep='0'>
  18369. <thead>
  18370. <row>
  18371. <entry>
  18372. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18373. <imagedata fileref='images/DataType.gif' scalefit='1' width='100%'/>
  18374. </imageobject></mediaobject>
  18375. </literallayout></para>
  18376. </entry>
  18377. <entry>
  18378. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  18379. </entry>
  18380. <entry>
  18381. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  18382. </entry>
  18383. </row>
  18384. </thead>
  18385. <tbody>
  18386. <row>
  18387. <entry>
  18388. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18389. <imagedata fileref='images/Enumeration.gif' scalefit='1' width='100%'/>
  18390. </imageobject></mediaobject>
  18391. </literallayout></para>
  18392. </entry>
  18393. <entry>
  18394. <para><literallayout xml:space='preserve' class='monospaced'>data_t</literallayout></para>
  18395. </entry>
  18396. <entry>
  18397. <para><literallayout xml:space='preserve' class='monospaced'>An enumeration of the core data types defined in the metamodel.</literallayout></para>
  18398. </entry>
  18399. </row>
  18400. <row>
  18401. <entry>
  18402. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18403. <imagedata fileref='images/Enumeration.gif' scalefit='1' width='100%'/>
  18404. </imageobject></mediaobject>
  18405. </literallayout></para>
  18406. </entry>
  18407. <entry>
  18408. <para><literallayout xml:space='preserve' class='monospaced'>creationResult_t</literallayout></para>
  18409. </entry>
  18410. <entry>
  18411. <para><literallayout xml:space='preserve' class='monospaced'>The creation result type is used in conjunction with creating a Shlaer-Mellor
  18412. domain model to verify it is compatible with the metamodel. The result
  18413. enumerator directs the verifier toward further action.</literallayout></para>
  18414. </entry>
  18415. </row>
  18416. <row>
  18417. <entry>
  18418. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18419. <imagedata fileref='images/Enumeration.gif' scalefit='1' width='100%'/>
  18420. </imageobject></mediaobject>
  18421. </literallayout></para>
  18422. </entry>
  18423. <entry>
  18424. <para><literallayout xml:space='preserve' class='monospaced'>state_t</literallayout></para>
  18425. </entry>
  18426. <entry>
  18427. <para><literallayout xml:space='preserve' class='monospaced'>An enumeration of the possible purposes for a state in a state model.</literallayout></para>
  18428. </entry>
  18429. </row>
  18430. <row>
  18431. <entry>
  18432. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18433. <imagedata fileref='images/Enumeration.gif' scalefit='1' width='100%'/>
  18434. </imageobject></mediaobject>
  18435. </literallayout></para>
  18436. </entry>
  18437. <entry>
  18438. <para><literallayout xml:space='preserve' class='monospaced'>transition_t</literallayout></para>
  18439. </entry>
  18440. <entry>
  18441. <para><literallayout xml:space='preserve' class='monospaced'>An enumeration of the types of entries that are added to cells of a state
  18442. transistion table (STT).
  18443. &quot;the STT is a far superior representation for verifying the completenes of and
  18444. consistency of the transition rules. Filling out the STT requires you to
  18445. consider the effect of every event-state combination.&quot; [OL:MWS]</literallayout></para>
  18446. </entry>
  18447. </row>
  18448. <row>
  18449. <entry>
  18450. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18451. <imagedata fileref='images/Enumeration.gif' scalefit='1' width='100%'/>
  18452. </imageobject></mediaobject>
  18453. </literallayout></para>
  18454. </entry>
  18455. <entry>
  18456. <para><literallayout xml:space='preserve' class='monospaced'>controlStructure_t</literallayout></para>
  18457. </entry>
  18458. <entry>
  18459. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  18460. </entry>
  18461. </row>
  18462. </tbody>
  18463. </tgroup>
  18464. </table>
  18465. </literallayout></para>
  18466. </section>
  18467. </section>
  18468. </section>
  18469. </section>
  18470. <section>
  18471. <title>EE</title>
  18472. <subtitle>Package</subtitle>
  18473. <para><literallayout xml:space='preserve' class='monospaced'><figure id='shlaer-mellor-metamodel-EE-PackageDiagram-figure'>
  18474. <title id='shlaer-mellor-metamodel-EE-PackageDiagram-figure-title'>EE Package Diagram</title>
  18475. <mediaobject><imageobject>
  18476. <imagedata fileref='images/shlaer-mellor-metamodel-EE-Package Diagram.png' scalefit='1' width='100%'/>
  18477. </imageobject></mediaobject>
  18478. </figure>
  18479. </literallayout></para>
  18480. <section>
  18481. <title>External Entities</title>
  18482. <subtitle>External Entity</subtitle>
  18483. <para><literallayout xml:space='preserve' class='monospaced'><table frame='all'>
  18484. <title>EE</title>
  18485. <tgroup cols='4' align='left' colsep='0' rowsep='0'>
  18486. <thead>
  18487. <row>
  18488. <entry>
  18489. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18490. <imagedata fileref='images/ExternalEntity.gif' scalefit='1' width='100%'/>
  18491. </imageobject></mediaobject>
  18492. </literallayout></para>
  18493. </entry>
  18494. <entry>
  18495. <para><literallayout xml:space='preserve' class='monospaced'>Name</literallayout></para>
  18496. </entry>
  18497. <entry>
  18498. <para><literallayout xml:space='preserve' class='monospaced'>Description</literallayout></para>
  18499. </entry>
  18500. <entry>
  18501. <para><literallayout xml:space='preserve' class='monospaced'>Bridges</literallayout></para>
  18502. </entry>
  18503. </row>
  18504. </thead>
  18505. <tbody>
  18506. <row>
  18507. <entry>
  18508. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18509. <imagedata fileref='images/ExternalEntity.gif' scalefit='1' width='100%'/>
  18510. </imageobject></mediaobject>
  18511. </literallayout></para>
  18512. </entry>
  18513. <entry>
  18514. <para><literallayout xml:space='preserve' class='monospaced'>Logging</literallayout></para>
  18515. </entry>
  18516. <entry>
  18517. <para><literallayout xml:space='preserve' class='monospaced'></literallayout></para>
  18518. </entry>
  18519. <entry>
  18520. <para><literallayout xml:space='preserve' class='monospaced'>LogSuccess, LogFailure, LogInfo, LogDate, LogTime, LogReal, LogInteger</literallayout></para>
  18521. </entry>
  18522. </row>
  18523. <row>
  18524. <entry>
  18525. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18526. <imagedata fileref='images/ExternalEntity.gif' scalefit='1' width='100%'/>
  18527. </imageobject></mediaobject>
  18528. </literallayout></para>
  18529. </entry>
  18530. <entry>
  18531. <para><literallayout xml:space='preserve' class='monospaced'>Time</literallayout></para>
  18532. </entry>
  18533. <entry>
  18534. <para><literallayout xml:space='preserve' class='monospaced'>The Time external entity provides date, timestamp, and timer related operations.</literallayout></para>
  18535. </entry>
  18536. <entry>
  18537. <para><literallayout xml:space='preserve' class='monospaced'>current_date, create_date, get_second, get_minute, get_hour, get_day, get_month, get_year, current_clock, timer_start, timer_start_recurring, timer_remaining_time, timer_reset_time, timer_add_time, timer_cancel</literallayout></para>
  18538. </entry>
  18539. </row>
  18540. <row>
  18541. <entry>
  18542. <para><literallayout xml:space='preserve' class='monospaced'><mediaobject><imageobject>
  18543. <imagedata fileref='images/ExternalEntity.gif' scalefit='1' width='100%'/>
  18544. </imageobject></mediaobject>
  18545. </literallayout></para>
  18546. </entry>
  18547. <entry>
  18548. <para><literallayout xml:space='preserve' class='monospaced'>TypeConversion</literallayout></para>
  18549. </entry>
  18550. <entry>
  18551. <para><literallayout xml:space='preserve' class='monospaced'>Type conversions needed in OAL parsing.</literallayout></para>
  18552. </entry>
  18553. <entry>
  18554. <para><literallayout xml:space='preserve' class='monospaced'>intToString, uniqueIdToInt, realToString</literallayout></para>
  18555. </entry>
  18556. </row>
  18557. </tbody>
  18558. </tgroup>
  18559. </table>
  18560. </literallayout></para>
  18561. <section>
  18562. <title>External Entity Activities</title>
  18563. <subtitle></subtitle>
  18564. <section>
  18565. <title>Logging Activities</title>
  18566. <subtitle></subtitle>
  18567. </section>
  18568. <section>
  18569. <title>Time Activities</title>
  18570. <subtitle></subtitle>
  18571. <section>
  18572. <title>timer_start</title>
  18573. <subtitle></subtitle>
  18574. <para><literallayout xml:space='preserve' class='monospaced'>This bridge operation starts a timer set to expire in the specified number of
  18575. microseconds, generating the passed event upon expiration. Returns the instance
  18576. handle of the timer.</literallayout></para>
  18577. <para><programlisting>
  18578. </programlisting></para>
  18579. </section>
  18580. <section>
  18581. <title>timer_start_recurring</title>
  18582. <subtitle></subtitle>
  18583. <para><literallayout xml:space='preserve' class='monospaced'>This bridge operation starts a timer set to expire in the specified number of
  18584. microseconds, generating the passed event upon expiration. Upon expiration, the
  18585. timer will be restarted and fire again in the specified number of microseconds
  18586. generating the passed event. This bridge operation returns the instance handle
  18587. of the timer.</literallayout></para>
  18588. <para><programlisting>
  18589. </programlisting></para>
  18590. </section>
  18591. <section>
  18592. <title>timer_remaining_time</title>
  18593. <subtitle></subtitle>
  18594. <para><literallayout xml:space='preserve' class='monospaced'>Returns the time remaining (in microseconds) for the passed timer instance. If
  18595. the timer has expired, a zero value is returned.</literallayout></para>
  18596. <para><programlisting>
  18597. </programlisting></para>
  18598. </section>
  18599. <section>
  18600. <title>timer_reset_time</title>
  18601. <subtitle></subtitle>
  18602. <para><literallayout xml:space='preserve' class='monospaced'>This bridge operation attempts to set the passed existing timer to expire in
  18603. the specified number of microseconds. If the timer exists (that is, it has not
  18604. expired), a TRUE value is returned. If the timer no longer exists, a FALSE value
  18605. is returned.</literallayout></para>
  18606. <para><programlisting>
  18607. </programlisting></para>
  18608. </section>
  18609. <section>
  18610. <title>timer_add_time</title>
  18611. <subtitle></subtitle>
  18612. <para><literallayout xml:space='preserve' class='monospaced'>This bridge operation attempts to add the specified number of microseconds to a
  18613. passed existing timer. If the timer exists (that is, it has not expired), a TRUE
  18614. value is returned. If the timer no longer exists, a FALSE value is returned.</literallayout></para>
  18615. <para><programlisting>
  18616. </programlisting></para>
  18617. </section>
  18618. <section>
  18619. <title>timer_cancel</title>
  18620. <subtitle></subtitle>
  18621. <para><literallayout xml:space='preserve' class='monospaced'>This bridge operation cancels and deletes the passed timer instance. If the
  18622. timer exists (that is, it had not expired), a TRUE value is returned. If the
  18623. timer no longer exists, a FALSE value is returned.</literallayout></para>
  18624. <para><programlisting>
  18625. </programlisting></para>
  18626. </section>
  18627. </section>
  18628. <section>
  18629. <title>TypeConversion Activities</title>
  18630. <subtitle></subtitle>
  18631. </section>
  18632. </section>
  18633. </section>
  18634. </section>
  18635. </section>
  18636. </section>
  18637. </article>