Im Workflow-Designer von Bitrix24 gibt es die Aktion „PHP-Code", die beliebigen Code innerhalb des Prozesses ausführt. Verfügbar ist sie nur in der On-Premise-Version — im Cloud-Bitrix24 gibt es diese Aktion auf keinem Tarif. Dabei lassen sich die typischen Aufgaben, für die man PHP in einen Prozess einbaut — eine Anfrage an eine externe API, das Parsen der Antwort, eine Auswahl aus dem Text, eine zusammengesetzte Bedingung — in der Cloud mit fertigen Robotern zusammenbauen. Betrachten wir, wo die Grenze verläuft und womit jedes Szenario ersetzt wird.
Wo ist die Aktion „PHP-Code" verfügbar und warum gibt es sie nicht in der Cloud?
„PHP-Code" ist eine Aktion der On-Premise-Edition: innerhalb der Vorlage schreibt man beliebigen Code, der auf dem Server des Portals mit Zugriff auf die Kern-API ausgeführt wird. In der Cloud läuft das Portal auf der gemeinsamen Infrastruktur von Bitrix24, und die Ausführung von Benutzercode ist dort gesperrt — das ist eine architektonische Einschränkung, keine Frage des Tarifs oder einer versteckten Einstellung. Deshalb sind Anleitungen aus Foren „fügen Sie diesen PHP in den Geschäftsprozess ein" nur auf die On-Premise-Version anwendbar. Schaut man sich an, was der Code in solchen Vorlagen genau tut, ist es fast immer eines von vier Dingen: ein externes System ansprechen, dessen Antwort parsen, ein Stück aus einer Zeichenkette herausziehen, eine Entscheidung anhand mehrerer Bedingungen treffen. Jeder Cluster wird in der Cloud durch einen eigenen Roboter abgedeckt — im Folgenden einen pro Szenario.
Wie spricht man eine externe API ohne PHP an?
Der Roboter „HTTP-Anfrage GET/POST" führt eine Anfrage direkt aus dem Geschäftsprozess aus: die Methoden GET, POST, PUT, PATCH, DELETE und HEAD, beliebiger Body, Header im JSON-Format — zum Beispiel Authorization für ein Token —, Timeout von 1 bis 60 Sekunden. Er gibt den Antwort-Body, den HTTP-Statuscode und eine Erfolgskennung Y/N (Code 2xx) zurück. Weiterleitungen werden auf jedem Schritt geprüft, Anfragen an interne Netzwerkadressen werden blockiert, der Antwort-Body ist auf 1 MB begrenzt; der Roboter ist auf den kostenpflichtigen Tarifen von Bitrix24 verfügbar. Das reicht für Integrationen auf dem Niveau „Deal-Daten an das Buchhaltungssystem übergeben und den Bestellstatus abholen". Die Datenannahme in die Gegenrichtung, von außen ins Portal, erfolgt über Webhooks.
Wie parst man eine API-Antwort ohne json_decode?
Die Antwort eines externen Systems ist fast immer JSON, und im On-Premise-PHP folgten danach ein paar Zeilen mit json_decode. In der Cloud erledigt dasselbe der Roboter „Wert aus JSON nach Pfad extrahieren": er nimmt eine JSON-Zeichenkette und einen Pfad mit Punkt entgegen — data.user.email, items.0.name —, gibt den Wert als Zeichenkette zurück, Objekte und Arrays als JSON für die weitere Verarbeitung, plus die Kennung „Pfad gefunden" (Y/N). Ist das JSON fehlerhaft oder der Pfad nicht vorhanden, gibt der Roboter N zurück — anhand dessen leitet der Prozess den Fehler in einen separaten Zweig, statt eine Leere in das Deal-Feld zu schreiben. Die Verkettung „HTTP-Anfrage → Wert extrahieren → ins Feld schreiben" deckt die meisten Integrationsszenarien ab, die früher Code erforderten.
Wie zieht man Daten aus dem Text ohne preg_match?
Der zweite Klassiker von PHP in Prozessen sind reguläre Ausdrücke: die Bestellnummer aus dem Betreff einer E-Mail herausziehen, Links in einem Kommentar finden, das Format einer Artikelnummer prüfen. Der Roboter „Per regulärem Ausdruck extrahieren" wendet ein Muster auf die Ausgangszeichenkette an: das Muster wird ohne Begrenzer angegeben, Kyrillisch und Unicode werden korrekt verarbeitet, die Nummer der Erfassungsgruppe erlaubt es, nicht die ganze Übereinstimmung zurückzugeben, sondern einen konkreten Teil — zum Beispiel den Wert aus den Klammern. Er gibt die erste Übereinstimmung, die Liste aller Übereinstimmungen und die Kennung „Gefunden" (Y/N) zurück. Typischer Fall: ein Lead wurde aus der E-Mail „Bestellung ORD-12345: Frage zur Lieferung" erstellt — das Muster ORD-\d+ holt die Nummer, und der Prozess findet den zugehörigen Deal.
Wie ersetzt man ein if mit mehreren Bedingungen?
Die standardmäßige „Bedingung" des Designers vergleicht Werte, aber eine Kombination aus drei bis vier Prüfungen verwandelt die Vorlage in eine Leiter verschachtelter Zweige — genau das, was man in der On-Premise-Version in drei Zeilen Code versteckte. Der Roboter „Komplexe Bedingung (AND / OR / NOT)" stellt die Prüfung in einem Schritt zusammen: bis zu vier Paare „Wert — Operator — Wert" mit AND- oder OR-Logik; unter den Operatoren — Gleichheit, Zahlenvergleich, contains, is_empty. Für beliebige Verschachtelung gibt es einen JSON-Modus mit den Gruppen and, or und not. Am Ausgang eine einzige Kennung Y/N, anhand derer sich der Prozess mit einer gewöhnlichen Bedingung verzweigt — die Logik liest sich im Designer und nicht in Code, den nur der Autor verstand.
Wann kommt man doch nicht ohne On-Premise aus?
Die ehrliche Grenze: Roboter decken Integrations- und Logikszenarien ab, aber nicht alles. Wenn der Code mit dem Dateisystem des Servers, mit Kern-Ereignissen oder eigenen Modulen arbeiten muss — das ist On-Premise und ein Entwickler. War PHP dagegen für „anfragen, parsen, entscheiden" nötig — deckt das Cloud-Portal das mit einer Kette aus zwei bis vier Robotern ab, die jeder Administrator lesen und korrigieren kann. Beginnen sollte man mit einer Inventur: welche Schritte der aktuellen Abläufe an das Fehlen von Code stoßen — und sie aus fertigen Aktionen zusammenbauen, wie im Überblick über Geschäftsprozesse beschrieben.
Fazit
„PHP-Code" — nur die On-Premise-Version; in der Cloud wird beliebiger Code nicht ausgeführt. Ersatz nach Szenarien: Anfrage an eine API — „HTTP-Anfrage GET/POST", Parsen der Antwort — „Wert aus JSON nach Pfad extrahieren", Text — „Per regulärem Ausdruck extrahieren", zusammengesetzte Prüfungen — „Komplexe Bedingung". Alle vier finden Sie im Roboteka-Katalog: kostenlose Installation aus dem Bitrix24.Market, sie funktionieren sowohl in der Cloud als auch On-Premise. Fehlt die passende Aktion — beschreiben Sie die Aufgabe, wir bauen den Roboter kostenlos.