OTRS Cache - Änderungen direkt in DB werden nicht angezeigt

Allgemein Fragen, deutsche News, Ankündigungen & Events zu Znuny
Locked
rocka
Znuny newbie
Posts: 29
Joined: 19 Nov 2010, 11:09
Znuny Version: 3.0.4
Location: Saarbrücken

OTRS Cache - Änderungen direkt in DB werden nicht angezeigt

Post by rocka »

Hallo zusammen,

ich hab unser OTRS von 3.0.4 auf 3.2.9 geupdated. Soweit so gut.
Ich hatte unser OTRS durch einen Zusatz-Dialog erweitert in PHP, in dem man Änderungen direkt per SQL in die Datenbank schreibt.
Z.B Queue-Wechsel, Prio ändern, etc.

Nachdem ich nun schon meine ganzen SQLs an die neue DB-Struktur angepasst hatte (dynamicfields statt freetext), musste ich feststellen, dass die Änderungen in der Oberfläche nicht angezeigt werden.
Diese werden wohl seit neuestem irgendwo gecached.
Was muss ich tun, um dem System mitzuteilen, dass hier eine Änderung stattgefunden hat? Änderung des Change_Time-Zeitstempels in der Ticket-Tabelle brachte schonmal nix.
Kann man den Cache auch abschalten?

Gruß

Chris
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze

Post by jojo »

Caches werden nur durch die entsprechende OTRS API gelöscht und neu erstellt. Es ist generell unschön in eine fremde Applikationsdatenbank zu schreiben. Am besten nutzt Du einen Webservice oder direkt die OTRS API
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master

Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
rocka
Znuny newbie
Posts: 29
Joined: 19 Nov 2010, 11:09
Znuny Version: 3.0.4
Location: Saarbrücken

Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze

Post by rocka »

Hi,

was meinst du mit Webservice?
Wenn ich das richtig sehe, gibt es weder für OTRS 3.1 noch für 3.2 eine API Dokumentation: http://dev.otrs.org/
Oder gilt die für 3.0 unverändert?
reneeb
Znuny guru
Posts: 5018
Joined: 13 Mar 2011, 09:54
Znuny Version: 6.0.x
Real Name: Renée Bäcker
Company: Perl-Services.de
Contact:

Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze

Post by reneeb »

Aktuelle API-Dokumentationen findest Du z.B. unter http://otrs.perl-services.de/docs/
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze

Post by jojo »

die API kannst Du per perldoc generieren. Beschreibungen zum Webservice gibt es im Developers und im Admin Handbuch
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master

Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
rocka
Znuny newbie
Posts: 29
Joined: 19 Nov 2010, 11:09
Znuny Version: 3.0.4
Location: Saarbrücken

Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze

Post by rocka »

Das Problem ist, ich habe von Perl keine Ahnung. Ich kann ein bisschen die .DTL abändern, aber die PMs lasse ich lieber in Ruhe.
Daher auch meine Umsetzung in PHP.
Gibt es eurer Meinung nach ein Möglichkeit das ganze ohne PERL umzusetzen?
Ich will ja eigentlich nur antriggern, dass wenn eine Änderung an einem Ticket gemacht wurde (direkt in der DB), dieses vom Cache registriert wird.
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze

Post by jojo »

dann benutzt den Webservice via SOAP, Beispiele hier:

http://blog.otrs.org/2012/10/03/easy-ti ... interface/
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master

Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
rocka
Znuny newbie
Posts: 29
Joined: 19 Nov 2010, 11:09
Znuny Version: 3.0.4
Location: Saarbrücken

Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze

Post by rocka »

Hm ok, das wäre ein anderer Ansatz, aber immer noch extrem umständlich um etwas so triviales zu lösen.
Das muss doch einfacher gehen?
KlausNehrer
Znuny ninja
Posts: 1312
Joined: 25 May 2012, 08:51
Znuny Version: OTRS 4
Real Name: Klaus Nehrer

Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze

Post by KlausNehrer »

Ja, zB Perl lernen, oder jemand mit den geeigneten Methoden "bitten" den Wunsch umzusetzen?
Was anderes würde mir an der Stelle nicht mehr einfallen.
rocka
Znuny newbie
Posts: 29
Joined: 19 Nov 2010, 11:09
Znuny Version: 3.0.4
Location: Saarbrücken

Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze

Post by rocka »

Ok ich habe hier mal für alle die das auch machen müssen ein PHP-Beispiel erstellt, welches mit 3.2.9 funktioniert.
Hier werden auch dynamische Felder gelesen und geschrieben. Dies ist was die Umsetzung in PHP angeht ja schwer im Netz zu finden.

