OTRS Cache - Änderungen direkt in DB werden nicht angezeigt
OTRS Cache - Änderungen direkt in DB werden nicht angezeigt
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
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
Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze
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
"Testing": ((OTRS Community Edition)) and git Master
Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze
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?
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?
-
- 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
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
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze
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
"Testing": ((OTRS Community Edition)) and git Master
Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze
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.
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.
Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze
dann benutzt den Webservice via SOAP, Beispiele hier:
http://blog.otrs.org/2012/10/03/easy-ti ... interface/
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
"Testing": ((OTRS Community Edition)) and git Master
Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com
Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze
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?
Das muss doch einfacher gehen?
-
- 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
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.
Was anderes würde mir an der Stelle nicht mehr einfallen.
Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze
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.
Folgende Änderungen sind in der rpc.pm durchzuführen , damit dynamische Felder überhaupt funzen:
https://gist.github.com/xonic128/2147909
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";
?>
https://gist.github.com/xonic128/2147909
Re: OTRS Cache - Änderungen direkt in DB werden nicht angeze
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
"Testing": ((OTRS Community Edition)) and git Master
Never change Defaults.pm! :: Blog
Professional Services:: http://www.otrs.com :: enjoy@otrs.com