Hash-Werte von LinkList zu Ticket ID Liste konvertieren

Hilfe zu OTRS Problemen aller Art
Post Reply
ChristianK
Znuny newbie
Posts: 5
Joined: 04 Sep 2018, 07:43
Znuny Version: 6.0.10

Hash-Werte von LinkList zu Ticket ID Liste konvertieren

Post by ChristianK »

Hallo zusammen,

ich habe das GenericInterface um das Modul TicketSearchCI erweitert.
Dieses soll mir bezogen auf eine Config-Item ID alle verknüpften Tickets zurückliefern.
Soweit funktioniert das auch, jedoch erhalte ich als Result einen verschachtelten Hash-Wert (von der Funktion LinkObject->LinkList).
Für die weitere Verarbeitung brauche ich jedoch eine reine Ticket ID Liste.
Gibt es hier vielleicht einen Perl-Spezialisten, der mit hier weiterhelfen kann?

Beispiel der aktuellen Ausgabe von LinkList:

Code: Select all

{"Result":{"Ticket":{"RelevantTo":{"Source":{"48819":1,"48821":1,"48820":1}}}}}
ich hätte gerne folgendes (wie z.B. die Ausgabe von TicketSearch):

Code: Select all

{48819","48821","48820"}
Gruß
Christian
RStraub
Znuny guru
Posts: 2210
Joined: 13 Mar 2014, 09:16
Znuny Version: 6.0.14
Real Name: Rolf Straub

Re: Hash-Werte von LinkList zu Ticket ID Liste konvertieren

Post by RStraub »

Huhu :)

ich hab das auch mal für eine graphische Aufbereitung der Verlinkungen benötigt. Hier ein Vorschlag:

Code: Select all

my $LinkObject = $Kernel::OM->Get('Kernel::System::LinkObject');
my $LinkList = $LinkObject->LinkList(
    Object => 'ITSMConfigItem',
    Key    => 4616, #TODO: make variable
    State  => 'Valid',
    UserID => '1',
);

my @Result;

foreach my $LinkType ( keys %{ $LinkList->{Ticket} } ) {
           # ^ loops over link types like "RelevantTo" or "DependsOn"
                                #           ^ if only interested in linked tickets
    foreach my $SourceType ( keys %{ $LinkList->{Ticket}->{ $LinkType } } ) {
                 # ^ loops over SourceType, "Source" or "Target", as you can create links from either direction
        foreach my $TicketID ( keys %{ $LinkList->{Ticket}->{ $LinkType }->{ $SourceType } } ) {
            push @Result, $TicketID;
        }
    }
}

Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS
ChristianK
Znuny newbie
Posts: 5
Joined: 04 Sep 2018, 07:43
Znuny Version: 6.0.10

Re: Hash-Werte von LinkList zu Ticket ID Liste konvertieren

Post by ChristianK »

Hallo,

schonmal vielen Dank für die schnelle Antwort.
Habe mal versucht das bei mir anzuwenden.
Das Ergebnis sieht zwar im Ansatz gut aus, aber irgendwo gibts wohl noch ein Denkfehler:

Result:

Code: Select all

{"Tickets":"48820","48819":"48821"}
Da scheint er noch irgendwas falsch zu interpretieren. 48819 ist hier ein Key.

Code: Select all

$VAR1 = {
  '48819' => '48821',
  'Tickets' => '48820'
};
ein kleiner Ausschnitt wie es bei mir aussieht:

Code: Select all

    my @Result;

        foreach my $LinkType ( keys %{ $CITickets->{Ticket} } ) {
                 # ^ loops over link types like "RelevantTo" or "DependsOn"
                                    #           ^ if only interested in linked tickets
        foreach my $SourceType ( keys %{ $CITickets->{Ticket}->{ $LinkType } } ) {
                 # ^ loops over SourceType, "Source" or "Target", as you can create links from either direction
        foreach my $TicketID ( keys %{ $CITickets->{Ticket}->{ $LinkType }->{ $SourceType } } ) {
            push @Result, $TicketID;
            }
        }
    }

    return {
        Success => 1,
        Data    => {
            Tickets => @Result,
        },
    };
RStraub
Znuny guru
Posts: 2210
Joined: 13 Mar 2014, 09:16
Znuny Version: 6.0.14
Real Name: Rolf Straub

Re: Hash-Werte von LinkList zu Ticket ID Liste konvertieren

Post by RStraub »

Probier mal im Return statt "@Result" eine ArrayRef zurückzugeben "\@Result".
Currently using: OTRS 6.0.14 -- MariaDB -- Ubuntu 16 LTS
ChristianK
Znuny newbie
Posts: 5
Joined: 04 Sep 2018, 07:43
Znuny Version: 6.0.10

Re: Hash-Werte von LinkList zu Ticket ID Liste konvertieren

Post by ChristianK »

Perfekt, das war's!
Du hast mir sehr geholfen, vielen Dank!
Post Reply