Aplikace Headless 4D

Automaticky přeloženo z Deepl

Jako vývojáři 4D jste se již možná setkali s potřebou vyvíjet aplikace bez grafického uživatelského rozhraní (GUI), jinak známé jako headless aplikace. Dříve to ve 4D nebylo zcela možné …. až do verze 4D v18! V tomto příspěvku na blogu si projdeme některé z nově dostupných možností, abyste mohli své aplikace vytvářet „bez hlavy“!

Proč vytvářet bezhlavé aplikace? Existuje několik případů použití, například simulace chování systému Windows v systému macOS nebo chování služby Windows bez použití správce služeb atd. Především se ale otevírají nové možnosti, jako je vývoj botů pomocí 4D.

Jak spustit aplikaci 4D v bezhlavém režimu?

Aplikaci 4D nyní můžete spustit v bezhlavém režimu prostřednictvím rozhraní příkazového řádku (CLI) s novým parametrem„headless„. K dispozici je pro všechny typy aplikací: 4D, 4D Server, samostatné, vzdálené a sloučené aplikace. V níže uvedených příkladech je aktuálním adresářem spustitelný adresář.

Příklady pro macOS (pokud je terminál umístěn ve složce „Contents/MacOS“ balíčku):

./4D\ Server –headless MyDatabase.4DLink
./“4D Server“ –headless MyDatabase.4DLink
./4D –headless MyDatabase.4DLink
./MyBuiltRemoteApp –headless

Příklady pro Windows:

„4D Server.exe“ –headless MyDatabase.4DLink
4D.exe –headless MyDatabase.4DLink
MyBuiltRemoteApp.exe –headless

Přidali jsme nový atribut „headless“ do objektu vráceného funkcí Get application info příkazu. Díky němu je kódování mnohem jednodušší v závislosti na režimu provádění: s rozhraním nebo bez něj.

Poznámka: Když nyní spustíte aplikaci v servisním režimu v systémech Windows, automaticky se spustí jako aplikace bez hlavy. Zastavením služby se aplikace 4D ukončí správným způsobem (například pomocí akce „Quit“ v monitoru aktivity systému macOS).

Co se děje během spouštění?

Možná si říkáte: „Dobře, je to zábava, ale co se stane, když se měl zobrazit dialog?“. Abyste byli informováni o tom, co se děje za běhu, 4D při běhu v bezhlavém režimu automaticky aktivuje diagnostické protokoly. Protokoly zachycují všechna uživatelská rozhraní, která mohla být zobrazena, a zaznamenávají je pomocí značky [{applicationName}.HDLS].

Obecné chování je takové, že 4D zachytí příkazy, které se pokoušejí něco zobrazit, zaznamená varovnou událost s názvem příkazu a jeho řetězcem volání a akci zruší. Existuje několik zvláštních případů:

  • Pokud není k dispozici žádná licence, 4D to zaznamená do systémového protokolu událostí a standardních toků a poté ukončí činnost.
  • Pokud je třeba databázi převést, 4D to zaznamená do systémového protokolu událostí a standardních toků a poté ukončí činnost.
  • Pokud nebyla nalezena žádná dostupná databáze nebo datový soubor, zaznamená to 4D do systémového protokolu událostí a standardních toků a ukončí se.
  • Pokud je třeba zobrazit ladicí program, 4D zaznamená chybu a poté simuluje akci „přerušit“.
  • Když se zobrazí výstraha, 4D zaznamená a poté simuluje akci „OK“.
  • Když je vyvolán příkaz QUIT 4D, 4D zaznamená a poté simuluje akci „OK“.
  • Když je třeba sloučenou aplikaci aktualizovat, vytvoří se protokol, provede se aktualizace a aplikace se znovu spustí v bezhlavém režimu.

Příklad:

Například příkaz ALERT provedený na serveru spuštěném jako služba v systému Windows již nezastaví provádění serveru. Systém 4D příkaz automaticky zachytí a zapíše varovný řádek do diagnostických protokolů. Vypadá to takto:

