Hallo zusammen,
bei einem Projektgenehmigungsworkflow habe ich das Problem, dass sich beispielsweise die Projektkosten nach Abschluss aller Genehigungsschritte nachträglich ändern können. Wenn die Kostensteigerung ein gewisses Maß überschreitet ist der Antrag erneut genehmigugspflichtig.
Um nun nicht alle Daten aus dem alten Antrag erneut manuell einpflegen zu müssen, greife ich mit einem Code (PHP in Zusammenspiel mit JavaScript) auf die Prozesstabelle zu und hole mir die Daten. Soweit so gut - leider weiß ich nicht, wie ich an die abgespeicherten Attachments rankomme, da jr_set_value nicht für Attachments funktioniert*. Könnt ihr helfen?
- JR Manual - "This function does not support the following dialog elements: BUTTON, ALTERNATIFF, ATTACHMENT, BLANK, FILE and SQLTABLE"
- Eine SQL Tabelle zeigt mir im Schritt aller abgeschlossenen Projekte an.
- Über einen Klick in die entsprechende Zeile wird die Funktion getData ausgeführt.
function getData(rowId){
var prozessid = jr_get_table_value('ila_applications', rowId, 'processid');
var archivid = jr_get_table_value('ila_applications', rowId, 'ARCHIVE_ID');
jr_execute_dialog_function('PHPgetData', {ID:prozessid,ARCHIVE_ID:archivid}, successCallbackData, errorCallbackData);
}
- Diese wiederrum führt den PHP Befehl aus, welcher aus der Prozesstabelle die Daten in das Dialogfeld "JSON_Data" schreibt:
<?php
class className extends JobRouter\Engine\Runtime\PhpFunction\DialogFunction
{
public function execute($rowId = null)
{
$Archiv_ID=$this->getParameter('ARCHIVE_ID');
$prozessid=$this->getParameter('ID');
$Prozesstabelle = 'ILA_APPROVAL_FI';
$this->setReturnValue('OLD_PROCESSID', $prozessid);
$jsonsatz = array();
$j = 0;
$jobDB = $this->getJobDB();
$sql = "select * from $Prozesstabelle as p inner join jrincidents as jri on p.processid = jri.processid
where p.processid = '$prozessid' and jri.status = 5 and ARCHIVE_ID <> '' and p.step_id = (select max(step_id) from ILA_APPROVAL_FI where processid =jri.processid)";
$result = $jobDB->query($sql);
if ($result === false) {
throw new JobRouterException($jobDB->getErrorMessage());
}
while ($row = $jobDB->fetchRow($result)) {
$jsonsatz[$j]["SAP_APPLICANT"]=$row['SAP_APPLICANT'];
$this->setReturnValue('SAP_APPLICANT', $row['SAP_APPLICANT']);
$JSON = json_encode($jsonsatz);
$this->setReturnValue('JSON_Data', $JSON);
- Im Falle eines Erfolgs wird die folgende Java Callback - Funktion ausgeführt:
function successCallbackData(returnObject){
jr_set_value('applicant',returnObject.result.SAP_APPLICANT);
Vielen Dank vorab!
Karim