Zweiten Ticket Dialog mit QuickLink Button verknüpfen

User avatar
timo-p
Posts: 43
Joined: 23. Jul 2014, 15:19
Contact:

Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by timo-p » 25. Feb 2021, 08:05

Hallo Allerseits,

wir haben bei uns nun das EQM im Einsatz. Die Funktion QuickCall To Queue funktioniert auch. Wir möchten jetzt eine Queue für das Personalwesen für HR Anfragen nutzen. Die Zuweisung soll auch hier über einen QuickCall erfolgen. Da dieser QuickCalls aber nicht vermischt mit den IT QuickCalls sein soll und auch für HR Anfragen der TicketDialog zu viele Informationen abfragt, war jetzt die Überlegung einen eigenen QuickLink (BigButton) auf dem SelfServicePortal zu erstellen der einen "abgespreckten Ticketdialog" aufruft, in dem Der HR QuickCall als Standardwert vor ausgewählt und nicht zu ändern ist.

Allerdings habe ich nur die Möglichkeit gefunden, bei dem QuickLink (QuickLing Typ: Dialog) als Entität das Konfigurationselement auszuwählen. Dieses ist wiederum mit dem TicketDialog Verknüpft. Würde ich jetzt ein neues Konfigurationselement TicketsNonIT beispielsweise bauen, müsste dies ja an alle möglichen Aktionen neu Verknüpft werden.

Gibt es hier einen anderen Ansatz das zu lösen ? Kann ich dem QuickLink direkt mit dem neu gebauten Dialog Verknüpfen, welcher widerum mit dem CI SPSActivityTypeTicket verknüpft ist :?:

Für Lösungsansätze wäre ich Dankbar :D !

Steinbit
Posts: 128
Joined: 30. Nov 2017, 16:32
Contact:

Re: Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by Steinbit » 25. Feb 2021, 08:33

Sie dir mal nachfolgende und verlinkte Thema an. Ich denke dass kann ist ein ähnlicher Fall und kann dein Problem lösen:

viewtopic.php?f=81&t=19084&p=71809&hili ... 55c#p71809

Ich würde entsprechend mit der Outercontext Variable arbeiten und dann basierend auf dieser Value den Originaldialog mehrfach verwenden, um Elemente ein- bzw. ausblenden und sofern notwendig filtern oder die Quickcall Value vorbelegen.

User avatar
timo-p
Posts: 43
Joined: 23. Jul 2014, 15:19
Contact:

Re: Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by timo-p » 25. Feb 2021, 10:54

Hallo Steinbit,

Erst einmal Danke für die schnelle Unterstützung! :D

Ich habe es jetzt mit der Outercontext Variable versucht, der QuickCall wird auch dementsprechend anhand der ID vorausgewählt.
Wenn ich das Ticket nach ausfüllen der Pflichtfelder fertigstelle, wird auch das Ticket erstellt und ü ber den EQM Workflow an die Queue geleitet.

Allerdings werden die weiteren Felder nicht anhand der QuickCall Vorlage gefüllt, sondern haben einfach weiterhin den Standardwert.
Klappt das nur wenn ich dann bei den anderen Feldern dann auch einen Value für OuterContext mit angebe, allerdings wird das bei der description nicht funktionieren, weil ich dort doch keien ID habe ?!

Zudem wird nicht angezeigt, welche QuickCall Vorlage ausgewählt ist, das Feld bleibt Weiß. Das ist allerdings nicht weiter tragisch, aber wie kann ich denn über die OpenContext steuern, dass der Objektwähler garnicht sichtbar ist im dialog für den Enduser ?
Ich habe leider keine JavaScript Vorkenntnisse.

Da ich das Layout ja nicht unabhängig anpassen kann, da es sich ja weiterhin um den Standarddialog für Tickets handelt, kann ich es ja nur hingehend anpassen, gewisse Felder komplett auszublenden.

Danke vorab! :mrgreen:

VG Timo

Steinbit
Posts: 128
Joined: 30. Nov 2017, 16:32
Contact:

Re: Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by Steinbit » 25. Feb 2021, 11:41

Hallo Timo,

