Ausgehend von der in Schritt 1 erzeugten leeren ACL wird in diesem Schritt eine Regel zu einem Firm Code hinzugefügt, z.B. 6000010 mit Firm Item Text “Test FC”). Den Zustand nach Schritt 1 kann hergestellt werden, indem die erzeugte (leere) ACL importiert wird.
1.Importieren der leeren ACL.
> cmu32 --import-acl -f01_ACL_Empty.json
SUCCESS: License Access Permissions (Access Control List) were imported from: 01_ACL_Empty.json |
Auf der CodeMeter WebAdmin-Oberfläche kann das Ergebnis kontrolliert werden. Eventuell muss die Seite im Browser neu geladen werden.
2.Hinzufügen eines neuen Firm Codes im spezifischen Regelwerk, z.B. 6000010 mit Firm Item Text “Test FC”), und Klicken der Schaltfläche "Übernehmen".
3.Exportieren der ACL mit cmu:
> cmu32 --export-acl -f03_ACL_FC_Only.json
SUCCESS: License Access Permissions (Access Control List) were exported to: 03_ACL_FC_Only.json |
Ausgabe der Liste Ergebnis mit cmu:
> type 03_ACL_Container.json |
{ "AccessControlList": { "ContainerRulesets": [ { "FcRulesets": [ { "PcRulesets": [ ], "Rules": [ { "Action": "Allow", "Allocated": 0, "Limit": 0, "Reserved": 0, "RuleId": 0, "Type": "Default", "Value": "", "__type": "Rule" } ], "Text": "Test FC", "Value": 6000010, "__type": "FcRuleset" } ], "Rules": [ { "Action": "Allow", "Allocated": 0, "Limit": 0, "Reserved": 0, "RuleId": 0, "Type": "Default", "Value": "", "__type": "Rule" } ], "Text": "All Containers", "Value": "All", "__type": "ContainerRuleset" } ], "Rules": [ { "Action": "Allow", "Allocated": 0, "Limit": 0, "Reserved": 0, "RuleId": 0, "Type": "Default", "Value": "", "__type": "Rule" } ], "__type": "AccessControlList" }, "Enabled": true, "GroupsMaximumNumber": 10000, "UsersMaximumNumber": 10000 } |
Bis jetzt wurden noch keine Regeln definiert, sondern lediglich ein Regelwerk auf “Firm Code”-Ebene.
In diesem Fall ist allerdings einem ACL-Objekt eine (Default)-Regel zugeordnet. Diese hat immer den folgenden Inhalt:
{ "Action": "Allow", "Allocated": 0, "Limit": 0, "Reserved": 0, "RuleId": 0, "Type": "Default", "Value": "", "__type": "Rule" } |
Im Folgenden wird diese Regel durch den Eintrag ersetzt. Nach einem Einfügen von Zeilennummern und etwas Umformatieren sieht das Ergebnis wie folgt aus:
1 { 2 "AccessControlList": { 3 "ContainerRulesets": [ 4 { 5 "FcRulesets": [ 6 { 7 "PcRulesets": [], 8 "Rules": [<Default-Rule>], 9 "Text": "Test FC", 10 "Value": 6000010, 11 "__type": "FcRuleset" 12 }], 13 "Rules": [<Default-Rule>], 14 "Text": "All Containers", 15 "Value": "All", 16 "__type": "ContainerRuleset" 17 }], 18 "Rules": [<Default-Rule>], 19 "__type": "AccessControlList" 20 }, 21 "Enabled": true, 22 "GroupsMaximumNumber": 10000, 23 "UsersMaximumNumber": 10000 24 } |
Das Objekt AccessControlList umfasst die Zeilen 2-20 und enthält eine Liste mit einem ContainerRuleset (dem AllContainer-Ruleset):
3 "ContainerRulesets": [ 4 { 5 "FcRulesets": [ 6 { 7 "PcRulesets": [], 8 "Rules": [<Default-Rule>], 9 "Text": "Test FC", 10 "Value": 6000010, 11 "__type": "FcRuleset" 12 }], 13 "Rules": [<Default-Rule>], 14 "Text": "All Containers", 15 "Value": "All", 16 "__type": "ContainerRuleset" 17 }] |
Das AllContainer-Ruleset wird gewählt, sofern kein passendes Regelwerk zu einem Container gefunden wird. Das zum Firm Code 6000010 definierte Regelwerk des Beispiels befindet sich in den Zeilen 5-12:
5 "FcRulesets": [ 6 { 7 "PcRulesets": [], 8 "Rules": [<Default-Rule>], 9 "Text": "Test FC", 10 "Value": 6000010, 11 "__type": "FcRuleset" 12 }], |
Für diesen Firm Code wurde keine Regel auf Product Code-Ebene definiert. Aus diesem Grund ist die PcRulesets-Liste (Zeile 7) leer. Zeilen 9-10 enthalten den Firm Code und den Firm Item Text. Der Typ des Objekts steht in Zeile 11.