vast improvements to methods, GRA and GRS work now, yay

This commit is contained in:
Michael Becker 2024-01-08 02:01:37 -05:00
parent eb3bc62854
commit 70ce315f51
33 changed files with 772 additions and 151 deletions

View File

@ -299,6 +299,8 @@ elif [ "$1" == "attribute" ]; then
if [ "$4" == "for" ]; then if [ "$4" == "for" ]; then
# usage: `mocha oms attribute set (att) for (inst) (value)`
ATT_ID=$3 ATT_ID=$3
INST_ID=$5 INST_ID=$5
ATT_VALUE=$6 ATT_VALUE=$6

View File

@ -107,6 +107,8 @@
- IDC_UserLogin: '{64F4BCDB-38D0-4373-BA30-8AE99AF1A5F7}' - IDC_UserLogin: '{64F4BCDB-38D0-4373-BA30-8AE99AF1A5F7}'
- IDC_UserPreferences: '{d455a1d5-ae47-4d94-ac55-debe5760d682}' - IDC_UserPreferences: '{d455a1d5-ae47-4d94-ac55-debe5760d682}'
- IDC_PersonName: '{56cedd2a-59d4-41be-b861-33dc892cfff9}'
- IDC_MenuItemCommand: '{9D3EDE23-6DB9-4664-9145-ABCBD3A0A2C2}' - IDC_MenuItemCommand: '{9D3EDE23-6DB9-4664-9145-ABCBD3A0A2C2}'
- IDC_MenuItemSeparator: '{798DECAB-5119-49D7-B0AD-D4BF45807188}' - IDC_MenuItemSeparator: '{798DECAB-5119-49D7-B0AD-D4BF45807188}'
- IDC_MenuItemHeader: '{1F148873-8A97-4409-A79B-C19D5D380CA4}' - IDC_MenuItemHeader: '{1F148873-8A97-4409-A79B-C19D5D380CA4}'

View File

@ -65,3 +65,6 @@
- IDA_OpenInNewWindow: '{4a211f11-c5c3-4b58-a7f4-ed62538c5a3d}' - IDA_OpenInNewWindow: '{4a211f11-c5c3-4b58-a7f4-ed62538c5a3d}'
- IDA_LongRunning: '{c03aa999-83bc-49db-a27e-70fee477b9fb}' - IDA_LongRunning: '{c03aa999-83bc-49db-a27e-70fee477b9fb}'
- IDA_SuppressRIHints: '{43328aec-6a5d-4955-8d04-a96dcf98ab02}' - IDA_SuppressRIHints: '{43328aec-6a5d-4955-8d04-a96dcf98ab02}'
- IDA_GivenName: '{94a3ab09-3db7-4207-9e66-9526eb738669}'
- IDA_FamilyName: '{b84f602d-6bfc-4898-9d44-4d49af44cbb4}'

View File

@ -106,11 +106,19 @@
- IDR_Get_Attribute_Method__returns__Attribute: "{5eca9b3f-be75-4f6e-8495-781480774833}" - IDR_Get_Attribute_Method__returns__Attribute: "{5eca9b3f-be75-4f6e-8495-781480774833}"
- IDR_Attribute__returned_by__Get_Attribute_Method: "{e82ace2e-84b7-4912-89ed-7b8efd63bb5d}" - IDR_Attribute__returned_by__Get_Attribute_Method: "{e82ace2e-84b7-4912-89ed-7b8efd63bb5d}"
- IDR_Get_Referenced_Instance_Set_Method__loop_on__Instance_Set: "{2978238f-7cb0-4ba3-8c6f-473df782cfef}" - IDR_Get_Referenced_Instance_Set_Method__returns__Work_Set: "{72057f5b-9b49-497d-852f-cd7e5e258d6c}"
- IDR_Get_Referenced_Instance_Set_Method__has_relationship__Method: "{6a65819e-c8cb-4575-9af8-ee221364049b}" - IDR_Work_Set__returned_by__Get_Referenced_Instance_Set_Method: "{ac6092e6-e098-40a3-a9fb-f27312cffa7c}"
- IDR_Get_Referenced_Instance_Set_Method__uses_reference__Executable_returning_Instance_Set: "{2978238f-7cb0-4ba3-8c6f-473df782cfef}" # Loop on Instance Set
- IDR_Executable_returning_Instance_Set__reference_used_by__Get_Referenced_Instance_Set_Method: "{22756055-ea78-4893-9404-2f3704fce188}"
- IDR_Get_Referenced_Instance_Set_Method__uses_answer__Executable_returning_Instance_Set: "{6a65819e-c8cb-4575-9af8-ee221364049b}" # IDR_Get_Referenced_Instance_Set_Method__has_relationship__Method
- IDR_Executable_returning_Instance_Set__answer_used_by__Get_Referenced_Instance_Set_Method: "{3e01a160-429e-40eb-b342-f3c18da86ae3}"
- IDR_Get_Referenced_Attribute_Method__has__Attribute: "{87f90fe9-5ec6-4b09-8f51-b8a4d1544cae}" - IDR_Get_Referenced_Attribute_Method__returns__Attribute: "{87f90fe9-5ec6-4b09-8f51-b8a4d1544cae}"
- IDR_Get_Referenced_Attribute_Method__loop_on__Instance_Set: "{c7ecd498-6d05-4e07-b1bc-f7127d0d6666}" - IDR_Attribute__returned_by__Get_Referenced_Attribute_Method: "{80e4ffd8-77d8-4835-a4e0-73a176e7f646}"
- IDR_Get_Referenced_Attribute_Method__uses_reference__Executable_returning_Instance_Set: "{c7ecd498-6d05-4e07-b1bc-f7127d0d6666}"
- IDR_Executable_returning_Instance_Set__reference_used_by__Get_Referenced_Attribute_Method: "{b9a44398-e6c5-48f9-8ec5-a8b158a7adf5}"
- IDR_Get_Referenced_Attribute_Method__uses_answer__Executable_returning_Attribute: "{022ccde3-2b9e-4573-a8fc-e7568f420cd3}"
- IDR_Executable_returning_Attribute__answer_used_by__Get_Referenced_Attribute_Method: "{738ff9a4-eb71-476e-a0a4-524f1de56add}"
- IDR_Get_Specified_Instances_Method__returns__Work_Set: "{27796f3d-0cbd-42c5-a840-791d3af6c16d}" - IDR_Get_Specified_Instances_Method__returns__Work_Set: "{27796f3d-0cbd-42c5-a840-791d3af6c16d}"
- IDR_Work_Set__returned_by__Get_Specified_Instances_Method: "{3a0080c7-7061-42a4-9814-cd3f6efaaa16}" - IDR_Work_Set__returned_by__Get_Specified_Instances_Method: "{3a0080c7-7061-42a4-9814-cd3f6efaaa16}"
@ -321,6 +329,9 @@
- IDR_System_Account__has__User_Preferences: "{ada4deb2-adfd-409f-b13a-9856fabd5522}" - IDR_System_Account__has__User_Preferences: "{ada4deb2-adfd-409f-b13a-9856fabd5522}"
- IDR_User_Preferences__for__System_Account: "{ab2372a5-a4c7-488a-89f6-67e5834f8c83}" - IDR_User_Preferences__for__System_Account: "{ab2372a5-a4c7-488a-89f6-67e5834f8c83}"
- IDR_System_Account__has_preferred_display__Person_Name: "{fb389a4e-4b0e-4742-a7b4-1408403eebc9}"
- IDR_Person_Name__preferred_display_for__System_Account: "{13f8bedd-34b6-4343-bf86-6d33171cbc27}"
- IDR_Instance__has__Instance_Source: '{B62F9B81-799B-4ABE-A4AF-29B45347DE54}' - IDR_Instance__has__Instance_Source: '{B62F9B81-799B-4ABE-A4AF-29B45347DE54}'
- IDR_Instance_Source__for__Instance: '{FBB9391D-C4A2-4326-9F85-7801F377253C}' - IDR_Instance_Source__for__Instance: '{FBB9391D-C4A2-4326-9F85-7801F377253C}'
@ -370,3 +381,6 @@
- IDR_Build_Element_Method__returns__Element: '{4d13d021-7363-4131-b74a-241698c3f1d0}' - IDR_Build_Element_Method__returns__Element: '{4d13d021-7363-4131-b74a-241698c3f1d0}'
- IDR_Element__returned_by__Build_Element_Method: '{ae6a82f0-950b-44c0-a1e6-53d8a7e9e46d}' - IDR_Element__returned_by__Build_Element_Method: '{ae6a82f0-950b-44c0-a1e6-53d8a7e9e46d}'
- IDR_Instance_Op_Method__returns__Work_Set: '{aadc223e-e300-4914-ad29-62d497afcc36}'
- IDR_Work_Set__returned_by__Instance_Op_Method: '{5e15f42f-e634-45ee-9ecc-fbde4fd0c38f}'

View File

