Server Admin und Senior Entwickler
demandflow.deAnsehen
Abzeichen 7
Editor Frischling 10 × Eureka! Anfänger Enthusiast Reporter UnterstützerWenn ich nicht falsch liege ist das so einfach leider nicht.
Meiner Ansicht nach sind die Inboxes auch nur SQL-Views auf die DB.
Der einfachste Weg dahin wäre wahrscheinlich über die API, da diese die Vorgänge und Schritte pro Inbox ausgeben kann.
GET /application/workitemboxes/:inbox/processes
liefert die Vorgänge dieser Inbox. Man könnte einen Call auf die drei Inboxes machen und die jeweiligen Vorgänge zurück liefern.
In diesem Fall hat die JobRouter-Engine bei SUM(amount) das (amount) mit dem Prozesstabellenfeld ersetzt.
Nach einer Änderung zu SUM( amount )
(man beachte hier die Leerzeichen) sollte die Abfrage nun auch im Dialog funktionieren.
Ja, durch die Abfrage der gewünschten Subtable-Fields im SQL-Statement können die Werte kommagetrennt angezeigt werden.
(Select SUBSTRING((
SELECT DISTINCT ', ' + ISNULL(Feldname,'') AS 'data()'
FROM Untertabellenname
WHERE step_id=JRINCIDENTS.process_step_id
FOR XML PATH('')), 2 , 9999)) As Ergebnisfeld,
Moin, da kommt ggfs noch eine Antwort von den größeren Front-End Spezialisten, aber üblicherweise legen wir eine ausgeblendete Sektion auf dem Dialog an (Beispiel #Rueckfrage) mit allen Feldern die wir brauchen und erzeugen dann einen jQuery Dialog-Popup mit dem INhalt dieser Section. Hat den schönen Vorteil, dass dieser Dialog im Standard-JR gebaut werden kann und das Design komplett dem JobRouter-CI entspricht. Hier ein Beispiel
https://jqueryui.com/dialog/#modal-confirmation
Ja, den Inhalt des Cache-Verzeichnisses sicherheitshalber in einen Backup-Ordner verschieben und dann folgende URL aufrufen
http://meinJobRouter/jobrouter/setup/scripts/generateConfigurationcache.php
Vorsicht, in älteren JR-Versionen kann es vorkommen, dass /cache/tpl_cache und die Unterordner "Mobile" und "Screen" nicht erzeugt werden können und vom Admin erzeugt werden müssen.
Moin,
das ist über JR lösbar. Es folgen drei Screenshots mit der Konfiguration einer RadioButton-Group und dem Ergebnis. Der Wert 1 oder 0 wird entsprechend gesetzt.
Gruß
Moin,
setz dir einen Marker in der Prozesstabelle (z.B. PT-Feld WAS_REJECTED = 1) und setz in dem Schritt eine Weiterleitungsregel an erster Stelle mit einer Bedingung. Bedeutet die Weiterleitung wird nur ausgeführt wenn diese Kondition zutrifft.
Ich begrüße Sie,
dies nennt die JobRouter "MultiSelect"-Felder. Hierzu gibt es zwei Bibliotheken, einmal die von Timo Günter gefundenen "Selectize" und "Select2", wobei sich ersteres mehr durchgesetzt hat und meines Wissens mit dem JobRouter mitgeliefert wird.
Wie funktioniert das? Üblicherweise gibt es ein Anzeige-, und ein Speicherfeld, wobei im Speicherfeld eine JSON-Codierte oder kommagetrennte Liste ebgelegt wird, welche beim Laden des Dialoges wieder in das Multiselect-Ansichtsfeld ko...
Hey Marc,
ich würde dann den Prozess nicht über JobImport starten sondern über die REST-API, dann bekommst du direkt die ProcessID zurück und kannst dann damit weiter arbeiten, würde das gehen?
Grüße
Moin,
diese JS-Funktion triggert lediglich die Schrittaktion "Springe zu", sofern für den Schritt in den Schritteigenschaften aktiviert:
Hey,
ja haben wir, siehe wie folgt. Kann man aus Dialogfunktionen und aus Regelausführungsfunktionen nutzen.
ACHTUNG: Der Aufruf von Utility:: funktioniert glaub ich ab 2024.1 nicht mehr. Muss man den Pfad klassisch zusammenbauen.
private function createExcel($preparedArray) {
require_once(Utility::getJobRouterPath() . '\library\vendor\phpoffice\phpspreadsheet\src\Bootstrap.php');
$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
$spreadsheet->ge...
Moin,
wenn Du in den Editor klickst und dann Ctrl+F drückst kriegst du ein Suchen-Fenster. Wenn Du das aufklappst hat das eine Suchen und Ersetzen Funktion wie man sie kennt.
Grüße
Stefan
Hallo,
ich gebe auch mal meinen Senf dazu.
Ich glaube, dass du es dir komplizierter machst als notwendig. Wenn ich deine Beschreibung richtig verstanden habe, dann bereitest du deine Daten auf für einen folgenden E-Mail-Schritt.
Dies im Frontend zu machen mit timeouts und allem drum und dran wird nicht verlässlich funktionieren, da du den netzwerkseitigen Aspekt der Enduser betrachten musst und deren Performance nicht kennst. Daher die Frage:
Was hält dich davon ab, die Funktionalität sch...
Hey,
ich habe hier eine Beispiel-Aktivität liegen, da ist in der getActivityType() nicht
return SystemActivity::ACTIVITY_TYPE_NON_PHP;
sondern
return parent::ACTIVITY_TYPE_NON_PHP;
Aber das kann auch damit nichts zu tun haben...
Moin,
es geht um diesen Code:
$$('.jr-section-title.sectionName').each(function(element) {
$(element).stopObserving('click');
});
"$$" ist im JobRouter ein "Shorthand" für die Funktion Prototype.Selector.select(expression, document), welche einen Selector entgegennimmt und ein Array an zutreffenden Elementen zurück gibt. Über diese wird dann mit dem "each" iteriert und jedem davon wird gesagt, nicht mehr auf Clicks zu hören. Heißt diese Funktion deaktiviert das ...
Hey, auf den ersten Blick (und ungeprüft) bin ich der Ansicht, dass die Hauptdatei zwingend SystemActivity.php heißen muss.
Hast du etwas in den Logs?
Dieser Link ist nur für diesen Schritt gültig. Er verfällt auch nicht. Sollte der Schritt inzwischen bearbeitet worden sein, dann wird der Schritt im üblichen "Bearbeitet"-Modus (also readonly) geöffnet.
Der Link kann nicht manipuliert werden, beispielsweise durch die Änderung der User-ID, da er gegen eine Checksum geprüft wird und dann als ungültig erkannt wird.
Der Key kann weder für die REST API noch für den Webservice genutzt werden.
Technisch gesehen ist es kein Cookie/Token welc...
Aufgrund der Datenbakclients müssen Transaktionen auf externen Datenbanken selbst organisiert werden, also Regeln im Regelablauf speziell mit BEGIN TRANSACTION, COMMIT und ROLLBACK angelegt werden.
Problem: Wenn man in einem Schritt mehrere Regeln hat und die Regel mit der Transaktion auf die externe DB erfolgreich durchläuft (und man die Daten committed), aber eine der nachfolgenden Regeln Fehler verursacht, dann wird der JobRouter-Schritt zurückgerollt, die schon committete Transaktion a...
Moin Moin,
das ist natürlich eine sehr individuelle Frage, da jeder Entwickler da eigene Präferenzen hat.
Wichtig ist jedoch vorneweg die Konsistenz.
Wenn ich zu einem bestehenden Projekt dazukomme dann analysiere ich die bisherigen Konventionen und führe diese weiter.
Wenn ich mit jemandem zusammen einen neuen Prozess entwickle dann spreche ich mich mit jener Person ab, sodass es konsistent ist.
Wenn ich jedoch alleine einen neuen Prozess entwickle mache ich es üblicherweise so:
Date...
Hey Jan,
Dominic kam mir zuvor aber ja, es gibt noch ein verstecktes User-Feld, welches an dieser Stelle befüllt werden muss. Etwas fies:
Hallo,
man kann bei SQL-Lists die Daten im Format SELECT Anzeigewert, Speicherwert FROM X laden.
Sieht auf dem Dialog so aus:
Und speichert zu
Bei den Ausgangsdaten von
Moin Tobias,
die Weiterleitung mit direktem Öffnen funktioniert nur von einem Benutzerschritt zum Nächsten. Wenn eine Systemaktivität dazwischen ist, dann ist das leider nicht möglich, da der gewünsche Schritt zu diesem Zeitpunkt noch nicht existiert.
Je nachdem wie viel Aufwand es Euch wert ist könnt Ihr die PDF via einer PHP-Dialogfunktion zur Laufzeit generieren, allerdings könnt Ihr dann nicht einfach die Systemaktivität benutzen sondern müsstet mit einem der mitgelieferten PHP-PDF-Li...
Ja, habe ein Tag hinzugefügt und einen Edit
Wir benutzen häufiger folgende Funktion, welche wir im onLoad aufrufen
jQuery('div.subtable').css('overflow', 'hidden');
Moin,
es ist tatsächlich so, dass für Simulator-Schritte nicht alle Funktionen verfügbar sind und die Informationen teilweise in anderen DB-Tabellen geführt werden. REST-Sachen würde ich nicht versuchen auf Simulator-Prozesse zu fahren.
Zur eigentlichen Frage:
- Du hast zwei Möglichkeiten. Entweder tatsächlich via PHP oder sonstige Wege direkt in die Datenbank die step_status-Werte setzen. In einer Deiner anderen Fragen habe ich dazu glaube ich den Code gepostet.
- Du müsstest Nicht-Sim...
Ja, das ist möglich.
Via JS kann - zum Beispiel im onLoad - folgender Code aufgerufen werden:
$$('.jr-section-title.sectionName').each(function(element) {
$(element).stopObserving('click');
});
Moin!
Ich war mir zuerst kurz nicht sicher, ob Ihr die "inoffizielle" API von Chris Müller meint, einem JR Entwickler in privater Kapazität
Link hier
oder die offizielle Erweiterung aus der JR Repo,
Link hier
Persönlich kenne ich das Projekt, habe es aber nicht im Einsatz. Aber eine nette Sache, dass es angeboten wird.
Moin,
das Update auf 5.2 ist eines der komplexesten Updates die ich bisher zu tun hatte weil sehr viel intern umgestellt wurde. Habe den JRlern auch gesagt, dass das für ein Minor-Update meiner Ansicht nach viel zu viel war. Es war halt das vorbereitende Update auf die 2022.1.
Hast du:
Löschen Sie aus dem Installationsverzeichnis der JobRouter-Webanwendung die Unterverzeichnisse includes und library. Hierdurch gewährleisten Sie, dass nicht mehr benötigte Dateien nicht weiter im System ve...
Hi,
vielleicht noch ein weiterer Ansatz als Ergänzung zu den Punkten von Jan:
Was passiert vor dem TTFB:
- DNS lookup: Mach mal intern einen DNS Lookup von einer ungecacheten Maschine und schau ob vielleicht Euer DNS intern aktuell Probleme macht. Dies würde sich wahrscheinlich aber noch auf weitere Dinge auswirken in Eurem Netz
- SSL handshake: Normalerweise unproblematisch aber wer weiß
- Webserver-Verarbeitung: Nutzt Ihr Redis oder irgendwelche erweiterten Caches, die erst abgefra...
Das kann fies sein. Man beachte den vierten Parameter der Dokumentation dieser Funktion.<br>
$this->getSubtableValue($sub, $field, $row, $raw); <br>
Setzt man $raw auf true, dann bekommt man laut Doku den "rohen Wert" zurück.
Effektiv muss man das setzen, um bei Datumswerten die Uhrzeit mit zu bekommen.