Hallo zusammen,

Oft ergibt es sich innerhalb eines Workflows, dass man auf das Parent Ticket - z.B. Incident, Change oder Service Request zugreifen muss um an Informationen zu gelangen.

Wie das geht ist schon wohlbekannt - z.B.

$objSR = (Get-SCSMRelationshipObject -ByTarget $objActivity | ?{$_.RelationshipID -eq "2DA498BE-0485-B2B2-D520-6EBD1698E61B"}).SourceObject

Wenn jedoch die Activity ($objActivity) innerhalb einer Sequential Activity oder Parallel Activity eingebettet ist, führt dieser Aufruf nur auf die nächst höhere Ebene eines Parent WorkItems.

Ich habe daher eine Funktion geschrieben, die es erlaubt, auf das Parent WorkItem einer bestimmten Klasse zuzugreifen. In diesem Beispiel will ich auf den übergeordneten Service Request zugreifen, egal wie verschachtelt die Activity ist:

Function GetServiceRequest ($objActivity){

$objSR = (Get-SCSMRelationshipObject -ByTarget $objActivity | ?{$_.RelationshipID -eq "2DA498BE-0485-B2B2-D520-6EBD1698E61B"}).SourceObject

if($objSR.classname -eq "System.WorkItem.ServiceRequest"){
return $objSR
}
else {
$objSR1 = GetServiceRequest $objSR
return $objSR1
}

}

Hierbei wird die Funktion solange aufgerufen, bis die Ziel-Klasse System.WorkItem.ServiceRequest erreicht ist und das Object wird dann von der Funktion zurückgegeben.

Viel Spass beim testen...