Skripte des Typs Abhängige sortierte Liste
Abhängige sortierte Liste können in Vorgangs-, Kontakt- und Ressourcendatenmodellen verwendet werden. Sie ermöglichen es, sortierte Listen basierend auf den Werten anderer Felder oder einem anderen Kriterium, z. B. die aktiellen Queue oder die Rollen des Benutzers, zu filtern.
Auf diese Weise können hierarchische Datenstrukturen erzeugt werden. Im Gegensatz zu hierarchischen Listen (siehe Hierarchische Listen) werden die Werte jeder Ebene basierend auf dem ausgewählten Wert der Parent-Ebene berechnet. Daher ist es möglich, nicht alle Werte der jeweiligen Liste anzuzeigen, sondern nur eine Untermenge der Listenwerte. Außerdem kann eine abhängige sortierte Liste auch leere Ebenen enthalten. Im Web Client wird der ausgewählte Wert jeder Ebene angezeigt.
Schritte zur Verwendung eines Skripts für abhängige sortierte Listen:
- Erstellen Sie die erforderlichen Listen auf der Seite Sortierte Listen, siehe Sortierte Listen.
- Schreiben Sie ein Skript des Typs Abhängige sortierte Liste auf der Seite Skripte.
- Weisen Sie das Skript der gewünschten Datenfeldgruppe zu, siehe Datenfelder. Eine Datenfeldgruppe kann mehrere Skripte für abhängige sortierte Listen haben.
Programmierbeispiel
Das folgende Beispiel zeigt die Verwendung eines Skripts für abhängige sortierte Listen, mit dem die verfügbaren Listenwerte anhand der Queue bestimmt werden:
import com.consol.cmas.common.model.customfield.dependentenum.DependentEnumMap
import com.consol.cmas.common.model.customfield.dependentenum.EnumFieldScriptContext
import static com.consol.cmas.common.model.customfield.dependentenum.DependentEnumScriptUtil.*
import static com.consol.cmas.common.model.customfield.dependentenum.DependentEnumEntryType.*
def getValuesForEnum(queueName) {
switch(queueName) {
case 'tickets':
return [
'normal',
'high',
]
break
case 'tasks':
return [
'low',
'normal'
]
break
default:
return [
'low',
'normal',
'high',
'critical',
]
break
}
}
def queueName = ticket.getQueueName()
def result = new DependentEnumMap()
def sourceGroupName = "myFieldGroup"
def sourceFieldName = "myDepEnumField"
def enumGroupName = "myEnum"
EnumFieldScriptContext myContext = new EnumFieldScriptContext(groupName:sourceGroupName,fieldName:sourceFieldName,enumGroup:enumService.getGroupByName(enumGroupName))
result[myContext.key] = getSelectedEnums(myContext,getValuesForEnum(queueName),FILLED)
return result
Das folgende Beispiel zeigt die Verwendung eines Skripts für abhängige sortierte Listen, mit dem die verfügbaren Listenwerte anhand der Rollen des Benutzers bestimmt werden:
import com.consol.cmas.common.model.customfield.dependentenum.DependentEnumMap
import com.consol.cmas.common.model.customfield.dependentenum.EnumFieldScriptContext
import static com.consol.cmas.common.model.customfield.dependentenum.DependentEnumScriptUtil.*
import static com.consol.cmas.common.model.customfield.dependentenum.DependentEnumEntryType.*
// example for use of service
// returns an array of technical enum value names
def getValuesDependingOnEngineerRole() {
displayValues = []
def rolesOfCurrentEngineer = engineerRoleRelationService.getRolesForEngineer(engineerService.current)
if(rolesOfCurrentEngineer.find{ it.name == 'user'}) {
displayValues += [
'low',
'normal',
]
}
if(rolesOfCurrentEngineer.find{ it.name == 'superuser'}) {
displayValues += [
'low',
'normal',
'high',
]
}
return displayValues
}
def result = new DependentEnumMap()
def sourceGroupName = "myFieldGroup"
def sourceFieldName = "myDepEnumField"
def enumGroupName = "myEnum"
EnumFieldScriptContext myContext = new EnumFieldScriptContext(groupName:sourceGroupName,fieldName:sourceFieldName,enumGroup:enumService.getGroupByName(enumGroupName))
result[myContext.key] = getSelectedEnums(myContext,getValuesDependingOnEngineerRole(),FILLED)
return result