Du kannst dann bei dem Feld Quickcall (Advanced Mode) folgendes machen:

Verknüpftes Datenmodell (zusätzlich):
context (OuterContext); Beobachten: Ja

Code: Select all

if (outerContext.$value) {
    switch(outerContext.$value.Dialog) {
        case "IT": return "20b6a779-7618-e711-940f-1866da60aa50"; /* ID of Quickcall für IT */
        case "HR": return "549f59bc-9bd6-e311-93fa-001018f589cb"; /* ID of Quickcall für HR */
        default: break;
     }
}

[...]
/* other code */
Dies sollte den Quickcall belegen und somit die Folgewerte (Beschreibung, Rolle, Prio etc) automatisch entsprechend den Werten des Quickcalls belegen

User avatar
timo-p
Posts: 43
Joined: 23. Jul 2014, 15:19
Contact:

Re: Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by timo-p » 25. Feb 2021, 12:40

Hallo Steinbit,

ich habe dem Objektwähler für QuickCalls im erweiterten Modus die Variable outerContext hinzugefügt:

Code: Select all

if (outerContext.$value) {
    switch(outerContext.$value.Dialog) {
 case "HR": return "2204FC79-8C6B-EB11-E9BA-0050569DD419";
 default: return $value;
 }
}
Allerdings werden die Felder trotzdem nicht gefüllt udn das Feld für den QuickCall bleibt Weiß (QuickCall ist aber dennoch gewählt, weil nach dem Abesetzen des Ticktets in Preview ersichtlich).

Für die IT gebe ich kein QC ID mit an, weil das Feld im Standard einfach nicht vorausgefüllt sein soll.

Ist es denn möglich dieses Feld über JavaScript dementsprechend auch dann auf unsichtbar zu stellen, dass der QC nicht mehr manuell geändert werden kann ?

Schonmal Dankeschön :D

EDIT: Ich sehe gerade, dass das gleiche Problem auch über den StandardButton für die Ticketerstellung ist. Dort kann ic hzwar einen QuickCall auswählen, allerdings bleibt das Feld weiß und die Felder werden nicht mehr automatisch gefüllt.

User avatar
timo-p
Posts: 43
Joined: 23. Jul 2014, 15:19
Contact:

Re: Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by timo-p » 26. Feb 2021, 07:27

Guten Morgen,

sooo... mit

Code: Select all

if (outerContext.$value) {
    switch(outerContext.$value.department) {
        case "HR":
            return "2204FC79-8C6B-EB11-E9BA-0050569DD419";
        default:
            return $value;
 }
} else{
    return $value;
}
funktioniert jetzt wieder der Standard Ticketdialog Aufruf, Felder werden durch QuickCall wird gefüllt weil der den Wert bei nicht HR zurück gibt.

Für das HR, bleiben die Felder allerdings weiter leer. Wenn anhand der ID der Wert in das QuickCallFeld gesetzt wird, scheint das System es nicht zu merken und füllt somit die anderen Felder nicht aus.
Hier noch eine Idee ?

Sichtbarkeit ist jetzt auf den Layout Grids gesetzt, um bestimmte Felder ein- bzw. auszublenden

Code: Select all

if(outerContext.$value){
    return false;
} else {
    return true;
}
VG TImo :D

User avatar
timo-p
Posts: 43
Joined: 23. Jul 2014, 15:19
Contact:

Re: Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by timo-p » 05. Mar 2021, 09:54

Hallo Zusammen :)

hätte hier noch jemand ne Idee warum die anderen Felder nicht gefüllt werden anhand der Werte aus der QuickCallVorlage, obwohl das QuickCall Feld per outerContext anhand der ID automatisch gefüllt wird?

Für die Queue die wir ansteuern wollen mit dem Dialog, gibt es jeweils schon QuickCalls, welche komplex mit Tabellen im Beschreibungsfeld sind. Es wäre wichtig, das dies im Dialog dann auch so zur Verfügung steht, wie im StandardDialog wenn der QuickCall gewählt ist.

Für jeden Tipp wäre ich dankbar :)
Oder gibt es agr noch einen anderen weg ?