@ -36,6 +36,6 @@
- IDC_GetRelationshipMethod: "{d53c9232-89ef-4cca-8520-261da6787450}" # 1$207 - IDC_GetRelationshipMethod: "{d53c9232-89ef-4cca-8520-261da6787450}" # 1$207
- IDC_InvokeWebServiceMethod: "{26d9e733-50a0-49f7-9b2c-2142934e3952}" # 1$208 - IDC_InvokeWebServiceMethod: "{26d9e733-50a0-49f7-9b2c-2142934e3952}" # 1$208
- IDC_GetInstancesMethod: '{0a379314-9d0f-432d-ae59-63194ab32dd3}' # 1$393 - IDC_GetInstancesMethod: '{0a379314-9d0f-432d-ae59-63194ab32dd3}' # 1$393
- IDC_InstanceOpMethod: "{4c814982-938f-4116-bdc1-827bae6a5f71}" - IDC_InstanceOpMethod: "{4c814982-938f-4116-bdc1-827bae6a5f71}" # 1$2663
- IDC_ConditionalSelectAttributeMethod: "{d534a369-321e-4c32-bd7f-8ff2017f191e}" # 1$13038 - IDC_ConditionalSelectAttributeMethod: "{d534a369-321e-4c32-bd7f-8ff2017f191e}" # 1$13038
- IDC_ConditionalSelectFromInstanceSetMethod: "{ffea8e52-06e5-4e95-8c40-da3ba54ce95f}" # 1$13039 - IDC_ConditionalSelectFromInstanceSetMethod: "{ffea8e52-06e5-4e95-8c40-da3ba54ce95f}" # 1$13039

View File

@ -8,3 +8,4 @@
- IDI_Task_ShowDefinitionInCodeEditor: '{4f8a0e8e-e139-4cc6-b8cf-a32e67bd192d}' - IDI_Task_ShowDefinitionInCodeEditor: '{4f8a0e8e-e139-4cc6-b8cf-a32e67bd192d}'
- IDI_Task_DeleteInstance: '{276c5933-89a9-4a22-8fe3-cd9fda5377a8}' - IDI_Task_DeleteInstance: '{276c5933-89a9-4a22-8fe3-cd9fda5377a8}'
- IDI_Task_ViewIntegrationIDs: '{8a2a0ef3-a145-4026-9c55-4d0133eff929}' - IDI_Task_ViewIntegrationIDs: '{8a2a0ef3-a145-4026-9c55-4d0133eff929}'
- IDI_SequenceTask_ViewSystemUser: '{5fd32c2b-7169-4db7-9379-6d8cb479c60e}'

View File

@ -12,5 +12,13 @@
- IDM_User__get__Preferred_Display_Name: '{2febf91e-df60-4615-a15b-fbbe80b148c5}' - IDM_User__get__Preferred_Display_Name: '{2febf91e-df60-4615-a15b-fbbe80b148c5}'
- IDMB_User__get__Preferred_Display_Name: '{12cd3f67-095f-488c-9886-c3a0df97d42c}' - IDMB_User__get__Preferred_Display_Name: '{12cd3f67-095f-488c-9886-c3a0df97d42c}'
- IDM_User__get__Preferred_Display_Name_Formatted: '{e5e0ac88-378f-4f2b-97c1-7dd022f8f6f1}'
- IDMB_User__get__Preferred_Display_Name_Formatted: '{84a7c1af-b07d-4a58-b7f3-8420836a5038}'
- IDM_Common_Text__get__Forward_Slash: '{b727d9f4-42e5-4be2-9411-0f794bfe773e}' - IDM_Common_Text__get__Forward_Slash: '{b727d9f4-42e5-4be2-9411-0f794bfe773e}'
- IDM_Common_Text__get__Single_Space: '{94297e64-f210-4777-bd94-a4a19e5fed2c}' - IDM_Common_Text__get__Single_Space: '{94297e64-f210-4777-bd94-a4a19e5fed2c}'
- IDM_User__get__Preferred_Display_Name_-_Given_Name: '{f33cb57c-5162-46b3-9271-3e8f610984fd}'
- IDMB_User__get__Preferred_Display_Name_-_Given_Name: '{12a1ce0e-2eb8-4e55-8539-d092c89d293b}'
- IDM_User__get__Preferred_Display_Name_-_Family_Name: '{3dc5bfc9-8f9c-49ff-a36c-4eb904e09773}'
- IDMB_User__get__Preferred_Display_Name_-_Family_Name: '{0fb4c89e-360c-4a23-9fba-da65b73849ca}'

View File

@ -1,2 +1,3 @@
- entityDefinitions: - entityDefinitions:
- IDI_WorkSet_ClassForEditClassTask: '{b56ac9b9-efce-4a40-8c04-ffdf90174285}' - IDI_WorkSet_ClassForEditClassTask: '{b56ac9b9-efce-4a40-8c04-ffdf90174285}'
- IDI_WorkSet_PreferredDisplayName: '{86149123-6d32-4f48-b128-8f773cdb2b0e}'

View File

@ -7,3 +7,4 @@
- IDI_TaskCategory_Debugging: '{8f6e81be-9663-4226-85c3-253588126ea2}' - IDI_TaskCategory_Debugging: '{8f6e81be-9663-4226-85c3-253588126ea2}'
- IDI_TaskCategory_IntegrationIDs: '{79449821-89d6-4f83-b3dd-0e780b0a9fef}' - IDI_TaskCategory_IntegrationIDs: '{79449821-89d6-4f83-b3dd-0e780b0a9fef}'
- IDI_TaskCategory_Element: '{7ac1d803-7007-4b3d-b06e-886d62f758c9}' - IDI_TaskCategory_Element: '{7ac1d803-7007-4b3d-b06e-886d62f758c9}'
- IDI_TaskCategory_SystemUser: '{c425d5cb-82b2-41d1-ab3c-db446e3b1b8e}'

View File

@ -87,3 +87,8 @@
- textAttribute: '&IDA_CSSValue;' - textAttribute: '&IDA_CSSValue;'
index: 57 index: 57
- textAttribute: '&IDA_GivenName;'
name: 'Given Name'
- textAttribute: '&IDA_FamilyName;'
name: 'Family Name'

View File

@ -0,0 +1,65 @@
---
- library: '&IDL_MochaBaseSystem;'
instances:
- class: '&IDC_GetReferencedAttributeMethod;'
inherits: '&IDC_Method;'
name: GRA - Get Referenced Attribute Method
index: 18
customTagName: getReferencedAttributeMethod
relationships:
- instance: '&IDR_Method__for__Class;'
customTagName: 'forClassId'
- instance: '&IDR_Get_Referenced_Attribute_Method__returns__Attribute;'
customTagName: 'returnsAttributeId'
- instance: '&IDR_Get_Referenced_Attribute_Method__uses_reference__Executable_returning_Instance_Set;'
customTagName: 'referenceInstanceSet'
- instance: '&IDR_Get_Referenced_Attribute_Method__uses_answer__Executable_returning_Attribute;'
customTagName: 'answerAttribute'
- relationship: '&IDR_Get_Referenced_Attribute_Method__returns__Attribute;'
index: 28
sourceClassId: '&IDC_GetReferencedAttributeMethod;'
type: 'returns'
destinationClassId: '&IDC_Attribute;'
siblingRelationshipId: '&IDR_Attribute__returned_by__Get_Referenced_Attribute_Method;'
singular: yes
- relationship: '&IDR_Attribute__returned_by__Get_Referenced_Attribute_Method;'
index: 29
sourceClassId: '&IDC_Attribute;'
type: 'returned by'
destinationClassId: '&IDC_GetReferencedAttributeMethod;'
siblingRelationshipId: '&IDR_Get_Referenced_Attribute_Method__returns__Attribute;'
singular: no
- relationship: '&IDR_Get_Referenced_Attribute_Method__uses_reference__Executable_returning_Instance_Set;'
index: 40
sourceClassId: '&IDC_GetReferencedAttributeMethod;'
type: 'uses reference'
destinationClassId: '&IDC_ExecutableReturningInstanceSet;'
siblingRelationshipId: '&IDR_Executable_returning_Instance_Set__reference_used_by__Get_Referenced_Attribute_Method;'
singular: yes
- relationship: '&IDR_Executable_returning_Instance_Set__reference_used_by__Get_Referenced_Attribute_Method;'
index: 47
sourceClassId: '&IDC_ExecutableReturningInstanceSet;'
type: 'reference used by'
destinationClassId: '&IDC_GetReferencedAttributeMethod;'
siblingRelationshipId: '&IDR_Get_Referenced_Attribute_Method__uses_reference__Executable_returning_Instance_Set;'
singular: no
- relationship: '&IDR_Get_Referenced_Attribute_Method__uses_answer__Executable_returning_Attribute;'
index: 41
sourceClassId: '&IDC_GetReferencedAttributeMethod;'
type: 'uses answer'
destinationClassId: '&IDC_ExecutableReturningAttribute;'
siblingRelationshipId: '&IDR_Executable_returning_Attribute__answer_used_by__Get_Referenced_Attribute_Method;'
singular: yes
- relationship: '&IDR_Executable_returning_Attribute__answer_used_by__Get_Referenced_Attribute_Method;'
index: 48
sourceClassId: '&IDC_ExecutableReturningAttribute;'
type: 'answer used by'
destinationClassId: '&IDC_GetReferencedAttributeMethod;'
siblingRelationshipId: '&IDR_Get_Referenced_Attribute_Method__uses_answer__Executable_returning_Attribute;'
singular: no

View File