Code: Select all

<?PHP
error_reporting(E_ALL);

# Please define the connection information here:
$url      = "https://your.domain/otrs/rpc.pl";
$username = "admin";
$password = "password";
$title    = "My Test Ticket via SOAP and PHP";
$from     = "xy@mail.net";
# dynamic field which should be changed and read:
$Field=8;


echo "<html>\n";
echo "<head>\n";
echo "<title>Test SOAP-Interface</title>\n";
echo "</head>\n";
echo "<body>\n";
echo "<h1>Test SOAP-interface of OTRS</h1>\n";

# Set up a new SOAP connection:
$client = new SoapClient(null, array('location'  =>
$url,
                                     'uri'       => "Core",
                                     'trace'     => 1,
                                     'login'     => $username,
                                     'password'  => $password,
                                     'style'     => SOAP_RPC,
                                     'use'       => SOAP_ENCODED));


#Create a new TicketNumber									 
$ticketn = $client->__soapCall("Dispatch", array($username, $password, "TicketObject", "TicketCreateNumber"));								 

#Create Ticket with given ticket number
$TicketID = $client->__soapCall("Dispatch", array("user", "passwort", "TicketObject", "TicketCreate",
    "TN"            , $ticketn,
    "Title"         , 'Some Ticket Title',
    "Queue"         , 'Support',
    "Lock"          , 'unlock',
    "Priority"      , 'PK 3 - Leichter Fehler',
    "State"         , 'new',
    "Type"          , 'default',
    "Service"       , '',
    "SLA"           , '',
    "CustomerID"    , '',
    "CustomerUser"  , 'customer@example.com',
    "OwnerID"       , 1,
    "ResponsibleID" , 1,
    "UserID"        , 1
 ));

#Change the queue to "Extern" 
$TicketQueue = $client->__soapCall("Dispatch", array("user", "passwort", "TicketObject", "TicketQueueSet",
		"Queue"    , 'Extern',
        "TicketID" , $TicketID,
        "UserID"   , 1
));


#Set Dynamic Field with ID 8 to "Test". Note the nested array.
$TicketSet = $client->__soapCall("Dispatch", array("user", "passwort", "TicketDynamicObject", "ValueSet",
		"FieldID"  , $Field,
		"ObjectID" , $TicketID,
		"Value"  , array(array("ValueText" =>'TEST')),
		"UserID"   , 1
));

# Read the value from the field with ID 8. How to  use: $TicketGet[0]->ValueText or $TicketGet[0]->ValueDateTime, etc...
$TicketGet = $client->__soapCall("Dispatch", array("user", "passwort", "TicketDynamicObject", "ValueGet",
		"FieldID"  , $Field,
		"ObjectID" , 7449
));


# A ticket is not useful without at least one article. The function
# returns an Article ID. 
$ArticleID = $client->__soapCall("Dispatch", array($username, $password,
"TicketObject",   "ArticleCreate",
"TicketID",       $TicketID,
"ArticleType",    "webrequest",
"SenderType",     "customer",
"HistoryType",    "WebRequestCustomer",
"HistoryComment", "created from PHP",
"From",           $from,
"Subject",        $title,
"ContentType",    "text/plain; charset=ISO-8859-1",
"Body",           "This is the body",
"UserID",         1,
"Loop",           0,
"AutoResponseType", 'auto reply',
"OrigHeader", array(
        'From' => $from,
        'To' => 'Support',
        'Subject' => $title,
        'Body' => "This is the body"
    ),
));

echo "<p>You have created ticket id $ticketn with article id "
."$ArticleID. The ticket number is $Formatted_TicketNr.</p>\n";
echo "<br/>Changed dynamic value for field with ID " . $Field . " : " . $TicketGet[0]->ValueText;
echo "</body>\n";
echo "</html>\n";

?>
Folgende Änderungen sind in der rpc.pm durchzuführen , damit dynamische Felder überhaupt funzen:
https://gist.github.com/xonic128/2147909
jojo
Znuny guru
Posts: 15020
Joined: 26 Jan 2007, 14:50
Znuny Version: Git Master
Contact:

Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze

Post by jojo »

die rpc.pl ist das "alte" Webinterface. Du solltest das Generic Interface (siehe meinen Post weiter oben) verwenden
"Production": OTRS™ 8, OTRS™ 7, STORM powered by OTRS
"Testing": ((OTRS Community Edition)) and git Master

Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
Locked