Eine Aktivität stellt eine Aktion im Workflow dar. Eine Aktivität befindet sich in einem Bereich und hat einen der folgenden Typen:
Mit manuellen und automatischen Aktivitäten können Sie einen relativ strengen Geschäftsprozess modellieren, in dem der Bearbeiter für das Ticket einem der vorgegebenen Pfade folgen muss. Mit Bereichsaktivitäten können Sie flexiblere Prozesse modellieren und das CM-System für Case Management vorbereiten, bei dem ein Bearbeiter je nach Bedarf dynamisch reagieren kann.
Eine manuelle Aktivität muss durch eine manuelle Aktion des Bearbeiters im Web Client erfolgen. Die Aktivität wird im Web Client als Workflow-Aktivität angezeigt (sofern mindestens eine der Rollen des Bearbeiters die Berechtigung Ausführen hat (siehe ConSol CM Administratorhandbuch, Abschnitt Rollenverwaltung). Im Process Designer ist die Aktivität mit dem Icon Hand gekennzeichnet.
Abbildung 32: ConSol CM Process Designer - Manuelle Aktivität im Workflow
Abbildung 33: ConSol CM Web Client - Manuelle Aktivität
Eine automatische Aktivität wird automatisch vom System durchgeführt und nicht im Web Client angezeigt. Im Process Designer ist eine automatische Aktivität nicht mit einem speziellen Icon gekennzeichnet.
Abbildung 34: ConSol CM Process Designer - Automatische Aktivitäten
Eine Bereichsaktivität befindet sich in einem Bereich und hat keine eingehenden Verbindungen aus anderen Aktivitäten. Im Web Client ist eine Bereichsaktivität so lange verfügbar, wie sich das Ticket innerhalb des Bereiches befindet. Dies gilt auch für alle untergeordneten Bereiche. Eine Bereichsaktivität kann Folgeaktivitäten haben (dann führt sie zu einer Prozess-Exception), oder eine Aktivität ohne Folgeaktivitäten sein (dann führt sie zu einem Interrupt). Weitere Informationen über Interrupts und Exceptions finden Sie im Abschnitt Interrupts und Exceptions).
Beachten Sie, dass ein Ticket einen Bereich nicht unbedingt verlässt, wenn die "letzte" Aktivität in diesem Bereich ausgeführt wurde. Weitere Informationen zu diesem Thema finden Sie im Abschnitt Aktivitäten.
Abbildung 35: ConSol CM Process Designer - eine Bereichsaktivität (verfügbar in den Bereichen "Vorgang in Arbeit im Serviceteam" und "Wiedervorlage"
Aktivitäten haben folgende Eigenschaften:
Abbildung 36: ConSol CM Process Designer - Eigenschaftseditor
Eigenschaften:
Name
Pflichtangabe. Dies ist der technische Name der Aktivität. Wenn eine neue Aktivität erstellt wird, können Sie ihre Bezeichnung editieren und der Aktivitätsname wird automatisch aus der Bezeichnung erstellt (Sonderzeichen werden ausgelassen). Danach wird der Name der Aktivität nicht mehr automatisch geändert, kann aber noch manuell editiert werden. Zulässige Zeichen für Namen sind:
Bezeichnung
Der lokalisierte Name der Aktivität. Alle Sprachen, die für das System konfiguriert wurden, sind verfügbar und können ausgefüllt werden. Im Web Client wird die Bezeichnung in der Sprache angezeigt, die im Webbrowser eingestellt ist. Wenn keine Bezeichnung in dieser Sprache verfügbar ist, wird die Bezeichnung in der Standardsprache angezeigt.
Abbildung 37: ConSol CM Process Designer - Lokalisierung für Bezeichnungen
Beschreibung
Optional. Eine lokalisierte Beschreibung, die als Mouseover im Web Client angezeigt wird. Diese kann dem Bearbeiter Informationen dazu liefern, was passiert, wenn er die betreffende Workflow-Aktivität ausführt.
Abbildung 38: ConSol CM Process Designer - Lokalisierte Beschreibung einer Aktivität
Abbildung 39: ConSol CM Web Client - Lokalisierte Beschreibung einer Aktivität als Mouseover
Sortier-Index
Definiert die Reihenfolge der Aktivitäten in der Liste der Workflow-Aktivitäten im Web Client. Die Aktivitäten mit niedrigen Zahlen werden oben in der Liste angezeigt.
Overlay
Optional. Klicken Sie in das orangene Feld, um ein Standard-Overlay von ConSol CM oder ein bereits hochgeladenes Overlay auszuwählen. Klicken Sie auf den Button mit den drei Punkten an der rechten Seite, um den Dateiexplorer des Betriebssystems zu öffnen und ein neues Icon hochzuladen. Wenn das Ticket die Aktivität durchläuft, wird das Overlay im Web Client zum Ticket-Icon hinzugefügt. Maximal kann das Ticket-Icon drei Overlays haben. Dieser Mechanismus kann für mehrere Zwecke verwendet werden. Einige Beispiele sind:
Abbildung 40: ConSol CM Process Designer - Eigenschaftseditor: Standard-Overlays und ein kundenspezifisches Overlay
Abbildung 41: ConSol CM Web Client - Ticket-Icons mit Overlays
Overlay-Gültigkeit
Wird nur angezeigt, wenn ein Overlay ausgewählt wurde.
Wenn es für einen Anwendungsfall nicht ausreicht, ein Overlay mithilfe der Overlay-Gültigkeit zu setzen oder zu entfernen, können Sie ein Workflow-Skript verwenden. Details dazu finden Sie im Abschnitt Arbeiten mit Overlays.
Optional. Es kann ein Skript im Skripteditor (siehe Abschnitt Editieren von Skripten) eingegeben werden. Das Skript muss true oder false zurückgeben. Es wird ausgeführt, wenn die vorherige Aktivität ausgeführt wurde, d. h., sobald es möglich wird, die Aktivität mit der Bedingung anzuzeigen. Wenn true zurückgegeben wird, wird die Aktivität angezeigt; wenn false zurückgegeben wird, wird die Aktivität nicht angezeigt. Wenn eine Bedingung für eine Aktivität definiert wurde, ist die Aktivität mit dem Icon Ausrufezeichen gekennzeichnet.
Wichtiger Hinweis zu Kundenfeldern
Wenn Sie mit Kundenfeldern arbeiten, d. h. mit Datenfeldern, die Kundendaten enthalten, sollten Sie daran denken, dass möglicherweise die Datenmodelle von unterschiedlichen Kundengruppen berücksichtigt werden müssen, wenn ein Workflow für Queues verwendet wird, denen mehr als eine Kundengruppe zugewiesen ist!
Skript
Optional. Im Skripteditor kann ein Skript eingegeben werden (siehe Abschnitt Aktivitäten), das ausgeführt wird, wenn das Ticket die Aktivität durchläuft.
Pflichtangabe. Diese Eigenschaft definiert, auf welchem Sichtbarkeitslevel die Durchführung der Aktivität im Ticketprotokoll im Web Client angezeigt wird. Die möglichen Werte sind:
Die Aktivität wird auf dem Sichtbarkeitslevel angezeigt, das im Admin Tool, Navigationsgruppe Tickets, Navigationselement Protokoll, konfiguriert ist. Je nach Aktivitätstyp wird eine der folgenden Einstellungen verwendet:
Abbildung 42: ConSol CM Web Client - Sichtbarkeitslevel im Ticketprotokoll
Autom. Aktualisierung deaktivieren
Legt das Verhalten des Tickets fest, wenn ein Ereignis gefeuert oder ausgeführt wurde. Normalerweise wird nach einem Ereignis automatisch eine Ticket-Update-Operation durchgeführt. Bei mehreren direkt aufeinanderfolgenden Ereignissen, sollten Sie es vermeiden, nach jedem einzelnen Ereignis eine Ticket-Update-Operation anzustoßen. Setzen Sie dazu für alle Ereignisse außer dem letzten Ereignis der Kette das Feld Autom. Aktualisierung deaktivieren auf true. So wird das Ticket erst nach dem letzten Ereignis aktualisiert.
Für Kunden freigeben
Boolean. Nur für manuelle Aktivitäten verfügbar. Wenn ausgewählt, wird die Aktivität als Workflow-Aktivität im ConSol CM-Portal CM/Track angezeigt. Die Aktivität wird in CM/Track nur angezeigt, wenn keine Bedingung vorhanden ist oder das Bedingungsskript true zurückgibt. Wenn ein ACF (Aktivitätsformular) für die Aktivität gesetzt ist, wird es geöffnet, wenn der Kunde auf die Aktivität klickt. Ein Beispiel für ein ACF in CM/Track finden Sie im Abschnitt ACFs in CM/Track.
Abbildung 43: ConSol CM Process Designer - Zwei Aktivitäten, die in CM/Track für Kunden angezeigt werden sollen ("für Kunden freigegeben")
Abbildung 44: CM/Track (d. h. Kundenperspektive) - Zwei Aktivitäten, die in CM/Track für Kunden angezeigt werden ("für Kunden freigegeben")
Folgende Prozesslogik gilt für Aktivitäten:
Sofern die Aktivität ein ACF hat, muss auch die Geschäftslogik von ACFs berücksichtigt werden.
Eine Bereichsaktivität hat keine eingehenden Verbindungen, kann aber Folgendes haben:
Wenn eine Bereichsaktivität ausgeführt wurde, hängt die neue Position des Tickets von der Workflow-Topologie ab:
Ein Ticket wartet immer nach der letzten Aktivität, die ausgeführt wurde, und nicht vor der nächsten Aktivität!
Das ist zum Beispiel bei der Definition von Sichten relevant: Es ist wichtig zu wissen, dass das Ticket möglicherweise noch nicht in den nächsten Bereich gelaufen ist, weil es noch nach der vorherigen Aktivität im aktuellen Bereich wartet.
Wenn das Ticket durch die Ausführung einer Bereichsaktivität vorübergehend seinen Bereich verlässt, werden die Trigger wiederhergestellt, wenn das Ticket danach in den Bereich zurückläuft.
Falls ein Ticket von einem VIP-Kontakt geöffnet wurde, d. h. von einem Kontakt, bei dem das Boolean-Feld vip auf true gesetzt ist, soll die Teamleitung informiert werden. Wenn er kein VIP ist, soll die Aktivität Teamleitung informieren nicht angezeigt werden. Dafür wird das Kundenfeld vip, das zum Kundendatenmodell gehört, geprüft.
Abbildung 45: ConSol CM Process Designer - Workflow-Aktivitäten (eine mit Bedingungsskript)
import com.consol.cmas.core.server.service.*
import com.consol.cmas.common.model.customfield.meta.UnitDefinitionType
def ticket = workflowApi.ticket
// fetch main contatc of the ticket
def maincontact = ticket.getMainContact()
def unit_type = maincontact.definition.type
log.info 'vipCheck: Unittype is ' + unit_type
log.info 'vipCheck: Unittype class is ' + unit_type.getClass()
if(unit_type == UnitDefinitionType.COMPANY) {
log.info 'No vipCheck for comapnies possible! Returning false ... '
return false
} else if (unit_type == UnitDefinitionType.CONTACT){
// fetch e-mail address of the man contact. The data object group field has to be addressed using data object group name:data object group field name
def vip_field
def custgroup = maincontact.customerGroup.name
log.info 'vipCheck: Customergroup is now ' + custgroup
switch(custgroup) {
case "Reseller": vip_field = "vip_person";
break;
case "DirectCustomers": vip_field = "vip_dircust"
break;
case "MyCustomerGroup": vip_field = "vip"
break;
case "OurPartnerCompanies": vip_field = "vip_partners"
break;
case "RetailCustomers": vip_field = "retail_vip"
break;
}
def vip_value = maincontact.get(vip_field)
log.info 'VIP is now ' + vip_value
if (vip_value){
return true
} else {
return false
}
}
Code-Beispiel 2: Bedingungsskript: Aktivität sollte nur für VIP-Kunden angezeigt werden
Abbildung 46: ConSol CM Admin Tool - Kundenfeld "vip"
Abbildung 47: ConSol CM Web Client - Bedingung: Rückgabewert TRUE
Abbildung 48: ConSol CM Web Client - Bedingung: Rückgabewert FALSE
Wenn ein Ticket erstellt wurde, soll automatisch eine E-Mail an den Hauptkontakt des Tickets gesendet werden.
Abbildung 49: ConSol CM Process Designer - Automatische Aktivität, bei der eine Empfangsbestätigung gesendet wird
Skript in Workflow-Aktivität Eingangsbestätigung senden:
log.info'Calling SendReceiptNotice script ...'
scriptExecutionService.execute("SendReceiptNotice.groovy")
Skript SendReceiptNotice.groovy im Admin Tool:
import com.consol.cmas.common.model.mail.Mail
import com.consol.cmas.common.util.MailHeadersUtil;
import com.consol.cmas.core.server.service.*;
import static com.consol.cmas.common.util.TemplateUtil.TICKET_SUBJECT_TEMPLATE_NAME;
import com.consol.cmas.common.model.customfield.meta.UnitDefinitionType
// create new mail object
def mail = new Mail()
def ticket = workflowApi.getTicket()
// fetch main contatc of the ticket
def maincontact = ticket.getMainContact()
def unit_type = maincontact.definition.type
log.info 'Mailscript: Unittype is ' + unit_type
log.info 'Mailscript: Unittype class is ' + unit_type.getClass()
if(unit_type == UnitDefinitionType.COMPANY) {
println 'No email address for company; no receipt notice sent.'
return
} else if (unit_type == UnitDefinitionType.CONTACT){
// fetch e-mail address of the man contact. The data object group field has to be addressed using data object group name:data object group field name
def toaddress_field
def custgroup = maincontact.customerGroup.name
switch(custgroup) {
case "Reseller": toaddress_field = "email";
break;
case "DirectCustomers": toaddress_field = "dir_cust_email"
break;
case "MyCustomerGroup": toaddress_field = "email"
break;
case "OurPartnerCompanies": toaddress_field = "email"
break;
case "RetailCustomers": toaddress_field = "retail_customer_email"
break;
}
def toaddress = maincontact.get(toaddress_field)
if (!toaddress){
log.info 'No email address found for contact, no receipt notice sent.'
} else {
// put the e-mail TO address into the Mail object
mail.setTo(toaddress)
// fetch the REPLY TO address, theis is stored in a system property
def replyaddress = configurationService.getValue("cmweb-server-adapter","mail.reply.to")
// put the e-mail REPLY TO address into the Mail object
mail.setReplyTo(replyaddress)
// build e-mail text using a template which is stored in the Template Designer
def text = workflowApi.renderTemplate("Acknowledgement_of_receipt")
// put the e-mail text into the Mail object
mail.setText(text)
// create the subject of the e-mail, the ticket number with the correct Regular Expression
// has to be set for correct recognition of incoming e-mails for the ticket
// ****** alternative solutions for PD manual! *****
// solution 1:
// def ticketname = ticket.getName()
// def subject = "Your case has been registered as Ticket (" + ticketname + ")"
// solution 2: (needs import of TemplateUtil.TICKET_SUBJECT_TEMPLATE_NAME
def subject = templateService.merge(TICKET_SUBJECT_TEMPLATE_NAME, [ticketName:ticket.name])
// put the subject into the Mail object
mail.setSubject(subject)
// Mail should use the e-mail script which is configured for the queue
mail.useDefaultScript()
// send out the e-mail and register status
def attList = new ArrayList<AttachmentEntry>()
def collection = new HashSet<MailEntry>()
def mailStatus = true;
try {
mail.send();
} catch (Exception e){
mailStatus = false;
}
} // end if (!toaddress){
} // end of else if (unit_type.equals('COMPANY')){
Code-Beispiel 3: Skript für automatische Aktivität, bei der eine Empfangsbestätigung gesendet wird, Variante 1
// all lines of code identical to variant 1 except for the last line:
new Mail().setSubject( subj ).setTo( contact_e ).setReplyTo( replyto ).setText( text ).setTicketAttachments( null ).send()
Code-Beispiel 4: Skript für automatische Aktivität, bei der eine Empfangsbestätigung gesendet wird, Variante 2
Das Ticket soll dem Bearbeiter zugewiesen werden, der die Aktivität Neues IT-Ticket durchführt.
Abbildung 50: ConSol CM Process Designer - Workflow-Aktivität, bei der der Bearbeiter zugewiesen werden soll
Abbildung 51: ConSol CM Web Client - Ticket hat die Aktivität, bei der der Bearbeiter zugewiesen wird, durchlaufen
// Get the engineer who is executing the activity:
// Java Style is possible: def curr_eng = workflowApi.getCurrentEngineer()
// we use Groovy style here:
def curr_eng = workflowApi.currentEngineer
// alternative would be:
// def curr_eng = engineerService.current
// Assign the ticket to the current engineer
// Java style is possible:
ticket.setEngineer(curr_eng)
// groovy alternative would be:
// ticket.engineer = curr_eng
Code-Beispiel 5: Skript zum Zuweisen des Tickets an den aktuellen Bearbeiter
Stellen Sie sicher, dass Sie immer das richtige Bearbeiterobjekt verwenden!
Der aktuelle Bearbeiter ist der Bearbeiter, der angemeldet ist und die aktuelle Aktivität durchführt. Sie können das Objekt mit einer der folgenden Methoden abrufen.
Mit workflowApi:
// Java notation
def curr_eng = workflowApi.getCurrentEngineer()
// Groovy notation
def curr_eng = workflowApi.currentEngineer
Mit engineerService:
// Java notation:
def curr_eng = engineerService.getCurrent()
//Groovy notation
def curr_eng = engineerService.current
Der Ticketbearbeiter ist die Person, der das Ticket (zu diesem Zeitpunkt) zugewiesen ist und die für das Ticket verantwortlich ist. Sie können das Objekt mit der folgenden Methode abrufen:
//Java notation
def tic_eng = ticket.getEngineer()
//Groovy notation
def tic_eng = ticket.engineer
Die Bereichsaktivität Problem an Teamleitung weiterleiten soll während des gesamten Lebenszyklus des Tickets verfügbar sein. Bei problematischen Tickets kann der Bearbeiter eine Art Abkürzung verwenden: Das Ticket muss nicht den gesamten Prozess durchlaufen sondern kann in eine spezielle Teamleiter-Queue verschoben werden, wo sich ein Teamleiter um das Ticket kümmert.
Abbildung 52: Eine Bereichsaktivität, die während des gesamten Lebenszyklus verfügbar ist, da sie sich im globalen Bereich befindet