Danke vorab und schon ein schönes Wochenende! :)

Steinbit
Posts: 128
Joined: 30. Nov 2017, 16:32
Contact:

Re: Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by Steinbit » 10. Mar 2021, 11:18

Hallo Timo,

ich konnte das Problem nun vollständig lösen. Das Problem ist die Asynchronität > Berechnung der anderen Felder. Dies kannst du mit einem Timeout aushebeln:

Image

Related data model properties and localizable resources:
outerContext [Watchable: True] Context.OuterContext
quickCall [Watchable: False] SPSActivityTypeTicket.SPSActivityClassIncident.QuickCall

Code: Select all

	
function initializeQuickCall() {
    setTimeout(function (){
        switch(outerContext.$value.Dialog) {
            case "HR": { $value = "dfcc4f99-e474-e611-c3ad-00505690242e"; break; }
            default: { return null; }
        }

        quickCall.$setValue({
            "$value": $value
        });
        
    }, 100);
}

if (outerContext.$value  && ($value == null && $oldValue == null)) {
    initializeQuickCall();
} else {
    return $value;
}
Im Video nicht sichtbar, aber weitere Werte, wie Ticket-Typ, verantwortliche Rolle und Verantwortlicher werden auch aus dem Quickcall übernommen. Zusätzlich wird die Lösung mit dem Quickcall Inhalt vorbefüllt.
Attachments
20210310_OneDialog - Testsystem.gif
(758.63 KiB) Downloaded 702 times

User avatar
timo-p
Posts: 43
Joined: 23. Jul 2014, 15:19
Contact:

Re: Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by timo-p » 10. Mar 2021, 15:17

Hallo Steinbit!

Vielen vielen Dank für deine Mühe und Unterstützung !

Es funktioniert :) :)

So hat man wirklich viele Möglichkeiten das SSP mit sinnvollen QuickLinks zu bereichern und kann das System für weitere Bereiche / Abteilungen (mit EQM), nutzen :)

Schönen Arbeitstag noch ;) !

Steinbit
Posts: 128
Joined: 30. Nov 2017, 16:32
Contact:

Re: Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by Steinbit » 11. Mar 2021, 08:36

Super. War auch für mich eine Herausforderung für mich mit der Asynchronität und habe selbst wieder ein wenig mehr dazugelernt.

muellera
Posts: 8
Joined: 28. Feb 2019, 08:51
Contact:

Re: Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by muellera » 19. Mar 2021, 15:57

Hallo zusammen,

ich hatte dieselbe Anforerung und fand die vorgestellte Lösung klasse! Ich bin aber leider an der Implementierung bei uns im System gescheitert. Ich hatte es erst mit der Variante des Kontexts versucht (leider erfolglos) und dann ohne die Kontext-Variable:

Code: Select all

function initializeQuickCall() {
    setTimeout(function (){
        $value = "666d0032-e641-c9e6-612e-08d8eacb17ed";

        quickCall.$setValue({
            "$value": $value
        });
        
    }, 100);
}

if ($value == null && $oldValue == null) {
    initializeQuickCall();
} else {
    return $value;
}
Der QuickCall wird einwandfrei ausgewählt, aber die davon abhängigen Felder automatisieren sich einfach nicht. Habe es auch schon mit längerem Timeout versucht. Es dauert dann einfach länger, bis der QC eingefügt wird, aber trotzdem wird die Änderung im Formular nicht erkannt.

Die Variable quickCall habe ich mit der Eigenschaft "SPSActivityTypeTicket.SPSActivityClassIncident.QuickCall" eingebunden (nicht beobachbar).

Woran kann das jetzt noch liegen?

Es wäre schön, wenn mir da jemand helfen könnte.

Vielen Dank schon mal!

Gruß, Alex

Steinbit
Posts: 128
Joined: 30. Nov 2017, 16:32
Contact:

Re: Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by Steinbit » 22. Mar 2021, 08:57

Hi Alex,

nutzt du den Standard-Dialog im SSP? Haben die von QC abhängigen Felder entsprechende Abgleiche und Beobachter definiert?