11 2019-07-11 18:53:52 [myTestDatabase Server.HDLS] WARN – (Alert: Test alert label)[{„type“: „projectMethod“, „name“: „myTestAlert“, „line“:2, „database“: „myTestDatabase“}]

Tento systém byl vytvořen, aby vám pomohl zjistit, co se děje ve vašich bezhlavých aplikacích, a případně vylepšit váš kód.

POUŽITÍ STANDARDNÍCH PROUDŮ SYSTÉMU

Přidali jsme nový selektor, Into system standard outputs, do příkazu LOG EVENT příkazu, abyste mohli posílat text do standardních proudů stdout a stderr. Jak možná víte, příkaz LOG EVENT příkaz má volitelný parametr„importance„. V závislosti na důležitosti události tedy příkaz odešle text do proudu stdout pro Information message a Warning message, a do proudu stderr pro Error message.

Odesílání textu na výstup stdout:

LOG EVENT(Into system standard outputs; "Toto je text pro stdout";Information message)

Odeslání textu na stderr:

LOG EVENT(Into system standard outputs; "Toto je text pro stderr";Error message)

K získání informací generovaných systémem 4D a vaší aplikací můžete také použít přesměrování pro standardní systémové toky stdout a stderr. Ve výchozím nastavení jsou tyto proudy zpravidla směrovány do konzoly, výjimečně na obrazovku, v závislosti na nastavení systému. Standardní proudy můžete přesměrovat například do souborů pomocí následujících příkazových řádků.

macOS: V systému MacOS můžete použít následující příkazy:

.: ./4D –headless MyDatabase.4DLink 1>stdout.txt 2>stderr.txt
4D –headless MyDatabase.4DLink 1>stdout.txt 2>stderr.txt

Připomínka pro kombinace přesměrování datových toků:

  • 1>outputFile: do souboru bude zapsán standardní výstupní proud namísto výchozího výstupu systému. Soubor se automaticky vytvoří při spuštění příkazu. Pokud již existuje, starý obsah se vymaže.
  • 1>>outputFile: stejné chování jako u předchozí syntaxe s tím rozdílem, že pokud soubor již existuje, připojí se k obsahu proudu.
  • 2>errorFile: do souboru bude zapsán standardní chybový proud namísto výchozího výstupu systému. Soubor je automaticky vytvořen při spuštění příkazu. Pokud již existuje, starý obsah se vymaže.
  • 2>>errorFile: stejné chování jako předchozí syntaxe, s tím rozdílem, že pokud soubor již existuje, připojí se k obsahu proudu.
  • 2>&1: proud chyb je sloučen s výstupním proudem.
  • 1>&2: výstupní proud je sloučen s proudem chyb.

Poznámka: příkaz open je možné použít i pro spuštění balíčku 4D v systému MacOS, proudy budou generovány tímto příkazem, nikoli aplikací 4D!

Závěr

Tyto nové pokroky umožňují splnit systémové požadavky a také vytvářet nové možnosti, například boty. Je na vás, abyste je zkombinovali s kanály pro kontinuální integraci (CI) a kontinuální testování (CT) vaší softwarové továrny. Vaším jediným omezením je vaše představivost!

Avatar
• Product Owner • Damien Fuzeau se připojil k týmu 4D Product v únoru 2019. Jako Product Owner má na starosti psaní uživatelských příběhů a jejich následný převod do funkčních specifikací. Jeho úkolem je také zajistit, aby dodávané implementace funkcí vyhovovaly potřebám zákazníků. Damien vystudoval softwarové inženýrství na University of Nantes. Ve své bývalé společnosti strávil více než 23 let, nejprve jako vývojář (objevil 4D v roce 1997) a později jako technický manažer a softwarový architekt. Tato společnost je partnerem 4D OEM a nasadila obchodní software založený na 4D pro tisíce uživatelů na stovkách serverů. Damien je tedy zvyklý na 4D vývoj a nasazení ve vícejazyčném kontextu.