@ -0,0 +1,65 @@
---
- library: '&IDL_MochaBaseSystem;'
instances:
- class: '&IDC_GetReferencedInstanceSetMethod;'
inherits: '&IDC_Method;'
name: GRS - Get Referenced Instance Set Method
index: 26
customTagName: getReferencedInstanceSetMethod
relationships:
- instance: '&IDR_Method__for__Class;'
customTagName: 'forClassId'
- instance: '&IDR_Get_Referenced_Instance_Set_Method__returns__Work_Set;'
customTagName: 'returnsWorkSetId'
- instance: '&IDR_Get_Referenced_Instance_Set_Method__uses_reference__Executable_returning_Instance_Set;'
customTagName: 'referenceInstanceSet'
- instance: '&IDR_Get_Referenced_Instance_Set_Method__uses_answer__Executable_returning_Instance_Set;'
customTagName: 'answerInstanceSet'
- relationship: '&IDR_Get_Referenced_Instance_Set_Method__returns__Work_Set;'
index: 26
sourceClassId: '&IDC_GetReferencedInstanceSetMethod;'
type: 'returns'
destinationClassId: '&IDC_WorkSet;'
siblingRelationshipId: '&IDR_Work_Set__returned_by__Get_Referenced_Instance_Set_Method;'
singular: yes
- relationship: '&IDR_Work_Set__returned_by__Get_Referenced_Instance_Set_Method;'
index: 27
sourceClassId: '&IDC_WorkSet;'
type: 'returned by'
destinationClassId: '&IDC_GetReferencedInstanceSetMethod;'
siblingRelationshipId: '&IDR_Get_Referenced_Instance_Set_Method__returns__Work_Set;'
singular: no
- relationship: '&IDR_Get_Referenced_Instance_Set_Method__uses_reference__Executable_returning_Instance_Set;'
index: 38
sourceClassId: '&IDC_GetReferencedInstanceSetMethod;'
type: 'uses reference'
destinationClassId: '&IDC_ExecutableReturningInstanceSet;'
siblingRelationshipId: '&IDR_Executable_returning_Instance_Set__reference_used_by__Get_Referenced_Instance_Set_Method;'
singular: yes
- relationship: '&IDR_Executable_returning_Instance_Set__reference_used_by__Get_Referenced_Instance_Set_Method;'
index: 45
sourceClassId: '&IDC_ExecutableReturningInstanceSet;'
type: 'reference used by'
destinationClassId: '&IDC_GetReferencedInstanceSetMethod;'
siblingRelationshipId: '&IDR_Get_Referenced_Instance_Set_Method__uses_reference__Executable_returning_Instance_Set;'
singular: no
- relationship: '&IDR_Get_Referenced_Instance_Set_Method__uses_answer__Executable_returning_Instance_Set;'
index: 39
sourceClassId: '&IDC_GetReferencedInstanceSetMethod;'
type: 'uses answer'
destinationClassId: '&IDC_ExecutableReturningInstanceSet;'
siblingRelationshipId: '&IDR_Executable_returning_Instance_Set__answer_used_by__Get_Referenced_Instance_Set_Method;'
singular: yes
- relationship: '&IDR_Executable_returning_Instance_Set__answer_used_by__Get_Referenced_Instance_Set_Method;'
index: 46
sourceClassId: '&IDC_ExecutableReturningInstanceSet;'
type: 'answer used by'
destinationClassId: '&IDC_GetReferencedInstanceSetMethod;'
siblingRelationshipId: '&IDR_Get_Referenced_Instance_Set_Method__uses_answer__Executable_returning_Instance_Set;'
singular: no

View File

@ -4,6 +4,7 @@
name: System User name: System User
index: 39 index: 39
customTagName: 'user' customTagName: 'user'
defaultTask: '&IDI_SequenceTask_ViewSystemUser;'
instancesLabeledByRAMB: '&IDMB_User__get__User_Name_with_Full_Name;' instancesLabeledByRAMB: '&IDMB_User__get__User_Name_with_Full_Name;'
attributes: attributes:
- instance: '&IDA_UserName;' - instance: '&IDA_UserName;'
@ -15,6 +16,11 @@
relationships: relationships:
- instance: '&IDR_System_Account__has__User_Preferences;' - instance: '&IDR_System_Account__has__User_Preferences;'
customTagName: 'hasUserPreferences' customTagName: 'hasUserPreferences'
- instance: '&IDR_System_Account__has_preferred_display__Person_Name;'
customTagName: 'preferredDisplayName'
customTagNameCreatesInstanceOf: '&IDC_PersonName;'
relatedTasks:
- instance: '&IDI_SequenceTask_ViewSystemUser;'
- class: '&IDC_UserLogin;' - class: '&IDC_UserLogin;'
name: System Account Signon name: System Account Signon
@ -36,3 +42,19 @@
# destinationClassId: '&IDC_UserLogin;' # destinationClassId: '&IDC_UserLogin;'
# siblingRelationshipId: '&IDR_User_Login__has__User;' # siblingRelationshipId: '&IDR_User_Login__has__User;'
# singular: no # singular: no
- relationship: '&IDR_System_Account__has_preferred_display__Person_Name;'
index: 963
sourceClassId: '&IDC_User;'
type: 'has preferred display'
destinationClassId: '&IDC_PersonName;'
# siblingRelationshipId: '&IDR_User__for__User_Login;'
singular: no
- relationship: '&IDR_Person_Name__preferred_display_for__System_Account;'
index: 964
sourceClassId: '&IDC_User;'
type: 'preferred display for'
destinationClassId: '&IDC_User;'
# siblingRelationshipId: '&IDR_User__for__User_Login;'
singular: no

View File

@ -0,0 +1,12 @@
- library: '&IDL_MochaBaseSystem;'
instances:
- class: '&IDC_PersonName;'
name: Person Name
index: 402
customTagName: 'personName'
registerForTemplate: yes
attributes:
- instance: '&IDA_GivenName;'
customTagName: 'givenName'
- instance: '&IDA_FamilyName;'
customTagName: 'familyName'

View File

@ -0,0 +1,24 @@
- library: '&IDL_MochaBaseSystem;'
instances:
- class: '&IDC_InstanceOpMethod;'
name: 'IOP - Instance Op Method'
index: 2663
relationships:
- instance: '&IDR_Instance_Op_Method__returns__Work_Set;'
customTagName: returnsWorkSetId
- relationship: '&IDR_Instance_Op_Method__returns__Work_Set;'
index: 6842
sourceClassId: '&IDC_InstanceOpMethod;'
type: 'returns'
destinationClassId: '&IDC_WorkSet;'
siblingRelationshipId: '&IDR_Work_Set__returned_by__Instance_Op_Method;'
singular: yes
- relationship: '&IDR_Work_Set__returned_by__Instance_Op_Method;'
index: 6843
sourceClassId: '&IDC_WorkSet;'
type: 'returned by'
destinationClassId: '&IDC_InstanceOpMethod;'
siblingRelationshipId: '&IDR_Instance_Op_Method__returns__Work_Set;'
singular: no

View File

@ -23,3 +23,5 @@
name: 'Debugging' name: 'Debugging'
- taskCategory: '&IDI_TaskCategory_Element;' - taskCategory: '&IDI_TaskCategory_Element;'
name: 'Element' name: 'Element'
- taskCategory: '&IDI_TaskCategory_SystemUser;'
name: 'System User'

View File

@ -2,6 +2,7 @@
instances: instances:
- buildAttributeMethod: '&IDM_Common_Text__get__Forward_Slash;' - buildAttributeMethod: '&IDM_Common_Text__get__Forward_Slash;'
forClassId: '&IDC_CommonText;' forClassId: '&IDC_CommonText;'
returnsAttributeId: '&IDA_Value;'
verb: 'get' verb: 'get'
name: 'Forward Slash' name: 'Forward Slash'
initialValue: '/' initialValue: '/'

View File

@ -2,6 +2,7 @@
instances: instances:
- buildAttributeMethod: '&IDM_Common_Text__get__Single_Space;' - buildAttributeMethod: '&IDM_Common_Text__get__Single_Space;'
forClassId: '&IDC_CommonText;' forClassId: '&IDC_CommonText;'
returnsAttributeId: '&IDA_Value;'
verb: 'get' verb: 'get'
name: 'Single Space' name: 'Single Space'
initialValue: ' ' initialValue: ' '

View File

@ -1,30 +1,30 @@
- library: '&IDL_MochaBaseSystem;' # - library: '&IDL_MochaBaseSystem;'
instances: # instances:
- getReferencedAttributeMethod: '&IDM_Translation__get__Translation_Value;' # - getReferencedAttributeMethod: '&IDM_Translation__get__Translation_Value;'
description: 'Returns Translation Value Text Attribute for the given Translation and Language parms' # description: 'Returns Translation Value Text Attribute for the given Translation and Language parms'
forClassId: '&IDC_Translation;' # forClassId: '&IDC_Translation;'
verb: 'get' # verb: 'get'
name: 'Translation Value' # name: 'Translation Value'
moduleId: '&IDI_Module_MochaBaseSystem;' # moduleId: '&IDI_Module_MochaBaseSystem;'
methodAccess: '&IDI_MethodAccess_Public;' # methodAccess: '&IDI_MethodAccess_Public;'
static: yes # static: yes
final: no # final: no
parameters: # parameters:
# Date And Time [DT(ms)] # # Date And Time [DT(ms)]
- instance: '&IDI_WorkSet_Translation;' # - instance: '&IDI_WorkSet_Translation;'
required: yes # required: yes
nullable: no # nullable: no
- instance: '&IDI_WorkSet_Language;' # - instance: '&IDI_WorkSet_Language;'
required: yes # required: yes
nullable: yes # defaults to User@get preferred Language # nullable: yes # defaults to User@get preferred Language
comment: '' # comment: ''
tags: [] # tags: []
docs: # docs:
- title: GRA method documentation # - title: GRA method documentation
- iid: null # - iid: null
returnsAttributeId: '&IDA_Value;' # returnsAttributeId: '&IDA_Value;'
# method implementation # # method implementation
loopOnInstanceSetId: '&IDMB_Translation__get__Translation_Value_Instance_for_Translation_and_Language;' # referenceInstanceSet: '&IDMB_Translation__get__Translation_Value_Instance_for_Translation_and_Language;'
getAttributeId: '&IDMB_Translation_Value__get__Value;' # answerAttribute: '&IDMB_Translation_Value__get__Value;'
accumulationFunctionId: null # accumulationFunctionId: null

