Organizational Tree
Purpose¶
Read-only access to the organizational tree.
Methods¶
Binding name: p6.org
and p6.orglevel
Method:
List< Tuple < String, Map< String, Content > > > getProperties(String orgPath, orglevel level, String... keys)
- Get properties stored within the organizational tree at the given path:
orgPath
. - Properties have a key and a
Content
. AContent
has a Content-Type and Bytes. - Only those properties that have a key that matches one of the provided keys will be returned.
- The depth of a search for properties is governed by the
level
parameter and can be one of three values:
p6.orglevel.USER
- only the properties of the single node pointed to by orgPathp6.orglevel.UNIT
- the single node and all immediate child nodes of the node pointed to by orgPathp6.orglevel.BRANCH
- the single node and all nodes beneath within the tree
The Content
class has the following structure:
class Content {
byte[] data
String contentType
String toString()
InputStream toStream()
}
Method:
List< Tuple < String, Map< String, Content > > > getProperties(String orgPath, orglevel level, Closure<Boolean> includeFilter, String... keys)
- This variant of the
getProperties
method allows anincludeFilter
closure to be passed as a parameter. -
Note the
includeFilter
will reduce the results returned however this should not be regarded as equivalent to a search facility. The server still returns all properties found while navigating the specified org path.Note
Tables are still the most efficient, indexed, data structures to use with Platform 6.
-
The
includeFilter
will be passed aContent
object that may be evaluated by the given closure and when the result is true theContent
will be included in the results.
Method:
String putOrgAndAssignUsers(Map<String, Object> configuration)
Create an organisational element and optionally assign users.
The return is the path to the organisational element inside the instance.
Configuration map
Configuration Name | Description |
---|---|
instanceName | Instance name where the org element will be created |
name | The name of the element |
description | The description of the element |
parent | Optional. The path to the parent element (separated with / ) |
emails | Optional. List of user emails to be assigned to the org element |
Note
If an element already exist for the instanceName
, parentPath
and name
, the creation will be skipped but not the assigment.
Examples¶
def orgResults = p6.org.getProperties '/*/Company Index/ANADARKO CORP', p6.orglevel.UNIT, 'DUNS','ANOTHER'
println orgResults
orgResults = p6.org.getProperties '/*/Company Index/ANADARKO CORP', p6.orglevel.UNIT, {c -> c.toString() == '008824133'}, 'DUNS'
println orgResults
orgResults = p6.org.getProperties '/*/Company Index/ANADARKO CORP/ANADARKO US OFFSHORE LLC', p6.orglevel.USER, '_Amalto Ops_DUNS_Customers.xlsx'
orgResults.each{ tpl ->
// Print the node name where the property was found
println tpl[0]
tpl[1].each { key, content ->
// Stream the property to a file as it's an xlsx
println p6.uri.streamTo ( content.toStream(), null, content.contentType )
}
}
// Create a child at the root
println p6.org.putOrgAndAssignUsers([
"instance": "dev",
"name": "child",
"description": "Child under root"
])
// Output: child
// Create a child with a parent
println p6.org.putOrgAndAssignUsers([
"instance": "dev",
"name": "sub",
"description": "Sub node",
"parent": "child"
])
// Output: child/sub
// Create a child with a parent an assign users
println p6.org.putOrgAndAssignUsers([
"instance": "dev",
"name": "leaf",
"description": "Leaf",
"parent": "child/sub",
"emails": ["user@server.com", "admin@server.com"]
])
// Output: child/sub/leaf