Kommunikation zwischen Workflows
Serviceware Processes bietet die Möglichkeit, Daten zwischen Workflows (bzw. deren laufenden Instanzen) auszutauschen.
Umgesetzt werden soll Folgendes:
Für alle Workflow-Instanzen von Vorgang2, die mit der Assoziation Cases2Incident mit dem Workflow Vorgang1 assoziiert sind, sollen nach der Lösung der Betreff und der Lösungstext von Vorgang1 in den Lösungstext von Vorgang2 übernommen werden.
Hierzu gibt es die beiden Workflowdefinitionen Vorgang1 und Vorgang2. Zudem brauchen wir ein Projekt, in dem für einen ActionScope (CommunicationRECEIVE in obiger Abbildung) zwei String-Variablen vorhanden sind, und ein API-Projekt (CommunicationSEND, s.o.), welches per Invoker den ActionScope ansprechen kann.
Dieser Workflow simuliert die Lösung eines Problems, in der Stage Activity wird eine Lösung eingetragen und der Vorgang geschlossen. Danach wird durch die Methode SendSubAndSol Betreff und Lösungstext verschickt.
Hier der API-Code des SEND-Projekts:
// Simple API Method
public static void SendSubAndSol(ICodeContext ctx, HLObjectIdentity ir)
{
// irint Incident, aus dem das Subject und Solution gesendet werden // soll, mit lesendem Zugriff
IncidentRequest irint = HLCaseSupport.GetCaseRead(ctx, ir) as IncidentRequest;
if (irint != null )
{
// ForEach-Schleife für jeden Incident irassoc, der dem
// urspruenglichen Incident
// ueber die Assoc Cases2Incident zugeordnet ist
foreach (IncidentRequest irassoc in irint.Associations.Cases2Incident.RoleB.IncidentRequestList)
{
//Invoker-Aufruf,Subject und Solution uebergeben
CommRECEIVEInvoker.InvokeAction(ctx,irassoc. GetObjectControllerId(),irassoc.GetObjectIdentity(),
"WarteAufSEND",irint.CaseGeneral.Subject, irint.CaseSolution.SolutionText);
}
}
}
Innerhalb des ActionScopes wird durch eine Change-Activity (Ändere Vorgang) der Inhalt der Strings aneinandergehängt und in den Lösungstext geschrieben.