View File

@ -1,12 +1,57 @@
- library: '&IDL_MochaBaseSystem;' - library: '&IDL_MochaBaseSystem;'
instances: instances:
- returnAttributeMethodBinding: '&IDMB_User__get__Preferred_Display_Name;' - returnAttributeMethodBinding: '&IDMB_User__get__Preferred_Display_Name_Formatted;'
executesMethod: '&IDM_User__get__Preferred_Display_Name;' executesMethod: '&IDM_User__get__Preferred_Display_Name_Formatted;'
- buildAttributeMethod: '&IDM_User__get__Preferred_Display_Name;' # - buildAttributeMethod: '&IDM_User__get__Preferred_Display_Name;'
# forClassId: '&IDC_User;'
# returnsAttributeId: '&IDA_Value;'
# verb: 'get'
# name: 'Preferred Display Name'
# initialValue: 'Testing Preferred Display Name'
- workSet: '&IDI_WorkSet_PreferredDisplayName;'
name: 'Preferred Display Name'
validClasses:
- instance: '&IDC_PersonName;'
- getReferencedInstanceSetMethod: '&IDMB_User__get__Preferred_Display_Name;'
forClassId: '&IDC_User;' forClassId: '&IDC_User;'
returnsWorkSetId: '&IDI_WorkSet_PreferredDisplayName;'
verb: 'get' verb: 'get'
name: 'Preferred Display Name' name: 'Preferred Display Name'
initialValue: 'Testing Preferred Display Name' referenceInstanceSet: '&IDC_User;'
answerInstanceSet: '&IDR_System_Account__has_preferred_display__Person_Name;'
- getReferencedAttributeMethod: '&IDM_User__get__Preferred_Display_Name_-_Given_Name;'
forClassId: '&IDC_User;'
returnsAttributeId: '&IDA_Value;'
verb: 'get'
name: 'Preferred Display Name - Given Name'
referenceInstanceSet: '&IDMB_User__get__Preferred_Display_Name;'
answerAttribute: '&IDA_GivenName;'
- returnAttributeMethodBinding: '&IDMB_User__get__Preferred_Display_Name_-_Given_Name;'
executesMethod: '&IDM_User__get__Preferred_Display_Name_-_Given_Name;'
- getReferencedAttributeMethod: '&IDM_User__get__Preferred_Display_Name_-_Family_Name;'
forClassId: '&IDC_User;'
returnsAttributeId: '&IDA_Value;'
verb: 'get'
name: 'Preferred Display Name - Family Name'
referenceInstanceSet: '&IDMB_User__get__Preferred_Display_Name;'
answerAttribute: '&IDA_FamilyName;'
- returnAttributeMethodBinding: '&IDMB_User__get__Preferred_Display_Name_-_Family_Name;'
executesMethod: '&IDM_User__get__Preferred_Display_Name_-_Family_Name;'
- buildAttributeMethod: '&IDM_User__get__Preferred_Display_Name_Formatted;'
forClassId: '&IDC_User;'
verb: 'get'
name: 'Preferred Display Name (Formatted)'
returnsAttributeId: '&IDA_Value;'
initialValue: ''
buildsWithAttributes:
- instance: '&IDMB_User__get__Preferred_Display_Name_-_Given_Name;'
- instance: '&IDM_Common_Text__get__Single_Space;'
- instance: '&IDMB_User__get__Preferred_Display_Name_-_Family_Name;'

View File

@ -10,10 +10,11 @@
forClassId: '&IDC_User;' forClassId: '&IDC_User;'
verb: 'get' verb: 'get'
name: 'User Name with Full Name' name: 'User Name with Full Name'
returnsAttributeId: '&IDA_Value;'
initialValue: '' initialValue: ''
buildsWithAttributes: buildsWithAttributes:
- instance: '&IDMB_User__get__User_Name;' - instance: '&IDMB_User__get__User_Name;'
- instance: '&IDM_Common_Text__get__Single_Space;' - instance: '&IDM_Common_Text__get__Single_Space;'
- instance: '&IDM_Common_Text__get__Forward_Slash;' - instance: '&IDM_Common_Text__get__Forward_Slash;'
- instance: '&IDM_Common_Text__get__Single_Space;' - instance: '&IDM_Common_Text__get__Single_Space;'
- instance: '&IDMB_User__get__Preferred_Display_Name;' - instance: '&IDMB_User__get__Preferred_Display_Name_Formatted;'

View File

@ -32,13 +32,22 @@
label: 'User Name' label: 'User Name'
defaultDataType: '&IDA_UserName;' defaultDataType: '&IDA_UserName;'
# builtFromBEMProcess: '&IDBEM_1;' # builtFromBEMProcess: '&IDBEM_1;'
- globalIdentifier: '{82b0a709-eedc-4af2-9ffa-b91648b6e53f}' - globalIdentifier: '{da51a173-0838-4936-87e0-ec4eebbb4275}'
order: 'c' order: 'c'
label: 'Preferred Display Name'
defaultDataType: '&IDMB_User__get__Preferred_Display_Name;'
# builtFromBEMProcess: '&IDBEM_1;'
- globalIdentifier: '{82b0a709-eedc-4af2-9ffa-b91648b6e53f}'
order: 'd'
label: 'Nonce' label: 'Nonce'
defaultDataType: '&IDA_PasswordSalt;' defaultDataType: '&IDA_PasswordSalt;'
# builtFromBEMProcess: '&IDBEM_1;' # builtFromBEMProcess: '&IDBEM_1;'
displayOptions:
- instance: '&IDI_DisplayOption_DoNotShow;'
- globalIdentifier: '{52dadfbd-79d7-409b-9b3e-710c13a7aefc}' - globalIdentifier: '{52dadfbd-79d7-409b-9b3e-710c13a7aefc}'
order: 'd' order: 'e'
label: 'SHA-512 Hash' label: 'SHA-512 Hash'
defaultDataType: '&IDA_PasswordHash;' defaultDataType: '&IDA_PasswordHash;'
# builtFromBEMProcess: '&IDBEM_1;' # builtFromBEMProcess: '&IDBEM_1;'
displayOptions:
- instance: '&IDI_DisplayOption_DoNotShow;'

View File

@ -0,0 +1,21 @@
- library: '&IDL_MochaBaseSystem;'
instances:
- sequenceTask: '&IDI_SequenceTask_ViewSystemUser;'
name: 'View System User'
initialElement: '{14e32ff2-1dd7-44d7-ab21-4c96b213a1ca}'
taskCategory: '&IDI_TaskCategory_SystemUser;'
- element: '{14e32ff2-1dd7-44d7-ab21-4c96b213a1ca}'
elementContents:
- instance: '{dcc2aef3-2041-4787-a46b-4becc054b797}'
- elementContent: '{dcc2aef3-2041-4787-a46b-4becc054b797}'
label: 'Test Parms'
# TODO: implement get element contents from method (maybe Get Element from Parameters Method?)
# Test Parms gets its contents from `Method Binding.has Parameter Assignment`
# Test Context has:
# Effective Moment [DT]
# Effective Local Date Time [DT]
# Effective Date Time Zone [DT]+TZ

View File

