...
Archetype policy - merging
TODO:
There is quite complex algorithm for merging archetype policies across hierarchy. Following examples will show how the merging works. The example bellow shows archetype for basic task. It contains archetype policy defining the details about how the icon should look like, and two GUI virtual containers (sections) used on task details page - Advanced options and Operational attributes (state)
Code Block | ||
---|---|---|
| ||
{
"@ns" : "http://midpoint.evolveum.com/xml/ns/public/common/common-3",
"archetype" : {
"name" : "Basic task",
"archetypePolicy" : {
"display" : {
"label" : "Task",
"pluralLabel" : "Tasks",
"icon" : {
"cssClass" : "fa fa-tasks",
"color" : "grey"
}
},
"adminGuiConfiguration" : {
"objectDetails" : {
"type" : "http://midpoint.evolveum.com/xml/ns/public/common/common-3#TaskType",
"container" : [ {
"display" : {
"label" : "Advanced options"
},
"displayOrder" : 150,
"item" : [ {
"path" : "cleanupAfterCompletion"
}, {
"path" : "threadStopAction"
}, {
"path" : "binding"
}, {
"path" : "dependent"
} ]
}, {
"display" : {
"label" : "Operational attributes (state)"
},
"displayOrder" : 900,
"item" : [ {
"path" : "executionStatus"
}, {
"path" : "node"
}, {
"path" : "nodeAsObserved"
}, {
"path" : "resultStatus"
}... ]
} ]
}
}
}
}
} |
The next archetype example extends the Basic task archetype above. It is a parent archetype for resource related tasks, containing additional information about icon color, attributes which have to be hidden/shown on details page and additional information to GUI virtual containers (sections) on details page.
Code Block | ||
---|---|---|
| ||
{
"@ns" : "http://midpoint.evolveum.com/xml/ns/public/common/common-3",
"archetype" : {
"name" : "Resource related task",
....
"archetypePolicy" : {
"display" : {
"icon" : {
"color" : "green"
}
},
"itemConstraint" : [ {
"path" : "extension",
"visibility" : "vacant"
}, {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:objectclass",
"visibility" : "visible"
}, {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:kind",
"visibility" : "visible"
}.... ],
"adminGuiConfiguration" : {
"objectDetails" : {
"type" : "http://midpoint.evolveum.com/xml/ns/public/common/common-3#TaskType",
"container" : [ {
"identifier" : "resourceOptions",
"display" : {
"label" : "resourceObjects"
},
"item" : [ {
"path" : "objectRef"
}, {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:objectclass"
}, {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:kind"
} ]
}, {
"identifier" : "resourceOperationOptions",
"display" : {
"label" : "operationOptions"
},
"item" : [ {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:dryRun"
} ]
} ]
}
}
},
"superArchetypeRef" : {
"oid" : "00000000-0000-0000-0000-000000000511",
"type" : "http://midpoint.evolveum.com/xml/ns/public/common/common-3#ArchetypeType"
}
}
} |
The last archetype example is extension of Resource related task. This archetype describe additional details for Reconciliation tasks.
Code Block | ||
---|---|---|
| ||
{
"@ns" : "http://midpoint.evolveum.com/xml/ns/public/common/common-3",
"archetype" : {
"oid" : "00000000-0000-0000-0000-000000000541",
"name" : "Reconciliation task",
....
"archetypePolicy" : {
"display" : {
"label" : "Reconciliation task",
"pluralLabel" : "Reconciliation tasks",
"icon" : {
"cssClass" : "fa fa-exchange"
}
},
"itemConstraint" : [ {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:objectQuery",
"visibility" : "visible"
}, {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:finishOperationsOnly",
"visibility" : "visible"
} ],
"adminGuiConfiguration" : {
"objectDetails" : {
"type" : "http://midpoint.evolveum.com/xml/ns/public/common/common-3#TaskType",
"container" : [ {
"identifier" : "resourceOptions",
"display" : {
"label" : "ReconciliationTask.resourceObjects"
},
"item" : {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:objectQuery"
}
}, {
"identifier" : "resourceOperationOptions",
"display" : {
"label" : "ReconciliationTask.reconciliationOptions"
},
"item" : {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:finishOperationsOnly"
}
} ]
}
}
},
"superArchetypeRef" : {
"oid" : "00000000-0000-0000-0000-000000000521",
"type" : "http://midpoint.evolveum.com/xml/ns/public/common/common-3#ArchetypeType"
}
}
} |
Examples above show a hierarchy for task archetypes: Basic task archetype is extended by Resource related task which is extended by Reconciliation task archetype. After assigning Reconciliation task archetype to a task, the merged archetype policy then will be:
Code Block | ||
---|---|---|
| ||
{
"@ns" : "http://midpoint.evolveum.com/xml/ns/public/common/common-3",
"archetype" : {
"name" : "Basic task",
"archetypePolicy" : {
"display" : {
"label" : "Reconciliation task",
"pluralLabel" : "Reconciliation tasks",
"icon" : {
"cssClass" : "fa fa-exchange",
"color" : "green"
}
},
"itemConstraint" : [ {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:objectQuery",
"visibility" : "visible"
}, {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:finishOperationsOnly",
"visibility" : "visible"
}, {
"path" : "extension",
"visibility" : "vacant"
}, {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:objectclass",
"visibility" : "visible"
}, {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:kind",
"visibility" : "visible"
}.... ],
"adminGuiConfiguration" : {
"objectDetails" : {
"type" : "http://midpoint.evolveum.com/xml/ns/public/common/common-3#TaskType",
"container" : [ {
"identifier" : "resourceOptions",
"display" : {
"label" : "ReconciliationTask.resourceObjects"
},
"item" : [ {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:objectQuery"
}, {
"path" : "objectRef"
}, {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:objectclass"
}, {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:kind"
} ]
}, {
"identifier" : "resourceOperationOptions",
"display" : {
"label" : "ReconciliationTask.reconciliationOptions"
},
"item" : [ {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:finishOperationsOnly"
}, {
"path" : "declare namespace mext='http://midpoint.evolveum.com/xml/ns/public/model/extension-3'; extension/mext:dryRun"
} ]
}, {
"display" : {
"label" : "Advanced options"
},
"displayOrder" : 150,
"item" : [ {
"path" : "cleanupAfterCompletion"
}, {
"path" : "threadStopAction"
}, {
"path" : "binding"
}, {
"path" : "dependent"
} ]
}, {
"display" : {
"label" : "Operational attributes (state)"
},
"displayOrder" : 900,
"item" : [ {
"path" : "executionStatus"
}, {
"path" : "node"
}, {
"path" : "nodeAsObserved"
}, {
"path" : "resultStatus"
}... ]
} ]
}
}
},
"superArchetypeRef" : {
"oid" : "00000000-0000-0000-0000-000000000521",
"type" : "http://midpoint.evolveum.com/xml/ns/public/common/common-3#ArchetypeType"
}
}
} |
Limitations
Following limitations for archetype functionality apply in midPoint 4.x:
...