Beispiel - Urgency:
p0_Urgency [Wachable: true] QuickcallInfo.return.Urgency
p2_Urgency [Wachable: true] CategoryInfo.return.Urgency
p2_Urgency [Wachable: true] SPSActivityTypeTicket.SPSActivityClassIncident.QuickCall

Code: Select all

if(p0_Urgency.$hasChanges) {
     return p0_Urgency.$value;
} else if(p2_Urgency.$hasChanges) {
     return (p3_QuickCall.$value === null)? p2_Urgency.$value : $oldValue;
} else if(p3_QuickCall.$hasChanges &&  $value != p0_Urgency.$value) {
	return p0_Urgency.$value;
} else{
     return $value;
}

muellera
Posts: 8
Joined: 28. Feb 2019, 08:51
Contact:

Re: Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by muellera » 08. Apr 2021, 15:30

Hallo Steinbit,

vielen Dank für deine Antwort!

Wir nutzen eine Kopie des Standard-Ticketdialogs, der JavaScript-Ausdruck für Urgency entspricht exakt dem von dir erwähnten Code, dasselbe gilt für die anderen Felder wie Impact, Subject, Category, DescriptionHTML, etc.

Beispiel DescriptionHTML:

Code: Select all

var changedElem = null;

if(qcDescription.$hasChanges) {
    changedElem = qcDescription;
} else if(catDescription.$hasChanges && quickCall.$value === null){
    changedElem = catDescription;
}

if(!!changedElem && (!$value || $value === changedElem.$oldValue)){
    return changedElem.$value;
}


return $value;
Sonst noch eine Idee?

Gruß,
Alex

Steinbit
Posts: 128
Joined: 30. Nov 2017, 16:32
Contact:

Re: Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by Steinbit » 09. Apr 2021, 09:50

Hi Alex,

die OuterContext Variable muss in der SSP LandingPage (oder Kopie) und dort im Quick Link > Outer Context definiert werden:

Code: Select all

{"Dialog":"HR"}
Aber dein Code funktioniert grundsätzlich bei mir im System. Hast du schon einmal mit F12 (der Entwickler-Konsole) im Browser gearbeitet? Gegebenenfalls wird dort ein Fehler angezeigt.

Ansonsten fällt mir noch dieser Punkt ein, wobei dieser wie folgt im Standard gesetzt sein sollte.
DataSource QuickCallInfo >Property quickCallId [Advanced Mode]: Welcher Wert ist dort hinterlegt?

p0_QuickCall [Wachable: true] SPSActivityTypeTicket.SPSActivityClassIncident.QuickCall

Code: Select all

return (p0_QuickCall.$hasChanges && p0_QuickCall.$value) ? p0_QuickCall.$value: $value;
Thomas

muellera
Posts: 8
Joined: 28. Feb 2019, 08:51
Contact:

Re: Zweiten Ticket Dialog mit QuickLink Button verknüpfen

Post by muellera » 12. Apr 2021, 09:39

Hallo Thomas,
also, wenn mein Code bei dir funktioniert, dann braucht man die OuterContext Variable ja nicht unbedingt, oder?
Und ich erhalte keine JavaScript-Fehler.

Ich rufe den Dialog dann direkt per URL (ID) auf:
https://domain/wm/?view-options=%7B%22d ... d45cb03ff0[/b]%22,%22type%22:%22SPSActivityTypeTicket%22,%22viewType%22:%22new%22%7D

Weitere Beobachtungen:
  • Der QuickCall wird nur dann vorausgewählt, wenn ich im Feld SPSActivityTypeTicket.SPSActivityClassIncident.QuickCall im Bereich "Model" die Option "Object-ID verwenden" setze. Allerdings werden die anderen Felder dann nicht befüllt. Auch dann nicht, wenn ich den QC suche und auswähle.
  • Setze ich die Option "Object-ID verwenden" nicht, wird mein QC nicht vorausgewählt. Dafür kann ich aber nach dem QC suchen und auswählen. Und dann werden auch die anderen Felder befüllt.
Vielen Dank für jeden weiteren Hinweis!

Post Reply

Return to “Service Desk”

Who is online

Users browsing this forum: No registered users and 4 guests