@ -2,12 +2,20 @@
instances: instances:
- user: '{B066A54B-B160-4510-A805-436D3F90C2E6}' - user: '{B066A54B-B160-4510-A805-436D3F90C2E6}'
username: zq-environments username: zq-environments
preferredDisplayName:
- globalIdentifier: '{ab08cff9-4e80-4213-9d6b-5d97dcf3993a}'
givenName: 'ZeQuaL Environment Automation'
familyName: ''
- user: '{098DDA82-CD04-4B53-8C75-89D420EA6902}' - user: '{098DDA82-CD04-4B53-8C75-89D420EA6902}'
username: zq-developer username: zq-developer
passwordHash: f4f166c4d578cb5ca942e07851d7c09de07d417463f2d8e5165a779f768d14b370cd1e82826a94b617b6c6359253e8c12ea8285cba1e6e69e2e13f2bdc0425d0 passwordHash: f4f166c4d578cb5ca942e07851d7c09de07d417463f2d8e5165a779f768d14b370cd1e82826a94b617b6c6359253e8c12ea8285cba1e6e69e2e13f2bdc0425d0
passwordSalt: 7e893ba949b041bab73c6f4f0bcb9413 passwordSalt: 7e893ba949b041bab73c6f4f0bcb9413
hasUserPreferences: '{d7e9b412-c916-42e7-b788-3bbfac92822c}' hasUserPreferences: '{d7e9b412-c916-42e7-b788-3bbfac92822c}'
preferredDisplayName:
- globalIdentifier: '{1778ea77-6ab0-4deb-a95b-e3ba2972a92a}'
givenName: 'Developer Generic User'
familyName: ''
- userPreferences: '{d7e9b412-c916-42e7-b788-3bbfac92822c}' - userPreferences: '{d7e9b412-c916-42e7-b788-3bbfac92822c}'
favoriteInstances: favoriteInstances:
@ -17,21 +25,45 @@
username: superuser username: superuser
passwordHash: 0bdbeeecd24e93a0d84ff2946c519761d4db2c52d9449d2de5bf3b74a8bcdfbee9d72bb88121a63700d09554983e7f881021ecf493f83dec19e8f7e465529c34 passwordHash: 0bdbeeecd24e93a0d84ff2946c519761d4db2c52d9449d2de5bf3b74a8bcdfbee9d72bb88121a63700d09554983e7f881021ecf493f83dec19e8f7e465529c34
passwordSalt: 5e28b86839ed4ca9838c112723aeaa27 passwordSalt: 5e28b86839ed4ca9838c112723aeaa27
preferredDisplayName:
- globalIdentifier: '{9b86e8fc-8fde-4016-ae62-70918296b03d}'
givenName: 'Super User'
familyName: ''
- user: '{232A8CBF-0D2B-4BDA-BE86-3E2FA25A3FB5}' - user: '{232A8CBF-0D2B-4BDA-BE86-3E2FA25A3FB5}'
username: zq-support username: zq-support
preferredDisplayName:
- globalIdentifier: '{320b5678-0cee-49cb-a1ad-ee7b3d337945}'
givenName: 'ZeQuaL Support'
familyName: ''
- user: '{FB20A79C-EAA2-4A98-A1DA-BDC351854694}' - user: '{FB20A79C-EAA2-4A98-A1DA-BDC351854694}'
username: zq-configurator username: zq-configurator
preferredDisplayName:
- globalIdentifier: '{897ca97a-ab7a-415b-9296-961eec90b5eb}'
givenName: 'ZeQuaL Configurator'
familyName: ''
- user: '{63F2EF51-DC73-48EC-856A-6FBBEDE01A8A}' - user: '{63F2EF51-DC73-48EC-856A-6FBBEDE01A8A}'
username: zq-implementer username: zq-implementer
preferredDisplayName:
- globalIdentifier: '{1a2b943d-0f5a-457d-b786-1bd177bd9c48}'
givenName: 'ZeQuaL Implementer'
familyName: ''
- user: '{739C26BC-740F-4CB0-BCB1-2A28FA570E7D}' - user: '{739C26BC-740F-4CB0-BCB1-2A28FA570E7D}'
username: admin username: admin
preferredDisplayName:
- globalIdentifier: '{aed506e0-7062-4786-a464-52a45d3d971e}'
givenName: 'Administrator'
familyName: ''
- user: '{9235065b-761f-43ab-9696-bc3f1c93cd74}' - user: '{9235065b-761f-43ab-9696-bc3f1c93cd74}'
username: btrevino username: btrevino
# password: W0rkd@yruleZ! # password: W0rkd@yruleZ!
passwordHash: e52c91700614cea617b9b557f2b04e397854c7670f1564c81dc453f891e9fbbcb6a7ea624749a248c19e797093dfcd2148ebe1475ca53523ac22409494c90eb0 passwordHash: e52c91700614cea617b9b557f2b04e397854c7670f1564c81dc453f891e9fbbcb6a7ea624749a248c19e797093dfcd2148ebe1475ca53523ac22409494c90eb0
passwordSalt: d8f400c74def4e2781c25a7c0c4f92e0 passwordSalt: d8f400c74def4e2781c25a7c0c4f92e0
preferredDisplayName:
- globalIdentifier: '{863cb364-6c59-4cdf-9450-0946f34fc731}'
givenName: 'Brooke'
familyName: 'Trevino'

View File

@ -83,6 +83,8 @@ class KnownClassGuids
const TaskCategory = "e8d8060fa20c442f838403488b63247f"; const TaskCategory = "e8d8060fa20c442f838403488b63247f";
const Task = "D4F2564B2D114A5C8AA9AF52D4EACC13"; const Task = "D4F2564B2D114A5C8AA9AF52D4EACC13";
const UITask = "BFD07772178C4885A6CEC85076C8461C"; const UITask = "BFD07772178C4885A6CEC85076C8461C";
const SequenceTask = "{2dfd0c4b-3bc7-4fa3-b369-61441f94e88a}";
const HardcodedTask = "df1fe350767047d991a016dafdfbf98d"; const HardcodedTask = "df1fe350767047d991a016dafdfbf98d";
const Tenant = "703F9D65C5844D9FA656D0E3C247FF1F"; const Tenant = "703F9D65C5844D9FA656D0E3C247FF1F";
@ -133,6 +135,8 @@ class KnownClassGuids
const BuildAttributeMethod = "{e5879955-0093-48c8-8042-813168578af2}"; const BuildAttributeMethod = "{e5879955-0093-48c8-8042-813168578af2}";
const GetAttributeMethod = "{c3ecf8c9-597f-417b-ad65-fae0401719c6}"; const GetAttributeMethod = "{c3ecf8c9-597f-417b-ad65-fae0401719c6}";
const GetInstancesMethod = "{0a379314-9d0f-432d-ae59-63194ab32dd3}"; const GetInstancesMethod = "{0a379314-9d0f-432d-ae59-63194ab32dd3}";
const GetReferencedAttributeMethod = "{9205c54e-921a-484c-9be2-3d3deb877474}";
const GetReferencedInstanceSetMethod = "{bcfd0d64-3eba-4a97-9622-f3a960877d24}";
const GetSpecifiedInstancesMethod = "{7794c7d0-b15d-4b23-aa40-63bb3d1f53ac}"; const GetSpecifiedInstancesMethod = "{7794c7d0-b15d-4b23-aa40-63bb3d1f53ac}";
const ProcessRelatedUpdatesMethod = "2953e69803c54752a1ebcbbfa8f13905"; const ProcessRelatedUpdatesMethod = "2953e69803c54752a1ebcbbfa8f13905";

View File

@ -98,11 +98,13 @@ class KnownRelationshipGuids
const Build_Attribute_Method__builds_with__Executable_returning_Attribute = "{bb64cd83-85c2-4c20-82eb-2a5a5ead31f1}"; const Build_Attribute_Method__builds_with__Executable_returning_Attribute = "{bb64cd83-85c2-4c20-82eb-2a5a5ead31f1}";
const Get_Attribute_Method__has__Attribute = "5eca9b3fbe754f6e8495781480774833"; const Get_Attribute_Method__has__Attribute = "5eca9b3fbe754f6e8495781480774833";
const Get_Referenced_Instance_Set_Method__loop_on__Instance_Set = "2978238f7cb04ba38c6f473df782cfef"; const Get_Referenced_Instance_Set_Method__returns__Work_Set = "{72057f5b-9b49-497d-852f-cd7e5e258d6c}";
const Get_Referenced_Instance_Set_Method__has_relationship__Method = "6a65819ec8cb45759af8ee221364049b"; const Get_Referenced_Instance_Set_Method__uses_reference__Executable_returning_Instance_Set = "{2978238f-7cb0-4ba3-8c6f-473df782cfef}";
const Get_Referenced_Instance_Set_Method__uses_answer__Executable_returning_Instance_Set = "{6a65819e-c8cb-4575-9af8-ee221364049b}";
const Get_Referenced_Attribute_Method__has__Attribute = "87f90fe95ec64b098f51b8a4d1544cae"; const Get_Referenced_Attribute_Method__returns__Attribute = "87f90fe95ec64b098f51b8a4d1544cae";
const Get_Referenced_Attribute_Method__loop_on__Instance_Set = "c7ecd4986d054e07b1bcf7127d0d6666"; const Get_Referenced_Attribute_Method__uses_reference__Executable_returning_Instance_Set = "{c7ecd498-6d05-4e07-b1bc-f7127d0d6666}";
const Get_Referenced_Attribute_Method__uses_answer__Executable_returning_Attribute = "{022ccde3-2b9e-4573-a8fc-e7568f420cd3}";
const Get_Specified_Instances_Method__uses__Instance = "dea1aa0b2bef4bacb4f90ce8cf7006fc"; const Get_Specified_Instances_Method__uses__Instance = "dea1aa0b2bef4bacb4f90ce8cf7006fc";

View File

