Examples: query, "exact match", wildcard*, wild?ard, wild*rd
Fuzzy search: cake~ (finds cakes, bake)
Term boost: "red velvet"^4, chocolate^2
Field grouping: tags:(+work -"fun-stuff")
Escaping: Escape characters +-&|!(){}[]^"~*?:\ with \, e.g. \+
Range search: properties.timestamp:[1587729413488 TO *] (inclusive), properties.title:{A TO Z}(excluding A and Z)
Combinations: chocolate AND vanilla, chocolate OR vanilla, (chocolate OR vanilla) NOT "vanilla pudding"
Field search: properties.title:"The Title" AND text
Unbeantwortet
OnSubmit Value Transfer


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 schlicht und ergreifend in eine PHP-RegelausführungsFunktion auszulagern? Dann hast du diese ganzen Probleme gelöst und kannst dich auf korrekte Ausführung verlassen.
Ich sehe zwei Möglichkeiten dazu:
Entweder gehst du über die Standardgunktionalität

private function getUniqueInformAddresses() {
	    $uniqInformAddresses = [];
	
        $sub = 'SUBV_DEBIT_RULES';
        $rids = $this->getSubtableRowIds($su);
        foreach ($rids as $rid) {
            if ($this->getSubtableValue($sub, $rid, 'INFORM') == 1) {
                $uniqInformAddresses[] = $this->getSubtableValue($sub, $rid, 'RECEIVER_SQL');
            }
        }
        return array_unique($uniqInformAddresses);
	}

Oder du gehst die SQL-Route

private function getUniqueInformAddressesviaSQL() {
	    $uniqInformAddresses = [];
	    $sql = "SELECT DISTINCT RECEIVER_SQL FROM SUBV_DEBIT_RULES WHERE INFORM = 1 AND step_id=?";
	    $res = $this->jrSQLSelect($sql, [$this->getStepId()]);
	    foreach ($res as $row) {
	       $uniqInformAddresses[] = $row['RECEIVER_SQL']; 
	    }
        return $uniqInformAddresses;
	}

Dann schreibst du dir die in die Untertabelle und schickst an diese die E-Mail.
Was meinst du?

EDIT:
Auf Wunsch mehr Infos.
Du willst keine Dialogfunktion, die Handhabung ist etwas komplizierter und du machst dir das Leben wieder schwerer als notwendig. Diese Funktionen sind speziell dafür da, innerhalb des Lifecycles des Schrittes Backend-Aktivitäten auszuführen. Hierbei müssen weitere Nebeneffekte betrachtet werden.
Was du möchtest ist eine Regelausführungsfunktion anzulegen und dann diesen Code einzufügen und anzupassen (siehe Kommentar):

<?php

class className extends JobRouter\Engine\Runtime\PhpFunction\RuleExecutionFunction
{
	public function execute($rowId = null) {
		$uniqueAddresses = $this->getUniqueInformAddresses();
		$this->writeAddresses($uniqueAddresses);
	}
	
	private function getUniqueInformAddresses() {
	    $uniqInformAddresses = [];
	    //Hier den Namen der Untertabelle, NICHT der Untertabellenansicht
	    //Ebenso unten die Untertabellenfeldnamen einfügen, NICHT die Untertabellenansichtsfeldnamen
        $sub = 'SUBV_DEBIT_RULES';
        $rids = $this->getSubtableRowIds($su);
        foreach ($rids as $rid) {
            if ($this->getSubtableValue($sub, $rid, 'INFORM') == 1) {
                $uniqInformAddresses[] = $this->getSubtableValue($sub, $rid, 'RECEIVER_SQL');
            }
        }
        return array_unique($uniqInformAddresses);
	}
	
	private function writeAddresses($uniqueAddresses) {
	    $sub = 'SUBT_SETTLEMENT_EMAIL';
	    $this->clearSubtable($sub);
	    $rid = 1;
	    foreach ($uniqueAddresses as $address) {
	        $rowData = ['SETTLEMENT_RECEIVER' => $address];
	        $this->insertSubtableRow($sub, $rid, $rowData); 
	        $rid++;
	    }
	}
}
?>

Dann gehst du mit der Rechten Maustaste auf den Schritt, Regeln -> und fügst eine neue Ausführungsregel ein und wählst unter PHP diese Funktion aus. Sie wird nun beim Senden des Schrittes ausgeführt. Im Folgeschritt solltest du dann in deiner Untertabelle die korrekten Einträge sehen.

1
1
Gepostet vor einem Jahr
Bearbeitet vor einem Jahr
Stefan Köngeter
309 × 7 Administrator
  
  

Vielen lieben Dank, Stefan! Funktioniert einwandfrei!

Karim - Lukas   vor einem Jahr Melden
611 Ansichten
0 Antworten
vor einem Jahr
vor einem Jahr