diff --git a/common/admin/mocha-libexec/internal/librarymanager/libraryparser/YAMLLibraryParser.py b/common/admin/mocha-libexec/internal/librarymanager/libraryparser/YAMLLibraryParser.py index 69c2115..8d5994f 100644 --- a/common/admin/mocha-libexec/internal/librarymanager/libraryparser/YAMLLibraryParser.py +++ b/common/admin/mocha-libexec/internal/librarymanager/libraryparser/YAMLLibraryParser.py @@ -105,9 +105,16 @@ class YAMLLibraryParser (LibraryParser): globalIdentifier = Guid.create() print("creating new instance for relationship '%s' with globalid '%s'" % (rel_iid, globalIdentifier.get_value())) - if "customTagNameCreatesInstanceOf" in rel: + + createsInstanceOf = None + if "type" in relationshipValue: + print("found relationship override type '%s'" % (relationshipValue['type'])) + createsInstanceOf = Guid(self.manager.expand_entity_references(relationshipValue["type"])) + + elif "customTagNameCreatesInstanceOf" in rel: createsInstanceOf = Guid(self.manager.expand_entity_references(rel["customTagNameCreatesInstanceOf"])) + if not createsInstanceOf is None: # create the new instance self.manager.add_instance(createsInstanceOf, globalIdentifier, None, None) @@ -126,6 +133,8 @@ class YAMLLibraryParser (LibraryParser): self.apply_template(relationshipValue, createsInstanceOfTemplate, globalIdentifier) else: print("no template registered for createsInstanceOf '%s'" % (createsInstanceOf.get_value())) + else: + print ("neither createsInstanceOf nor override 'type' present for relationship value") def apply_template(self, elem, template, instanceId): diff --git a/common/libraries/yaml/net.alcetech.Mocha.System/000-EntityDefinitions/003-Relationships.yaml b/common/libraries/yaml/net.alcetech.Mocha.System/000-EntityDefinitions/003-Relationships.yaml index 38d2065..34b05ca 100644 --- a/common/libraries/yaml/net.alcetech.Mocha.System/000-EntityDefinitions/003-Relationships.yaml +++ b/common/libraries/yaml/net.alcetech.Mocha.System/000-EntityDefinitions/003-Relationships.yaml @@ -268,9 +268,6 @@ - IDR_Layout__has__Style: '{e684bb26-7e78-4a21-b8b4-5a550f3053d5}' - IDR_Style__for__Layout: '{7588a2f7-823d-4e00-ae37-10547c8d06e4}' - - IDR_Button_Layout__executes_task_from__Instance_Set: '{04d104fa-a6c4-425e-a6cd-56d847c63e9d}' - - IDR_Instance_Set__has_task_executed_by__Button_Layout: '{c17171be-9d7a-4df9-8903-2b9d5cc26742}' - - IDR_Measurement__has__Measurement_Unit: '{C9720082-1F40-406D-80B7-81C1B690354D}' - IDR_Measurement_Unit__for__Measurement: '{3117CB16-6860-48B6-8E21-3655A121E695}' diff --git a/common/libraries/yaml/net.alcetech.Mocha.System/003-Classes/03009-ButtonLayout.yaml b/common/libraries/yaml/net.alcetech.Mocha.System/003-Classes/03009-ButtonLayout.yaml index 12018e3..8c3fe43 100644 --- a/common/libraries/yaml/net.alcetech.Mocha.System/003-Classes/03009-ButtonLayout.yaml +++ b/common/libraries/yaml/net.alcetech.Mocha.System/003-Classes/03009-ButtonLayout.yaml @@ -1,14 +1,24 @@ +- entityDefinitions: + - IDR_Button_Layout__executes_task_from__Instance_Set: '{04d104fa-a6c4-425e-a6cd-56d847c63e9d}' + - IDR_Instance_Set__has_task_executed_by__Button_Layout: '{c17171be-9d7a-4df9-8903-2b9d5cc26742}' + + - IDR_Button_Layout__gets_related_instance_from__Instance_Set: '{462bb1ab-aefa-4455-8d56-eff233e3caa7}' + - IDR_Instance_Set__has_related_instance_for__Button_Layout: '{81449573-4334-4b31-8fa6-007b3a15ef2b}' + - library: '&IDL_MochaBaseSystem;' instances: - class: '&IDC_ButtonLayout;' index: 3009 name: Button Layout customTagName: buttonLayout + registerForTemplate: yes superclasses: - instance: '&IDC_Layout;' relationships: - instance: '&IDR_Button_Layout__executes_task_from__Instance_Set;' customTagName: 'executesTask' + - instance: '&IDR_Button_Layout__gets_related_instance_from__Instance_Set;' + customTagName: 'relatedInstance' - relationship: '&IDR_Button_Layout__executes_task_from__Instance_Set;' index: 9232 @@ -25,3 +35,19 @@ destinationClassId: '&IDC_ButtonLayout;' siblingRelationshipId: '&IDR_Button_Layout__executes_task_from__Instance_Set;' singular: no + + - relationship: '&IDR_Button_Layout__gets_related_instance_from__Instance_Set;' + index: 7878 + sourceClassId: '&IDC_ButtonLayout;' + type: 'gets related instance from' + destinationClassId: '&IDC_InstanceSet;' + siblingRelationshipId: '&IDR_Instance_Set__has_related_instance_for__Button_Layout;' + singular: yes + + - relationship: '&IDR_Instance_Set__has_related_instance_for__Button_Layout;' + index: 7879 + sourceClassId: '&IDC_InstanceSet;' + type: 'has related instance for' + destinationClassId: '&IDC_ButtonLayout;' + siblingRelationshipId: '&IDR_Button_Layout__gets_related_instance_from__Instance_Set;' + singular: no diff --git a/common/libraries/yaml/net.alcetech.Mocha.System/004-Methods/Element/Element__get__Returned_by_BEM.yaml b/common/libraries/yaml/net.alcetech.Mocha.System/004-Methods/Element/Element__get__Returned_by_BEM.yaml new file mode 100644 index 0000000..3fdba65 --- /dev/null +++ b/common/libraries/yaml/net.alcetech.Mocha.System/004-Methods/Element/Element__get__Returned_by_BEM.yaml @@ -0,0 +1,23 @@ +- entityDefinitions: + - IDM_Element__get__Returned_by_BEM: '{4d5a8393-6b7e-4cb8-9ced-342709fe3cfd}' + - IDMB_Element__get__Returned_by_BEM: '{07d9f79a-3fdd-43e7-90c9-108b9fd7bfae}' + - IDI_WorkSet_ReturnedByBEM: '{da30159a-4f66-4c69-86a0-7ede8924817b}' + +- library: '&IDL_MochaBaseSystem;' + instances: + - workSet: '&IDI_WorkSet_ReturnedByBEM;' + name: 'Returned by BEM - Build Element Method' + singular: yes + + - getReferencedInstanceSetMethod: '&IDM_Element__get__Returned_by_BEM;' + forClassId: '&IDC_Element;' + returnsWorkSetId: '&IDI_WorkSet_ReturnedByBEM;' + verb: 'get' + name: 'Returned by BEM' + accessModifierId: '&IDI_AccessModifier_RootA2;' + referenceInstanceSet: '&IDC_Element;' + answerInstanceSet: '&IDR_Element__returned_by__Build_Element_Method;' + singular: yes + + - returnInstanceSetMethodBinding: '&IDMB_Element__get__Returned_by_BEM;' + executesMethod: '&IDM_Element__get__Returned_by_BEM;' diff --git a/common/libraries/yaml/net.alcetech.Mocha.System/004-Methods/MethodBinding/Method_Binding__get__Parameter_Assignments.yaml b/common/libraries/yaml/net.alcetech.Mocha.System/004-Methods/MethodBinding/Method_Binding__get__Parameter_Assignments.yaml new file mode 100644 index 0000000..2bb8e53 --- /dev/null +++ b/common/libraries/yaml/net.alcetech.Mocha.System/004-Methods/MethodBinding/Method_Binding__get__Parameter_Assignments.yaml @@ -0,0 +1,20 @@ +- entityDefinitions: + - IDM_Method_Binding__get__Parameter_Assignments: '{b3d742ad-65f5-4eec-bed3-5f7c20df3e22}' + - IDMB_Method_Binding__get__Parameter_Assignments: '{f89b7bc9-cbab-4d45-b079-c421163ef1e9}' + +- library: '&IDL_MochaBaseSystem;' + instances: + - getReferencedInstanceSetMethod: '&IDM_Method_Binding__get__Parameter_Assignments;' + # initialValue: 'Method Example@get Dummy Method Name (BA)*S*P(public)' + forClassId: '&IDC_MethodBinding;' + # returnsWorkSetId: '&IDI_WorkSet_MethodSingular;' + returnsWorkSetId: '&IDC_ParameterAssignment;' + verb: 'get' + name: 'Parameter Assignments' + accessModifierId: '&IDI_AccessModifier_RootA2;' + referenceInstanceSet: '&IDC_MethodBinding;' + answerInstanceSet: '&IDR_Method_Binding__has__Parameter_Assignment;' + singular: no + + - returnInstanceSetMethodBinding: '&IDMB_Method_Binding__get__Parameter_Assignments;' + executesMethod: '&IDM_Method_Binding__get__Parameter_Assignments;' \ No newline at end of file diff --git a/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/Class/ViewClass.yaml b/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/Class/ViewClass.yaml index cc5223c..933af41 100644 --- a/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/Class/ViewClass.yaml +++ b/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/Class/ViewClass.yaml @@ -1,6 +1,7 @@ - entityDefinitions: - IDE_ClassStart: '{8730d21a-44a8-4d93-9bf7-f8191ca08489}' - IDE_ClassSelect: '{bc393547-3a92-48b2-b0dc-7e93306ab5fb}' + - IDE_ViewClassButtons: '{a3fd6203-8e9c-4b7f-b731-e73f9f77967e}' - library: '&IDL_MochaBaseSystem;' instances: @@ -60,18 +61,20 @@ displayOptions: - instance: '&IDI_DisplayOption_Required;' - - element: '&IDE_ViewClass;' - name: 'view class' + - element: '&IDE_ViewClassButtons;' + name: 'view class buttons' elementContents: - globalIdentifier: '{dafb235b-ba1a-4b1a-8f9b-84cd987553e4}' - layout: '&IDI_ButtonLayout_DefaultButtonGroup;' - label: 'Edit' - value: - - taskId: '&IDI_Task_EditClass;' - - parameterAssignments: - - globalIdentifier: '{9dbdb202-e9f8-49ca-bbc2-0b63df651246}' + layout: + - globalIdentifier: '{31974c8d-9492-4f5b-a4d9-79c4e92f51c6}' + type: '&IDC_ButtonLayout;' + executesTask: '&IDI_Task_EditClass;' + relatedInstance: '&IDI_WorkSet_TaskRelatedInstance;' + parameterAssignments: + - globalIdentifier: '{29164916-503e-4585-ba76-f37a3530d6dc}' assignsToParm: '&IDC_Class;' assignsFromWorkData: '&IDC_Class;' + label: 'Edit' - globalIdentifier: '{7059bd24-6a43-483f-b3fb-a2ae1e9ae90b}' layout: '&IDI_ButtonLayout_DefaultButtonGroup;' label: 'Add Attribute' @@ -126,6 +129,14 @@ - globalIdentifier: '{f3100844-0133-4083-a1ae-a01b7baa2381}' assignsToParm: '&IDC_Class;' assignsFromWorkData: '&IDC_Class;' + + - element: '&IDE_ViewClass;' + name: 'view class' + elementContents: + - globalIdentifier: '{156e622f-da03-42f9-8d45-a85b9336501a}' + defaultDataType: '&IDE_ViewClassButtons;' + displayOptions: + - instance: '&IDI_DisplayOption_Singular;' - globalIdentifier: '{24fbaf94-bcca-4513-b93d-6a1866a1641c}' defaultDataType: '&IDE_Class_Structure;' diff --git a/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/Element.yaml b/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/Element.yaml index bf274fc..9a271cd 100644 --- a/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/Element.yaml +++ b/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/Element.yaml @@ -8,6 +8,7 @@ - IDE_Element_View_Toolbar: '{ad0b929c-d24f-42e9-8548-cca0d30ee760}' - IDE_Element_Common: '{beb75322-b61e-444e-b0ab-8ac7a5103953}' + - IDMB_Element__get__Returned_by_BEM__Task_Related_Instance: '{ea65f363-deb4-4a94-ae49-ba11eeef08dc}' - library: '&IDL_MochaBaseSystem;' instances: @@ -61,20 +62,27 @@ name: 'build element contents' loopExecutableReturningInstanceSet: '&IDMB_Element__get__Element_Contents;' + - returnInstanceSetMethodBinding: '&IDMB_Element__get__Returned_by_BEM__Task_Related_Instance;' + executesMethod: '&IDM_Element__get__Returned_by_BEM;' + parameterAssignments: + - assignsToParameter: '&IDC_Element;' + assignsFromWorkData: '&IDI_WorkSet_TaskRelatedInstance;' + - element: '&IDE_Element_View_Toolbar;' name: 'view element buttons' elementContents: - globalIdentifier: '{04ce9724-fa4f-4200-a7e6-c71c871004b0}' - layout: '&IDI_ButtonLayout_DefaultButtonGroup;' + layout: + - type: '&IDC_ButtonLayout;' + executesTask: '&IDI_Task_Element_Edit;' + relatedInstance: '&IDI_WorkSet_TaskRelatedInstance;' label: 'Edit' - value: - - taskId: '&IDI_Task_Element_Edit;' - - parameterAssignments: - - globalIdentifier: '{9dbdb202-e9f8-49ca-bbc2-0b63df651246}' - assignsToParm: '&IDC_Class;' - assignsFromWorkData: '&IDC_Class;' - globalIdentifier: '{b955d049-faf0-4a1b-a345-ee41b377dc78}' - layout: '&IDI_ButtonLayout_DefaultButtonGroup;' + layout: + - type: '&IDC_ButtonLayout;' + # executesTask: '&IDI_Task_ViewBuildElementMethod;' + executesTask: '&IDI_Task_Element_Edit;' + relatedInstance: '&IDMB_Element__get__Returned_by_BEM__Task_Related_Instance;' label: 'View BEM' value: - taskId: '&IDI_Task_Element_Edit;' @@ -83,7 +91,11 @@ assignsToParm: '&IDC_Class;' assignsFromWorkData: '&IDC_Class;' - globalIdentifier: '{7ae5d892-9d46-4962-b763-8f8071c8cc18}' - layout: '&IDI_ButtonLayout_DefaultButtonGroup;' + layout: + - type: '&IDC_ButtonLayout;' + # executesTask: '&IDI_Task_EditBuildElementMethod;' + executesTask: '&IDI_Task_Element_Edit;' + relatedInstance: '&IDMB_Element__get__Returned_by_BEM;' label: 'Edit BEM' value: - taskId: '&IDI_Task_Element_Edit;' @@ -122,6 +134,8 @@ - globalIdentifier: '{99cf85da-6d7f-436e-af21-33647d3d2e07}' defaultDataType: '&IDE_Element_View_Toolbar;' order: b + displayOptions: + - instance: '&IDI_DisplayOption_Singular;' - globalIdentifier: '{ebc2cf46-6abf-4b23-a85c-2d4a950f0aef}' defaultDataType: '&IDE_Element_Common;' order: c diff --git a/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/MethodCommon/MethodCommon.yaml b/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/MethodCommon/MethodCommon.yaml index c3290e7..b7f2096 100644 --- a/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/MethodCommon/MethodCommon.yaml +++ b/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/MethodCommon/MethodCommon.yaml @@ -1,3 +1,6 @@ +- entityDefinitions: + - IDE_Method_Common_Parms: '{9e4b1ad8-1988-483d-abb4-b8e4ab77a02c}' + - library: '&IDL_MochaBaseSystem;' instances: - element: '&IDE_Method_Common_Definition;' @@ -9,7 +12,7 @@ order: a displayOptions: - instance: '&IDI_DisplayOption_DoNotShow;' - - globalIdentifier: '{9e51cd55-6dc1-4b07-a08f-dc1c8ea4d97f}' + - globalIdentifier: '{f4493d97-f34c-40c4-836c-2bf8a305182a}' defaultDataType: '&IDMB_Instance__get__Global_Identifier;' label: 'Global Identifier' order: b @@ -44,4 +47,26 @@ - globalIdentifier: '{bccc0986-2ea7-4eab-9921-63a47eba051e}' defaultDataType: '&IDA_Final;' label: 'Final' - order: i \ No newline at end of file + order: i + + - element: '&IDE_Method_Common_Parms;' + label: 'Parameters' + elementContents: + - globalIdentifier: '{09c6b9c6-e925-41eb-ae09-b12ac931db07}' + defaultDataType: '&IDC_Method;' + label: 'Method' + order: a + displayOptions: + - instance: '&IDI_DisplayOption_DoNotShow;' + # - globalIdentifier: '{47c78a41-ae70-4c60-9385-33a4f268d3ab}' + # defaultDataType: '&IDR_Method_with_Static_and_Parms__uses_parm__Work_Data;' + # label: 'Optional parms' + # order: b + # - globalIdentifier: '{ab3627d3-ab43-4ae9-a175-535e83be0537}' + # defaultDataType: '&IDR_Method_with_Static_and_Parms__uses_required_parm__Work_Data;' + # label: 'Required parms (null allowed)' + # order: c + # - globalIdentifier: '{1b5e31b1-047d-443b-a381-c7d49370198a}' + # defaultDataType: '&IDR_Method_with_Static_and_Parms__uses_required_nullable_parm__Work_Data;' + # label: 'Required parms (not null)' + # order: d \ No newline at end of file diff --git a/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/ReturnInstanceSetMethodBinding/ReturnInstanceSetMethodBinding.yaml b/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/ReturnInstanceSetMethodBinding/ReturnInstanceSetMethodBinding.yaml index 594a0e8..21e8845 100644 --- a/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/ReturnInstanceSetMethodBinding/ReturnInstanceSetMethodBinding.yaml +++ b/common/libraries/yaml/net.alcetech.Mocha.System/005-UserInterface/Tasks/ReturnInstanceSetMethodBinding/ReturnInstanceSetMethodBinding.yaml @@ -6,6 +6,9 @@ - IDE_ReturnInstanceSetMethodBinding_Definition: '{c7191f4b-e45e-4430-a568-8bb29600c860}' - IDE_ReturnInstanceSetMethodBinding_Preview: '{98e39ace-c4cf-4cf1-b648-74eed221dc9c}' + - IDE_MethodBinding_ParameterAssignments: '{c757b7ad-f00d-4fc6-970a-6e9dc33c2c38}' + - IDMB_Method_Binding__get__Parameter_Assignments_TaskRelatedInstance: '{1e567031-8cb3-49a9-ab4f-2236ba547abe}' + - library: '&IDL_MochaBaseSystem;' instances: - sequenceTask: '&IDI_Task_ViewReturnInstanceSetMethodBinding;' @@ -22,20 +25,60 @@ name: 'view rsmb' elementContents: - globalIdentifier: '{742aa7e2-79c3-4167-9de4-db194a32bd96}' + order: a defaultDataType: '&IDE_ReturnInstanceSetMethodBinding_Definition;' displayOptions: - instance: '&IDI_DisplayOption_Singular;' - instance: '&IDI_DisplayOption_ShowSubelementsVertically;' - instance: '&IDI_DisplayOption_NotEnterable;' + - globalIdentifier: '{d3be5892-b103-46b2-a6e8-c30685398934}' + defaultDataType: '&IDE_MethodBinding_ParameterAssignments;' # &IDR_Method_Binding__has__Parameter_Assignment;' + label: 'Parameter Assignments' + order: b + builtFromBEMProcess: '{f1da7d9c-ed2f-4d36-9d40-b48f40cfdb96}' + displayOptions: + - instance: '&IDI_DisplayOption_NotEnterable;' + + - element: '&IDE_MethodBinding_ParameterAssignments;' + name: 'parm assigns' + elementContents: + - globalIdentifier: '{ee32c353-b0eb-4708-8afc-76f1a37afe9b}' + defaultDataType: '&IDR_Parameter_Assignment__assigns_to__Work_Data;' + label: 'Assigns to Parm' + order: a + - globalIdentifier: '{3e5239a1-3c6c-4f22-b116-d03fb6bf43d2}' + defaultDataType: '&IDR_Parameter_Assignment__assigns_from__Executable_returning_Work_Data;' + label: 'Assigns from RWMB' + order: b + + - buildElementMethod: '{d31608cd-b669-46a8-ac68-03a1ffc28feb}' + hasBemProcess: '{f1da7d9c-ed2f-4d36-9d40-b48f40cfdb96}' + + - bemProcess: '{f1da7d9c-ed2f-4d36-9d40-b48f40cfdb96}' + name: 'build parm assigns' + loopExecutableReturningInstanceSet: '&IDMB_Method_Binding__get__Parameter_Assignments_TaskRelatedInstance;' + + - returnInstanceSetMethodBinding: '&IDMB_Method_Binding__get__Parameter_Assignments_TaskRelatedInstance;' + executesMethod: '&IDM_Method_Binding__get__Parameter_Assignments;' + parameterAssignments: + - assignsToParameter: '&IDC_MethodBinding;' + assignsFromWorkData: '&IDI_WorkSet_TaskRelatedInstance;' + - element: '&IDE_ReturnInstanceSetMethodBinding_Edit;' name: 'edit rsmb' elementContents: - globalIdentifier: '{370db58f-09fc-46b8-8485-849ef2fe0734}' defaultDataType: '&IDE_ReturnInstanceSetMethodBinding_Definition;' + order: a displayOptions: - instance: '&IDI_DisplayOption_Singular;' - instance: '&IDI_DisplayOption_ShowSubelementsVertically;' + - globalIdentifier: '{52ada6e0-8192-42ed-b191-0120dbcdc14f}' + defaultDataType: '&IDE_MethodBinding_ParameterAssignments;' # &IDR_Method_Binding__has__Parameter_Assignment;' + label: 'Parameter Assignments' + order: b + builtFromBEMProcess: '{f1da7d9c-ed2f-4d36-9d40-b48f40cfdb96}' - element: '&IDE_ReturnInstanceSetMethodBinding_Definition;' name: 'rsmb subedit' diff --git a/common/libraries/zq/Class.zq b/common/libraries/zq/Class.zq new file mode 100644 index 0000000..73699f3 --- /dev/null +++ b/common/libraries/zq/Class.zq @@ -0,0 +1,16 @@ +public class Class, 1$1 { + + attributes: + // + + relationships: + // + + functions: + + static stub function getAllClasses() : Class* + + instances: + // + +} \ No newline at end of file diff --git a/php/mocha/lib/mocha/core/KnownRelationshipGuids.inc.php b/php/mocha/lib/mocha/core/KnownRelationshipGuids.inc.php index 3262be4..d14af02 100644 --- a/php/mocha/lib/mocha/core/KnownRelationshipGuids.inc.php +++ b/php/mocha/lib/mocha/core/KnownRelationshipGuids.inc.php @@ -310,6 +310,7 @@ class KnownRelationshipGuids const User_Preferences__for__System_Account = "{ab2372a5-a4c7-488a-89f6-67e5834f8c83}"; const Button_Layout__executes_task_from__Instance_Set = "04d104faa6c4425ea6cd56d847c63e9d"; + const Button_Layout__gets_related_instance_from__Instance_Set = "{462bb1ab-aefa-4455-8d56-eff233e3caa7}"; const Element__processed_by__Process_Related_Updates_Method = "{ed9c836a-04a4-4505-8953-3c567e841c66}"; const Element__processed_by__Control_Transaction_Method = "{0f182291-6784-47b3-a8d3-d2f6ebf3950c}"; diff --git a/php/mocha/lib/mocha/oms/Oms.inc.php b/php/mocha/lib/mocha/oms/Oms.inc.php index 8de7fde..fe2a098 100644 --- a/php/mocha/lib/mocha/oms/Oms.inc.php +++ b/php/mocha/lib/mocha/oms/Oms.inc.php @@ -638,6 +638,17 @@ } return null; } + + public function executeAndEvaluateWorkData(OmsContext $context, InstanceReference $inst) + { + $result = $this->execute($context, $inst); + if ($this->is_a($result, KnownClassGuids::WorkSet)) + { + return $context->getWorkData($result); + } + return $result; + } + public function execute(OmsContext $context, InstanceReference $inst, $classesLookupWorkData = true, ?array $parms = null) { $instParent = $this->getParentClass($inst); diff --git a/php/mocha/lib/mocha/ui/renderers/html/HTMLRenderer.inc.php b/php/mocha/lib/mocha/ui/renderers/html/HTMLRenderer.inc.php index 60397bd..4421199 100644 --- a/php/mocha/lib/mocha/ui/renderers/html/HTMLRenderer.inc.php +++ b/php/mocha/lib/mocha/ui/renderers/html/HTMLRenderer.inc.php @@ -1134,7 +1134,12 @@ } $fullyQualifiedECID = $this->getElementContentId($parentElementContents, $elementContent); - echo (""); + echo (""); $ecLayout = $oms->getRelatedInstance($elementContent, $oms->getInstanceByGlobalIdentifier(KnownRelationshipGuids::Element_Content__has__Layout)); if ($ecLayout !== null) @@ -1149,9 +1154,18 @@ // override layout : button echo ("getRelatedInstance($ecLayout, KnownRelationshipGuids::Button_Layout__executes_task_from__Instance_Set); + $getsRelatedInstanceFromIS = $oms->getRelatedInstance($ecLayout, KnownRelationshipGuids::Button_Layout__gets_related_instance_from__Instance_Set); if ($executesTaskFromIS !== null) { - echo(System::ExpandRelativePath("~/d/task/" . $executesTaskFromIS->InstanceKey . ".htmld")); + if ($getsRelatedInstanceFromIS !== null) + { + $getsRelatedInstanceFromIS = $oms->executeAndEvaluateWorkData($this->Context, $getsRelatedInstanceFromIS); + echo(System::ExpandRelativePath("~/d/inst/" . $getsRelatedInstanceFromIS->InstanceKey . "/rel-task/" . $executesTaskFromIS->InstanceKey . ".htmld")); + } + else + { + echo(System::ExpandRelativePath("~/d/task/" . $executesTaskFromIS->InstanceKey . ".htmld")); + } } echo("\">"); //