@ -33,15 +33,37 @@
} }
return $defaultValue; return $defaultValue;
} }
public function setWorkData(string $parmId, $value) public function setWorkData(string|InstanceReference $parmId, $value)
{ {
$this->workData[$parmId] = $value; /**
} * @var \Mocha\Oms\MySQLDatabaseOms
public function getWorkData(string $parmId, $defaultValue = null) */
{ $oms = mocha_get_oms();
if (array_key_exists($parmId, $this->workData))
$key = $parmId;
if ($key instanceof InstanceReference)
{ {
return $this->workData[$parmId]; $key = $key->GlobalIdentifier->__toString();
$expectedDataType = "";
$actualDataType = "";
if (!$oms->validateWorkDataType($parmId, $value, $expectedDataType, $actualDataType))
{
//echo("invalid work data (expected: " . $expectedDataType . ", got: " . $actualDataType . ") for attribute " . $parmId->InstanceKey . " @ " . $parmId->GlobalIdentifier);
}
}
$this->workData[$key] = $value;
}
public function getWorkData(string|InstanceReference $parmId, $defaultValue = null)
{
$key = $parmId;
if ($key instanceof InstanceReference)
{
$key = $key->GlobalIdentifier->__toString();
}
if (array_key_exists($key, $this->workData))
{
return $this->workData[$key];
} }
return $defaultValue; return $defaultValue;
} }

View File

@ -12,6 +12,7 @@
use Mocha\Core\OmsContext; use Mocha\Core\OmsContext;
use Mocha\Core\TenantReference; use Mocha\Core\TenantReference;
use Phast\System;
use Phast\UUID; use Phast\UUID;
abstract class Oms abstract class Oms
@ -124,6 +125,23 @@
} }
protected abstract function setAttributeValueInternal(InstanceReference $sourceInstance, InstanceReference $attributeInstance, mixed $value, ?\DateTime $effectiveDate = null); protected abstract function setAttributeValueInternal(InstanceReference $sourceInstance, InstanceReference $attributeInstance, mixed $value, ?\DateTime $effectiveDate = null);
public function getDefaultTaskUrl(InstanceReference $inst) : ?string
{
$instParent = $this->getParentClass($inst);
$instDefaultTask = $this->getRelatedInstance($instParent, KnownRelationshipGuids::Class__has_default__Task);
if ($instDefaultTask != null)
{
// !FIXME: check to see if the task is authorized for the current user
// (e.g. this can be by if `User .has Security Domain` any in `Securable.has Security Domain`)
// e.g. if User has `Administrator` and Task has `Administrator`, return true
if (true) // ($oms->isTaskAuthorizedForUser($instDefaultTask, $oms->getCurrentUser()))
{
return System::ExpandRelativePath("~/d/inst/" . $instParent->InstanceKey . "/" . $inst->InstanceKey . ".htmld");
}
}
return null;
}
public function getInstanceText($inst) public function getInstanceText($inst)
{ {
$parentClass = $this->getParentClass($inst); $parentClass = $this->getParentClass($inst);
@ -132,7 +150,8 @@
{ {
$context = new OmsContext(); $context = new OmsContext();
$context->setWorkData($parentClass->GlobalIdentifier->__toString(), $inst); $context->setWorkData($parentClass->GlobalIdentifier->__toString(), $inst);
$text = $this->executeMethod($context, $instancesLabeledByRAMB); $textAttr = $this->executeMethod($context, $instancesLabeledByRAMB);
$text = $context->getWorkData($textAttr);
return $text; return $text;
} }
return $this->getAttributeValue($inst, $this->getInstanceByGlobalIdentifier(KnownAttributeGuids::Name)); return $this->getAttributeValue($inst, $this->getInstanceByGlobalIdentifier(KnownAttributeGuids::Name));
@ -346,6 +365,69 @@
return $relInsts[$index]; return $relInsts[$index];
} }
/**
* Checks to ensure the given value is of the appropriate type for the specified work data.
*
* @return bool true if the given value is of the appropriate type; false otherwise.
*/
public function validateWorkDataType(InstanceReference $instWorkData, mixed $value, &$expectedTypeName, &$actualTypeName)
{
$actualTypeName = gettype($value);
if (is_string($value))
{
$expectedTypeName = "Text Attribute";
if ($this->is_a($instWorkData, KnownClassGuids::TextAttribute))
{
return true;
}
}
else if (is_int($value) || is_float($value))
{
$expectedTypeName = "Numeric Attribute";
// int and float should only be assigned to Numeric Attribute
if ($this->is_a($instWorkData, KnownClassGuids::NumericAttribute))
{
return true;
}
}
else if ($value instanceof InstanceReference)
{
// instance references can be assigned to Work Sets and all sorts of other stuff
if ($this->is_a($instWorkData, KnownClassGuids::WorkSet))
{
$expectedTypeName = "Work Set";
// but if our Work Set declares a `Work Set.has valid Class` then we should validate that
$workDataHasValidClasses = $this->getRelatedInstances($instWorkData, KnownRelationshipGuids::Work_Set__has_valid__Class);
if ($workDataHasValidClasses !== null && count($workDataHasValidClasses) > 0)
{
// loop through all valid classes and check them
foreach ($workDataHasValidClasses as $validClass)
{
if ($this->is_a($instWorkData, $validClass))
{
$expectedTypeName = $this->getAttributeValue($validClass, KnownAttributeGuids::Name);
// our work set declares a valid class, and it passes
return true;
}
}
// none of the valid classes pass validation for $instWorkData
$actualTypeName = $this->getAttributeValue($this->getParentClass($instWorkData), KnownAttributeGuids::Name);
$expectedTypeName = $this->getAttributeValue($validClass, KnownAttributeGuids::Name);
return false;
}
// this work set doesn't care whether or not $instWorkData passes validation
return true;
}
// we are not a work set, so we can't validate anything
return true;
}
// none of our validations pass
return false;
}
public function executeMethod(OmsContext $context, InstanceReference $methodInstance) public function executeMethod(OmsContext $context, InstanceReference $methodInstance)
{ {
$methodInstanceClass = $this->getParentClass($methodInstance); $methodInstanceClass = $this->getParentClass($methodInstance);
@ -354,7 +436,10 @@
if ($methodInstanceClass->GlobalIdentifier->__is_equal(UUID::parse(KnownClassGuids::ReturnAttributeMethodBinding))) if ($methodInstanceClass->GlobalIdentifier->__is_equal(UUID::parse(KnownClassGuids::ReturnAttributeMethodBinding)))
{ {
$methodBindingExecutesMethod = $this->getRelatedInstance($methodInstance, KnownRelationshipGuids::Method_Binding__executes__Method); $methodBindingExecutesMethod = $this->getRelatedInstance($methodInstance, KnownRelationshipGuids::Method_Binding__executes__Method);
if ($methodBindingExecutesMethod === null)
{
echo ("RAMB executes method not found for " . $methodInstance->InstanceKey);die();
}
//echo ("RAMB stack: " . $methodInstance->InstanceKey . ":" . $methodBindingExecutesMethod->InstanceKey); //echo ("RAMB stack: " . $methodInstance->InstanceKey . ":" . $methodBindingExecutesMethod->InstanceKey);
return $this->executeMethod($context, $methodBindingExecutesMethod); return $this->executeMethod($context, $methodBindingExecutesMethod);
} }
@ -364,7 +449,37 @@
$returnsAttribute = $this->getRelatedInstance($methodInstance, KnownRelationshipGuids::Get_Attribute_Method__has__Attribute); $returnsAttribute = $this->getRelatedInstance($methodInstance, KnownRelationshipGuids::Get_Attribute_Method__has__Attribute);
$targetInstance = $context->workData[$forClass->GlobalIdentifier->__toString()]; $targetInstance = $context->workData[$forClass->GlobalIdentifier->__toString()];
return $this->getAttributeValue($targetInstance, $returnsAttribute); $value = $this->getAttributeValue($targetInstance, $returnsAttribute);
$context->workData[$returnsAttribute->GlobalIdentifier->__toString()] = $value;
return $returnsAttribute;
}
else if ($methodInstanceClass->GlobalIdentifier->__is_equal(UUID::parse(KnownClassGuids::GetReferencedAttributeMethod)))
{
$forClass = $this->getRelatedInstance($methodInstance, KnownRelationshipGuids::Method__for__Class);
$returnsAttribute = $this->getRelatedInstance($methodInstance, KnownRelationshipGuids::Get_Referenced_Attribute_Method__returns__Attribute);
$loopOnInstanceSet = $this->getRelatedInstance($methodInstance, KnownRelationshipGuids::Get_Referenced_Attribute_Method__uses_reference__Executable_returning_Instance_Set);
$answer = $this->getRelatedInstance($methodInstance, KnownRelationshipGuids::Get_Referenced_Attribute_Method__uses_answer__Executable_returning_Attribute);
$targetInstance = $context->workData[$forClass->GlobalIdentifier->__toString()];
$refISRel = $this->executeMethod($context, $loopOnInstanceSet);
$refIS = $context->getWorkData($refISRel);
//$refIS = $this->getRelatedInstance($targetInstance, $loopOnInstanceSet);
$value = $this->getAttributeValue($refIS, $answer);
$context->setWorkData($returnsAttribute, $value);
return $returnsAttribute;
}
else if ($methodInstanceClass->GlobalIdentifier->__is_equal(UUID::parse(KnownClassGuids::GetReferencedInstanceSetMethod)))
{
$forClass = $this->getRelatedInstance($methodInstance, KnownRelationshipGuids::Method__for__Class);
$returnsWorkSet = $this->getRelatedInstance($methodInstance, KnownRelationshipGuids::Get_Referenced_Instance_Set_Method__returns__Work_Set);
$loopOnInstanceSet = $this->getRelatedInstance($methodInstance, KnownRelationshipGuids::Get_Referenced_Instance_Set_Method__uses_reference__Executable_returning_Instance_Set);
$relationship = $this->getRelatedInstance($methodInstance, KnownRelationshipGuids::Get_Referenced_Instance_Set_Method__uses_answer__Executable_returning_Instance_Set);
$targetInstance = $context->workData[$forClass->GlobalIdentifier->__toString()];
$value = $this->getRelatedInstance($targetInstance, $relationship);
$context->setWorkData($returnsWorkSet, $value);
return $returnsWorkSet;
} }
else if ($methodInstanceClass->GlobalIdentifier->__is_equal(UUID::parse(KnownClassGuids::BuildAttributeMethod))) else if ($methodInstanceClass->GlobalIdentifier->__is_equal(UUID::parse(KnownClassGuids::BuildAttributeMethod)))
{ {
@ -375,12 +490,26 @@
$value = $initialValue; $value = $initialValue;
foreach ($buildsWithAttributes as $buildsWithAttribute) foreach ($buildsWithAttributes as $buildsWithAttribute)
{ {
if ($buildsWithAttribute !== null) $attr = $this->executeMethod($context, $buildsWithAttribute);
if ($attr !== null)
{ {
$value .= $this->executeMethod($context, $buildsWithAttribute); $val = $context->getWorkData($attr);
if (is_string($val))
{
$value .= $val;
}
else
{
$value .= $val->InstanceKey;
}
}
else
{
trigger_error("executeMethod did not return properly - called method: " . $buildsWithAttribute->GlobalIdentifier . " [" . $buildsWithAttribute->InstanceKey . "]");
} }
} }
return $value; $context->setWorkData($returnsAttribute, $value);
return $returnsAttribute;
} }
else if ($methodInstanceClass->GlobalIdentifier->__is_equal(UUID::parse(KnownClassGuids::ProcessRelatedUpdatesMethod))) else if ($methodInstanceClass->GlobalIdentifier->__is_equal(UUID::parse(KnownClassGuids::ProcessRelatedUpdatesMethod)))
{ {

View File

@ -164,19 +164,15 @@
$adw->ClassList[] = "mcx-moniker"; $adw->ClassList[] = "mcx-moniker";
$adw->ClassTitle = $parentClassName; $adw->ClassTitle = $parentClassName;
$adw->ShowURL = false; $defaultTaskUrl = $oms->getDefaultTaskUrl($inst);
$instDefaultTask = $oms->getRelatedInstance($instParent, KnownRelationshipGuids::Class__has_default__Task); if ($defaultTaskUrl !== null)
if ($instDefaultTask != null)
{ {
// !FIXME: check to see if the task is authorized for the current user $adw->TargetURL = $defaultTaskUrl;
// (e.g. this can be by if `User .has Security Domain` any in `Securable.has Security Domain`) $adw->ShowURL = true;
// e.g. if User has `Administrator` and Task has `Administrator`, return true }
else
if (true) // ($oms->isTaskAuthorizedForUser($instDefaultTask, $oms->getCurrentUser())) {
{ $adw->ShowURL = false;
$adw->TargetURL = System::ExpandRelativePath("~/d/inst/" . $instParent->InstanceKey . "/" . $inst->InstanceKey . ".htmld");
$adw->ShowURL = true;
}
} }
$adw->Text = $oms->getInstanceText($inst); $adw->Text = $oms->getInstanceText($inst);

View File

@ -18,6 +18,7 @@
use Phast\System; use Phast\System;
use Phast\Utilities\Stopwatch; use Phast\Utilities\Stopwatch;
use Phast\UUID; use Phast\UUID;
use Phast\WebControls\Button;
class HTMLRenderer class HTMLRenderer
{ {
@ -47,6 +48,8 @@
public bool $IsPostback; public bool $IsPostback;
public string $SubmitButtonText; public string $SubmitButtonText;
public bool $IncludeTopNavigationBar;
private $__renderingNotEnterable; private $__renderingNotEnterable;
public function __construct(OmsContext $context) public function __construct(OmsContext $context)
@ -57,6 +60,7 @@
$this->IsPostback = false; $this->IsPostback = false;
$this->StyleClasses = []; $this->StyleClasses = [];
$this->SubmitButtonText = "Save Changes"; $this->SubmitButtonText = "Save Changes";
$this->IncludeTopNavigationBar = true;
$this->__renderingNotEnterable = false; $this->__renderingNotEnterable = false;
} }
/** /**
@ -100,6 +104,49 @@
return $defaultValue; return $defaultValue;
} }
public function renderPageHeader(InstanceReference|string $title, InstanceReference|string $subtitle)
{
echo ("<div class=\"uwt-page-header\">");
echo ("<h1>");
if (is_string($title))
{
echo ($title);
}
else if ($title instanceof InstanceReference)
{
$adw = new InstanceBrowser(array($title));
$adw->Render();
}
echo ("</h1>");
echo ("<h2>");
if (is_string($subtitle))
{
echo ($subtitle);
}
else if ($subtitle instanceof InstanceReference)
{
$adw = new InstanceBrowser(array($subtitle));
$adw->Render();
}
echo ("</h2>");
echo ("</div>");
}
private function renderTopNavigationBar()
{
$this->renderBeginTag("div", [ ], [ "uwt-header" ]);
$this->renderBeginTag("div", [ ], [ "uwt-header-item", "uwt-applicationmenu" ]);
$button = new Button();
$button->Render();
$this->renderEndTag("div");
$this->renderEndTag("div");
}
public function renderTask(InstanceReference $task, InstanceReference $relatedInstance) public function renderTask(InstanceReference $task, InstanceReference $relatedInstance)
{ {
/** /**
@ -107,21 +154,20 @@
*/ */
$oms = mocha_get_oms(); $oms = mocha_get_oms();
$taskName = $oms->getAttributeValue($task, KnownAttributeGuids::Name);
$this->renderBeginPage($taskName);
$this->renderPageHeader($taskName, $relatedInstance);
echo ("<!-- task: " . $task->InstanceKey . " {" . $task->GlobalIdentifier . "} -->");
$parentClass = $oms->getParentClass($task); $parentClass = $oms->getParentClass($task);
if ($parentClass->GlobalIdentifier->__is_equal(UUID::parse(KnownClassGuids::HardcodedTask))) if ($parentClass->GlobalIdentifier->__is_equal(UUID::parse(KnownClassGuids::SequenceTask)))
{
echo("Sequence Task not done yet!");
}
else if ($parentClass->GlobalIdentifier->__is_equal(UUID::parse(KnownClassGuids::HardcodedTask)))
{ {
echo ("<!-- task: " . $task->InstanceKey . " {" . $task->GlobalIdentifier . "} -->");
$taskName = $oms->getAttributeValue($task, KnownAttributeGuids::Name);
echo ("<div class=\"uwt-page-header\">");
echo ("<h1> " .$taskName . "</h1>");
echo ("<h2>");
$adw = new InstanceBrowser(array($relatedInstance));
$adw->Render();
echo ("</h2>");
echo ("</div>");
$className = $oms->getAttributeValue($task, KnownAttributeGuids::ClassName); $className = $oms->getAttributeValue($task, KnownAttributeGuids::ClassName);
$taskClass = null; $taskClass = null;
try try
@ -153,6 +199,11 @@
echo("could not find hardcoded task class '" . $className . "'"); echo("could not find hardcoded task class '" . $className . "'");
} }
} }
else
{
echo ("could not find task executor for task type `" . $oms->getInstanceText($parentClass) . "`, " . $parentClass->InstanceKey . " " . $parentClass->GlobalIdentifier);
}
$this->renderEndPage();
} }
private function updateWorkDataWithElementContents() private function updateWorkDataWithElementContents()
@ -586,49 +637,22 @@
$adw->Render(); $adw->Render();
} }
} }
// Executable returning Attribute
else if ($oms->is_a($ecInst, KnownClassGuids::TextAttribute)) else if ($oms->is_a($ecInst, KnownClassGuids::TextAttribute))
{ {
// fill in the value from the target instance $this->renderExecutableReturningAttribute($elementContent, $ecInst, $relatedInstance, $relatedInstanceParm);
$targetInstance = $relatedInstance;
if ($relatedInstanceParm !== null)
{
$targetInstance = $relatedInstanceParm;
}
if ($targetInstance === null)
{
$targetInstance = $this->TargetInstance;
$firstElementContent = $oms->getNthRelatedInstance($this->__renderingElement, KnownRelationshipGuids::Element__has__Element_Content, 0);
$firstElementContentInst = $oms->getRelatedInstance($firstElementContent, KnownRelationshipGuids::Element_Content__has__Instance);
$targetInstance = $oms->getNthInstanceOf($firstElementContentInst, 1);
}
if ($targetInstance !== null)
{
$value = $oms->getAttributeValue($targetInstance, $ecInst);
}
if ($value === null)
{
$value = $oms->getAttributeValue($ecInst, $oms->getInstanceByGlobalIdentifier(KnownAttributeGuids::Value));
}
if ($this->IsPostback && isset($_POST["ec_" . strval($elementContent->InstanceKey)]))
{
// fill in the value from the postback
$value = $_POST["ec_" . strval($elementContent->InstanceKey)];
}
if ($oms->instanceSetContains($displayOptions, $oms->getInstanceByGlobalIdentifier(KnownInstanceGuids::DisplayOption__NotEnterable)) || $this->__renderingNotEnterable)
{
echo($value);
}
else
{
$this->renderTextAttribute($elementContent, $ecInst, $oms->instanceSetContains($displayOptions, $oms->getInstanceByGlobalIdentifier(KnownInstanceGuids::DisplayOption__ObscuredText)), $value);
}
} }
else // Executable returning Attribute
else if ($oms->is_a($ecInst, KnownClassGuids::ReturnAttributeMethodBinding))
{
// I *THINK* Return Attribute Method Bindings aren't supposed to return
// just strings, they're supposed to actually return *attributes* that
// can then be edited in the Element Content.
$context = new OmsContext();
$rambAttribute = $oms->executeMethod($context, $ecInst);
$this->renderTextAttribute($context, $rambAttribute);
}
else if ($oms->is_a($ecInst, KnownClassGuids::Clasz))
{ {
$targetInstance = $relatedInstanceParm; $targetInstance = $relatedInstanceParm;
if ($targetInstance === null) if ($targetInstance === null)
@ -637,6 +661,11 @@
} }
$adw = new InstanceBrowser(array($targetInstance)); $adw = new InstanceBrowser(array($targetInstance));
$adw->Render(); $adw->Render();
}
else
{
$adw = new InstanceBrowser(array($ecInst));
$adw->Render();
// echo ("<span class=\"mcx-value\">unknown pclass ident " . $oms->getParentClass($ecInst)->GlobalIdentifier . "</span>"); // echo ("<span class=\"mcx-value\">unknown pclass ident " . $oms->getParentClass($ecInst)->GlobalIdentifier . "</span>");
} }
echo ("</td>"); echo ("</td>");
@ -645,7 +674,64 @@
} }
} }
public function renderTextAttribute(InstanceReference $ec, InstanceReference $inst, $password = false, $value = null) public function renderExecutableReturningAttribute(InstanceReference $elementContent, InstanceReference $ecInst, ?InstanceReference $relatedInstance, ?InstanceReference $relatedInstanceParm)
{
/**
* @var MySQLDatabaseOms
*/
$oms = mocha_get_oms();
$displayOptions = $oms->getRelatedInstances($elementContent, KnownRelationshipGuids::Element_Content__has__Element_Content_Display_Option);
// fill in the value from the target instance
$targetInstance = $relatedInstance;
if ($relatedInstanceParm !== null)
{
$targetInstance = $relatedInstanceParm;
}
if ($targetInstance === null)
{
$targetInstance = $this->TargetInstance;
$firstElementContent = $oms->getNthRelatedInstance($this->__renderingElement, KnownRelationshipGuids::Element__has__Element_Content, 0);
$firstElementContentInst = $oms->getRelatedInstance($firstElementContent, KnownRelationshipGuids::Element_Content__has__Instance);
$targetInstance = $oms->getNthInstanceOf($firstElementContentInst, 1);
}
if ($targetInstance !== null)
{
$value = $oms->getAttributeValue($targetInstance, $ecInst);
}
if ($value === null)
{
$value = $oms->getAttributeValue($ecInst, $oms->getInstanceByGlobalIdentifier(KnownAttributeGuids::Value));
}
if ($this->IsPostback && isset($_POST["ec_" . strval($elementContent->InstanceKey)]))
{
// fill in the value from the postback
$value = $_POST["ec_" . strval($elementContent->InstanceKey)];
}
if ($oms->instanceSetContains($displayOptions, $oms->getInstanceByGlobalIdentifier(KnownInstanceGuids::DisplayOption__NotEnterable)) || $this->__renderingNotEnterable)
{
echo($value);
}
else
{
$this->renderTextAttributeEC($elementContent, $ecInst, $oms->instanceSetContains($displayOptions, $oms->getInstanceByGlobalIdentifier(KnownInstanceGuids::DisplayOption__ObscuredText)), $value);
}
}
public function renderTextAttribute(OmsContext $context, InstanceReference $attr)
{
// $adw = new InstanceBrowser(array($rambAttribute));
// $adw->Render();
echo($context->getWorkData($attr));
}
public function renderTextAttributeEC(InstanceReference $ec, InstanceReference $inst, $password = false, $value = null)
{ {
/** /**
* @var MySQLDatabaseOms * @var MySQLDatabaseOms
@ -766,7 +852,7 @@
echo("System.TenantName = '" . $oms->getTenantName() . "';"); echo("System.TenantName = '" . $oms->getTenantName() . "';");
$this->renderEndTag("script"); $this->renderEndTag("script");
$this->renderEndTag("head"); $this->renderEndTag("head");
$bodyClasses = [ "uwt-header-visible" ]; $bodyClasses = [ "uwt-header-visible", "uwt-header-inverse" ];
foreach ($this->StyleClasses as $className) foreach ($this->StyleClasses as $className)
{ {
$bodyClasses[] = $className; $bodyClasses[] = $className;
@ -783,6 +869,11 @@
<div class="mocha-ams-spot-popup" id="spot_popup"><h1>SPOT:</h1><h3>Stop in: <label id="spot_timer">$spotTimerContent</label></h3></div> <div class="mocha-ams-spot-popup" id="spot_popup"><h1>SPOT:</h1><h3>Stop in: <label id="spot_timer">$spotTimerContent</label></h3></div>
MSG_EOF); MSG_EOF);
$this->renderTag("script", [ ], [ ], $spotTimerScript); $this->renderTag("script", [ ], [ ], $spotTimerScript);
if ($this->IncludeTopNavigationBar)
{
$this->renderTopNavigationBar();
}
} }
public function renderEndPage() public function renderEndPage()
{ {
@ -1102,16 +1193,19 @@ MSG_EOF);
$this->renderBeginTag("tr"); $this->renderBeginTag("tr");
foreach ($contents as $content) foreach ($contents as $content)
{ {
$inst = $oms->getRelatedInstance($content, KnownRelationshipGuids::Element_Content__has__Instance); if ($this->shouldRenderElementContent($content))
$this->renderBeginTag("th"); {
//$this->renderBeginTag("div", [], [ "uwt-listview-column-header"]); $inst = $oms->getRelatedInstance($content, KnownRelationshipGuids::Element_Content__has__Instance);
echo ($this->get__EC_Override_Label_or_default_Instance_Title(array $this->renderBeginTag("th");
( //$this->renderBeginTag("div", [], [ "uwt-listview-column-header"]);
KnownClassGuids::Instance => $inst, echo ($this->get__EC_Override_Label_or_default_Instance_Title(array
KnownClassGuids::ElementContent => $content (
))); KnownClassGuids::Instance => $inst,
// $this->renderEndTag("div"); KnownClassGuids::ElementContent => $content
$this->renderEndTag("th"); )));
// $this->renderEndTag("div");
$this->renderEndTag("th");
}
} }
$this->renderEndTag("tr"); $this->renderEndTag("tr");
@ -1129,11 +1223,14 @@ MSG_EOF);
//$this->renderBeginTag("div", [ ], [ "uwt-listview-item" ]); //$this->renderBeginTag("div", [ ], [ "uwt-listview-item" ]);
foreach ($contents as $content) foreach ($contents as $content)
{ {
$this->renderBeginTag("td"); if ($this->shouldRenderElementContent($content))
//$this->renderBeginTag("div", [], [ "mcx-elementcontent", "uwt-listview-item-column" ]); {
$this->renderElementContent($content, $rowInst); $this->renderBeginTag("td");
//$this->renderEndTag("div"); //$this->renderBeginTag("div", [], [ "mcx-elementcontent", "uwt-listview-item-column" ]);
$this->renderEndTag("td"); $this->renderElementContent($content, $rowInst);
//$this->renderEndTag("div");
$this->renderEndTag("td");
}
} }
$this->renderEndTag("tr"); $this->renderEndTag("tr");
//$this->renderEndTag("div"); //$this->renderEndTag("div");

View File

@ -1,6 +1,13 @@
body body
{ {
margin: 0px; margin: 0px;
&.uwt-header-visible
{
&> div.uwt-header + *
{
margin-top: 64px;
}
}
} }
@media (min-width: 1000px) @media (min-width: 1000px)

View File

@ -90,6 +90,7 @@
$context = new OmsContext(); $context = new OmsContext();
$renderer = new HTMLRenderer($context); $renderer = new HTMLRenderer($context);
$renderer->IncludeTopNavigationBar = false;
# $contents = $pageElement->getRelatedInstances($oms->getInstanceByGlobalIdentifier(KnownRelationshipGuids::Element__has__Element_Content)); # $contents = $pageElement->getRelatedInstances($oms->getInstanceByGlobalIdentifier(KnownRelationshipGuids::Element__has__Element_Content));
$renderer->ProcessUpdatesFunction = function($sender, $element) $renderer->ProcessUpdatesFunction = function($sender, $element)

View File

@ -1,6 +1,10 @@
<?php <?php
namespace Mocha\UI\Pages; namespace Mocha\UI\Pages;
use Mocha\Core\InstanceKey;
use Mocha\Core\KnownInstanceGuids;
use Mocha\Core\OmsContext;
use Mocha\UI\Renderers\HTML\HTMLRenderer;
use Phast\RenderingEventArgs; use Phast\RenderingEventArgs;
use Phast\WebPage; use Phast\WebPage;
@ -11,13 +15,35 @@
{ {
parent::OnRendering($re); parent::OnRendering($re);
/**
* @var \Mocha\Oms\MySQLDatabaseOms
*/
$oms = mocha_get_oms();
//mocha_init_spot_timer($this->Page); //mocha_init_spot_timer($this->Page);
$instIdCtl = $this->Page->GetControlByID("instId"); $instanceKey = InstanceKey::Parse($this->Page->GetPathVariableValue("instid"));
$taskInstIdCtl = $this->Page->GetControlByID("taskInstId"); $relatedTaskKey = InstanceKey::Parse($this->Page->GetPathVariableValue("reltaskid"));
$instIdCtl->Content = $this->Page->GetPathVariableValue("instid"); $instance = $oms->getInstanceByKey($instanceKey);
$taskInstIdCtl->Content = $this->Page->GetPathVariableValue("reltaskid"); $relatedTaskInstance = $oms->getInstanceByKey($relatedTaskKey);
$context = new OmsContext();
$context->setWorkData(KnownInstanceGuids::WorkSet__RelatedInstance, $instance);
$taskRenderer = new HTMLRenderer($context);
$taskRenderer->TargetInstance = $instance;
$taskRenderer->IsPostback = $this->Page->IsPostback;
if ($this->IsPostback)
{
//$taskRenderer->processPostback($defaultTask);
}
else
{
$taskRenderer->renderTask($relatedTaskInstance, $instance);
}
exit();
} }
} }