Spuštění scénáře mimo editor
Scénář, který si v editoru uložíte, je obyčejný soubor .json. Dá se spustit i bez otevřeného
okna editoru — jedním příkazem, plánovačem, nebo přes Prefect. Robot přitom dělá přesně to, co
byste viděli v editoru; jen se nic nekreslí na obrazovku.
| Potřeba | Použijte |
|---|---|
| Plánované běhy, kdy editor zůstává otevřený na stanici nebo na VM | Orchestrator |
| Běhy úplně bez okna editoru — CI, server, externí plánovač | tuto stránku |
Spuštění jedním příkazem
Kromě scénáře potřebujete profil robota — ten, který si ukládáte v dialogu
Otevřít prostředí; je to také soubor .json.
aiviro-editor run --scenario faktury.json --profile robot_profile.json
Oba přepínače jsou povinné.
| Přepínač | Efekt |
|---|---|
--scenario CESTA | Soubor .json se scénářem. Povinné. |
--profile CESTA | Profil robota, proti kterému se scénář spustí. Povinné. |
--prod / --test | Ostrý nebo testovací režim. Výchozí je --prod, takže scénář běží ostře, dokud nepředáte --test. |
--run-log CESTA | Uloží záznam běhu (stavy akcí a logy) do zadaného .zip. Otevřete ho v prohlížeči logů přes Soubor → Otevřít externí log. |
Dva přepínače platí pro příkaz jako celek a lze je předat i přes prostředí:
| Přepínač | Proměnná prostředí | Efekt |
|---|---|---|
--log-to-console, -l | AIVIRO__LOG_TO_CONSOLE | Loguje do konzole — to chcete ve výstupu CI. |
--debug | AIVIRO__DEBUG | Zapne vývojářské prvky rozhraní. Bez okna nemá využití. |
Spuštění aiviro-editor bez podpříkazu otevře desktopové rozhraní.
Návratové kódy
Příkaz skončí kódem 0 při úspěchu a 1 při chybě, takže se dá zapojit do jakéhokoli
plánovače nebo skriptu. Při chybě navíc vypíše na chybový výstup Scenario failed: <souhrn>.
aiviro-editor run --scenario faktury.json --profile robot_profile.json --run-log run.zip || echo "selhalo"
Interaktivní akce v tomto režimu neprojdou. Scénář obsahující Vstupní formulář skončí chybou Interactive action encountered in headless mode — bez okna totiž není komu otázku položit. Takové akce omezte na Povoleno (jen Test), aby v produkci nikdy neběžely.
Cesty ke scénáři i profilu můžete zadat absolutně, nebo relativně ke složce, ve které příkaz spouštíte.
Pravidelné spouštění přes Prefect
Pro pravidelné běhy se scénář zabalí do Prefect flow. Níže je šablona — zkopírujte ji do
souboru ve složce flows/ svého projektu, například flows/flow_faktury.py, a upravte
hodnoty popsané pod výpisem.
import aiviro
from aiviro.modules.prefect_v3.storage import AiviroGitDockerStorage
from aiviro_editor.headless.runner import run_editor_scenario
from prefect import flow
from src import get_file_path, get_work_dir
SCENARIO_FILE = "scenarios/faktury.json"
PROFILE_FILE = "data/robot_profile.json"
@flow(log_prints=True, name="Zpracovani faktur")
def main() -> None:
result = run_editor_scenario(
get_file_path(SCENARIO_FILE),
profile=get_file_path(PROFILE_FILE),
is_prod=True,
)
if not result.success:
raise RuntimeError("Scenario failed: " + result.error_summary)
if __name__ == "__main__":
main.from_source(
source=AiviroGitDockerStorage(project_path=get_work_dir(), git_branch="main"),
entrypoint="flows/flow_faktury.py:main",
).deploy(
name="main",
work_pool_name="aiviro-local",
work_queue_name="default",
cron="0 6 * * *",
job_variables={aiviro.AIVIRO_DEBUG_KEY: "0"},
)
Co si v kopii upravit
| Hodnota | Význam |
|---|---|
SCENARIO_FILE, PROFILE_FILE | Cesty ke scénáři a profilu robota. Píší se od kořene projektu a používají lomítka /, protože je čte server. |
name u @flow | Název, pod kterým flow uvidíte v Prefectu. |
entrypoint | Musí přesně odpovídat umístění a názvu souboru, jinak jej server nenajde. |
git_branch | Větev, ze které se má scénář brát. |
cron | Kdy se má scénář spouštět. Hodnota None znamená jen ruční spouštění. |
is_prod | True pro ostrý běh, False pro testovací. |
Scénář i profil musí být uložené v projektu a nahrané v gitu — server je při běhu čte odtamtud, ne z vašeho počítače.
Python API
run_editor_scenario je jednorázová obálka a přijímá víc, než ukazuje šablona:
| Parametr | Význam |
|---|---|
scenario | Cesta k .json, nebo už načtený scénář. |
profile | Cesta k profilu, nebo načtený objekt profilu. |
robot | Existující robot, proti kterému se má běžet, místo profile. Musí být zadán právě jeden z profile / robot. |
is_prod | True (výchozí) pro ostrý běh, False pro testovací. |
run_log_path | Kam zapsat záznam běhu .zip. |
wait_after | Kolik sekund počkat po dokončení scénáře. |
Vrací výsledek s poli success, error_summary a run_log_path.
Když potřebujete spustit víc scénářů proti jednomu robotovi, použijte přímo EditorRunner
místo opakovaného volání run_editor_scenario — robota připojí jednou a znovu ho použije, čímž
u každého scénáře ušetříte celé připojení a nastartování.
Kontrolní seznam před nasazením bez editoru
- Všechny přihlašovací údaje jsou v trezoru a klíče existují na stroji, který bude scénář spouštět.
- V produkci neběží žádný Vstupní formulář ani jiná interaktivní akce.
- Scénář končí hlášením — viz Aby scénář přežil běh bez obsluhy.
- Je nastavené
--run-log, aby po neúspěšném běhu zůstalo co číst. - Profil robota na cílovém stroji má správnou adresu, přihlašovací údaje a monitor.