pgbus 0.19.4 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +96 -7
- data/Rakefile +6 -1
- data/app/controllers/pgbus/dashboard_controller.rb +2 -0
- data/app/controllers/pgbus/workflow_definitions_controller.rb +28 -0
- data/app/controllers/pgbus/workflows_controller.rb +197 -0
- data/app/frontend/pgbus/modules/charts.js +130 -4
- data/app/frontend/pgbus/modules/charts.min.js +1 -1
- data/app/frontend/pgbus/modules/charts.min.js.map +1 -1
- data/app/frontend/pgbus/style.css +1 -1
- data/app/helpers/pgbus/button_helper.rb +4 -2
- data/app/helpers/pgbus/workflow_insights_helper.rb +129 -0
- data/app/helpers/pgbus/workflows_helper.rb +165 -0
- data/app/models/pgbus/workflow_entry.rb +172 -0
- data/app/models/pgbus/workflow_event.rb +43 -0
- data/app/models/pgbus/workflow_signal.rb +77 -0
- data/app/models/pgbus/workflow_step.rb +142 -0
- data/app/views/layouts/pgbus/application.html.erb +2 -0
- data/app/views/pgbus/dashboard/_stats_cards.html.erb +17 -0
- data/app/views/pgbus/workflows/_actions.html.erb +59 -0
- data/app/views/pgbus/workflows/_events_table.html.erb +24 -0
- data/app/views/pgbus/workflows/_filters.html.erb +29 -0
- data/app/views/pgbus/workflows/_signal_form.html.erb +31 -0
- data/app/views/pgbus/workflows/_signals_table.html.erb +40 -0
- data/app/views/pgbus/workflows/_status_filter.html.erb +12 -0
- data/app/views/pgbus/workflows/_steps_table.html.erb +79 -0
- data/app/views/pgbus/workflows/_timeline.html.erb +39 -0
- data/app/views/pgbus/workflows/_workflows_table.html.erb +59 -0
- data/app/views/pgbus/workflows/attention.html.erb +88 -0
- data/app/views/pgbus/workflows/definitions/_by_revision.html.erb +52 -0
- data/app/views/pgbus/workflows/definitions/_duration_table.html.erb +18 -0
- data/app/views/pgbus/workflows/definitions/_funnel.html.erb +49 -0
- data/app/views/pgbus/workflows/definitions/_pipeline.html.erb +16 -0
- data/app/views/pgbus/workflows/definitions/_step_card.html.erb +31 -0
- data/app/views/pgbus/workflows/definitions/_throughput_table.html.erb +32 -0
- data/app/views/pgbus/workflows/definitions/_window.html.erb +17 -0
- data/app/views/pgbus/workflows/definitions/index.html.erb +71 -0
- data/app/views/pgbus/workflows/definitions/not_found.html.erb +5 -0
- data/app/views/pgbus/workflows/definitions/show.html.erb +80 -0
- data/app/views/pgbus/workflows/index.html.erb +15 -0
- data/app/views/pgbus/workflows/not_found.html.erb +5 -0
- data/app/views/pgbus/workflows/show.html.erb +93 -0
- data/config/i18n-tasks.yml +6 -0
- data/config/locales/da.yml +442 -0
- data/config/locales/de.yml +442 -0
- data/config/locales/en.yml +442 -0
- data/config/locales/es.yml +442 -0
- data/config/locales/fi.yml +442 -0
- data/config/locales/fr.yml +442 -0
- data/config/locales/it.yml +442 -0
- data/config/locales/ja.yml +442 -0
- data/config/locales/nb.yml +442 -0
- data/config/locales/nl.yml +442 -0
- data/config/locales/pt.yml +442 -0
- data/config/locales/sv.yml +442 -0
- data/config/routes.rb +26 -0
- data/lib/generators/pgbus/add_workflow_signals_generator.rb +56 -0
- data/lib/generators/pgbus/add_workflows_generator.rb +54 -0
- data/lib/generators/pgbus/templates/add_workflow_signals.rb.erb +51 -0
- data/lib/generators/pgbus/templates/add_workflows.rb.erb +150 -0
- data/lib/generators/pgbus/templates/migration.rb.erb +127 -0
- data/lib/pgbus/active_job/delivery.rb +49 -0
- data/lib/pgbus/active_job/executor.rb +3 -1
- data/lib/pgbus/configuration/workflow_settings.rb +99 -0
- data/lib/pgbus/configuration.rb +21 -3
- data/lib/pgbus/generators/migration_detector.rb +40 -0
- data/lib/pgbus/instrumentation.rb +32 -0
- data/lib/pgbus/integrations/appsignal/dashboard.json +128 -1
- data/lib/pgbus/integrations/appsignal/subscriber.rb +16 -1
- data/lib/pgbus/mcp/rack_app.rb +7 -2
- data/lib/pgbus/mcp/runner.rb +2 -1
- data/lib/pgbus/mcp/serialization.rb +25 -0
- data/lib/pgbus/mcp/server.rb +53 -10
- data/lib/pgbus/mcp/tools/deploy_tasks_tool.rb +1 -10
- data/lib/pgbus/mcp/tools/workflow_cancel_tool.rb +23 -0
- data/lib/pgbus/mcp/tools/workflow_definitions_tool.rb +36 -0
- data/lib/pgbus/mcp/tools/workflow_detail_tool.rb +38 -0
- data/lib/pgbus/mcp/tools/workflow_resume_at_tool.rb +32 -0
- data/lib/pgbus/mcp/tools/workflow_resume_tool.rb +24 -0
- data/lib/pgbus/mcp/tools/workflow_run_now_tool.rb +23 -0
- data/lib/pgbus/mcp/tools/workflow_signal_tool.rb +77 -0
- data/lib/pgbus/mcp/tools/workflow_skip_step_tool.rb +23 -0
- data/lib/pgbus/mcp/tools/workflow_stats_tool.rb +42 -0
- data/lib/pgbus/mcp/tools/workflows_attention_tool.rb +42 -0
- data/lib/pgbus/mcp/tools/workflows_tool.rb +60 -0
- data/lib/pgbus/mcp/workflow_insights_payload.rb +15 -0
- data/lib/pgbus/mcp/workflow_payloads.rb +53 -0
- data/lib/pgbus/mcp/write_tool.rb +134 -0
- data/lib/pgbus/mcp.rb +15 -0
- data/lib/pgbus/metrics/backends/statsd.rb +6 -0
- data/lib/pgbus/metrics/subscriber.rb +14 -1
- data/lib/pgbus/metrics/workflow_metrics.rb +65 -0
- data/lib/pgbus/process/dispatcher.rb +26 -0
- data/lib/pgbus/version.rb +1 -1
- data/lib/pgbus/web/data_source/workflow_actions.rb +109 -0
- data/lib/pgbus/web/data_source/workflow_insights.rb +99 -0
- data/lib/pgbus/web/data_source/workflow_list.rb +248 -0
- data/lib/pgbus/web/data_source.rb +3 -0
- data/lib/pgbus/web/workflow_action_plan.rb +62 -0
- data/lib/pgbus/web/workflow_insights_queries.rb +250 -0
- data/lib/pgbus/web/workflow_insights_report.rb +171 -0
- data/lib/pgbus/web/workflow_payload.rb +36 -0
- data/lib/pgbus/web/workflow_query.rb +82 -0
- data/lib/pgbus/web/workflow_state.rb +76 -0
- data/lib/pgbus/web/workflow_timeline.rb +113 -0
- data/lib/pgbus/web/workflow_window.rb +51 -0
- data/lib/pgbus/workflow/batch_finished_job.rb +21 -0
- data/lib/pgbus/workflow/dsl.rb +105 -0
- data/lib/pgbus/workflow/error_capture.rb +63 -0
- data/lib/pgbus/workflow/exception_policy.rb +170 -0
- data/lib/pgbus/workflow/fan_out.rb +157 -0
- data/lib/pgbus/workflow/fan_out_definition.rb +41 -0
- data/lib/pgbus/workflow/flow_control.rb +94 -0
- data/lib/pgbus/workflow/instance.rb +183 -0
- data/lib/pgbus/workflow/outside_verbs.rb +138 -0
- data/lib/pgbus/workflow/payload.rb +53 -0
- data/lib/pgbus/workflow/registry.rb +53 -0
- data/lib/pgbus/workflow/removed_step.rb +14 -0
- data/lib/pgbus/workflow/runner.rb +218 -0
- data/lib/pgbus/workflow/signal_matcher.rb +53 -0
- data/lib/pgbus/workflow/signals.rb +132 -0
- data/lib/pgbus/workflow/states.rb +119 -0
- data/lib/pgbus/workflow/step_context.rb +58 -0
- data/lib/pgbus/workflow/step_definition.rb +131 -0
- data/lib/pgbus/workflow/step_execution.rb +242 -0
- data/lib/pgbus/workflow/step_job.rb +28 -0
- data/lib/pgbus/workflow/step_outcome.rb +151 -0
- data/lib/pgbus/workflow/steps.rb +103 -0
- data/lib/pgbus/workflow/sweep.rb +156 -0
- data/lib/pgbus/workflow/test_helpers.rb +152 -0
- data/lib/pgbus/workflow/wait_timeout.rb +73 -0
- data/lib/pgbus/workflow/waiting.rb +82 -0
- data/lib/pgbus/workflow.rb +183 -0
- data/sig/pgbus/configuration.rbs +22 -0
- metadata +92 -1
data/config/locales/de.yml
CHANGED
|
@@ -140,6 +140,11 @@ de:
|
|
|
140
140
|
throughput: Durchsatz
|
|
141
141
|
throughput_detail: Aufträge/Min in den letzten %{minutes} Min
|
|
142
142
|
throughput_unavailable: benötigt Job-Statistiken (rails g pgbus:add_job_stats)
|
|
143
|
+
workflows: Workflows
|
|
144
|
+
workflows_attention:
|
|
145
|
+
one: "%{count} braucht Aufmerksamkeit"
|
|
146
|
+
other: "%{count} brauchen Aufmerksamkeit"
|
|
147
|
+
workflows_detail: laufend (%{paused} pausiert)
|
|
143
148
|
verdict:
|
|
144
149
|
links:
|
|
145
150
|
dlq: Dead Letters
|
|
@@ -723,6 +728,7 @@ de:
|
|
|
723
728
|
processes: Prozesse
|
|
724
729
|
queues: Warteschlangen
|
|
725
730
|
recurring: Wiederkehrend
|
|
731
|
+
workflows: Workflows
|
|
726
732
|
return_to_app: Zurück zur App
|
|
727
733
|
title: Pgbus Dashboard
|
|
728
734
|
toggle_dark_mode: Dunkelmodus umschalten
|
|
@@ -1023,3 +1029,439 @@ de:
|
|
|
1023
1029
|
disabled: Aufgabe deaktiviert
|
|
1024
1030
|
enabled: Aufgabe aktiviert
|
|
1025
1031
|
failed: Aufgabe konnte nicht umgeschaltet werden
|
|
1032
|
+
workflow_insights:
|
|
1033
|
+
back_to_classes: Alle Workflow-Klassen
|
|
1034
|
+
back_to_runs: Alle Workflow-Läufe
|
|
1035
|
+
bad_request: 'Ungültige Anfrage: %{reason}'
|
|
1036
|
+
capped: 'Begrenzt auf workflow_retention (%{retention}): ältere beendete und abgebrochene Läufe werden gelöscht.'
|
|
1037
|
+
few_samples:
|
|
1038
|
+
one: n=%{count}, wenige Messwerte
|
|
1039
|
+
other: n=%{count}, wenige Messwerte
|
|
1040
|
+
index:
|
|
1041
|
+
description: 'Wie jede Workflow-Klasse in %{window} lief: die Läufe, die gerade laufen, die beendeten Läufe und wie lange ein Lauf von Anfang bis Ende dauert.'
|
|
1042
|
+
empty_hint: 'Definieren Sie eine Unterklasse von Pgbus::Workflow und starten Sie einen Lauf: YourWorkflow.start!(subject, **arguments).'
|
|
1043
|
+
empty_title: Noch keine Workflow-Klasse ist gelaufen.
|
|
1044
|
+
headers:
|
|
1045
|
+
attention: Brauchen Aufmerksamkeit
|
|
1046
|
+
cancelled: Abgebrochen
|
|
1047
|
+
duration_p50: Dauer p50
|
|
1048
|
+
duration_p95: Dauer p95
|
|
1049
|
+
finished: Beendet
|
|
1050
|
+
ongoing: Laufend
|
|
1051
|
+
paused: Pausiert
|
|
1052
|
+
workflow_class: Workflow-Klasse
|
|
1053
|
+
title: Workflow-Einblicke
|
|
1054
|
+
links:
|
|
1055
|
+
at_step: "%{status} Läufe bei %{step}"
|
|
1056
|
+
attention: Läufe von %{workflow}, die Aufmerksamkeit brauchen
|
|
1057
|
+
cancelled: im Zeitfenster abgebrochene Läufe von %{workflow}
|
|
1058
|
+
cancelled_bucket: in diesem Zeitraum abgebrochene Läufe
|
|
1059
|
+
finished: im Zeitfenster beendete Läufe von %{workflow}
|
|
1060
|
+
finished_bucket: in diesem Zeitraum beendete Läufe
|
|
1061
|
+
ongoing: laufende Läufe von %{workflow}
|
|
1062
|
+
paused: pausierte Läufe von %{workflow}
|
|
1063
|
+
started: im Zeitfenster gestartete Läufe von %{workflow}
|
|
1064
|
+
started_bucket: in diesem Zeitraum gestartete Läufe
|
|
1065
|
+
not_found:
|
|
1066
|
+
hint: Keine Unterklasse von Pgbus::Workflow und kein Lauf heißt %{workflow} (oder das Lesen ist fehlgeschlagen, siehe Log).
|
|
1067
|
+
title: Unbekannte Workflow-Klasse
|
|
1068
|
+
not_loaded: Definition nicht geladen
|
|
1069
|
+
not_loaded_hint: 'Diese Klasse lädt in der App nicht mehr: Die Schritte stammen aus den Zeilen ihrer Läufe, in der Reihenfolge, in der die Läufe sie erreicht haben.'
|
|
1070
|
+
percentile: "%{name} %{value}"
|
|
1071
|
+
removed_in_flight:
|
|
1072
|
+
one: "%{count} Lauf auf dem entfernten Schritt %{step}"
|
|
1073
|
+
other: "%{count} Läufe auf dem entfernten Schritt %{step}"
|
|
1074
|
+
show:
|
|
1075
|
+
by_revision:
|
|
1076
|
+
all_steps: Alle Schritte
|
|
1077
|
+
caption: 'Dieselben Zahlen für die letzten fünf App-Revisionen, die im Zeitfenster einen Versuch beendet haben, die neueste zuerst: Eine Verschlechterung nach einem Deploy zeigt sich als Zeile.'
|
|
1078
|
+
empty: Kein Versuch in diesem Zeitfenster hat eine App-Revision aufgezeichnet (config.app_revision).
|
|
1079
|
+
headers:
|
|
1080
|
+
attempts: Versuche
|
|
1081
|
+
failed: Fehlgeschlagen
|
|
1082
|
+
reattempted: Wiederholt
|
|
1083
|
+
revision: Revision
|
|
1084
|
+
run_time: Laufzeit
|
|
1085
|
+
skipped: Übersprungen
|
|
1086
|
+
step: Schritt
|
|
1087
|
+
seen_html: gesehen %{from} bis %{to}
|
|
1088
|
+
title: Nach App-Revision
|
|
1089
|
+
worse: gestiegen von %{rate} auf %{revision}
|
|
1090
|
+
charts:
|
|
1091
|
+
durations:
|
|
1092
|
+
between: "%{from}–%{to}"
|
|
1093
|
+
caption:
|
|
1094
|
+
one: Wie lange der %{count} im Zeitfenster beendete Lauf von Anfang bis Ende gedauert hat.
|
|
1095
|
+
other: Wie lange die %{count} im Zeitfenster beendeten Läufe von Anfang bis Ende gedauert haben.
|
|
1096
|
+
headers:
|
|
1097
|
+
range: Dauer
|
|
1098
|
+
runs: Läufe
|
|
1099
|
+
over: "%{from} oder mehr"
|
|
1100
|
+
title: Dauer von Anfang bis Ende
|
|
1101
|
+
under: unter %{to}
|
|
1102
|
+
series:
|
|
1103
|
+
cancelled: Abgebrochen
|
|
1104
|
+
finished: Beendet
|
|
1105
|
+
runs: Läufe
|
|
1106
|
+
started: Gestartet
|
|
1107
|
+
throughput:
|
|
1108
|
+
caption: 'Gestartete, beendete und abgebrochene Läufe pro %{bucket} in %{window}: %{started} gestartet, %{finished} beendet, %{cancelled} abgebrochen.'
|
|
1109
|
+
headers:
|
|
1110
|
+
cancelled: Abgebrochen
|
|
1111
|
+
finished: Beendet
|
|
1112
|
+
from: Ab
|
|
1113
|
+
started: Gestartet
|
|
1114
|
+
title: Läufe pro %{bucket}
|
|
1115
|
+
description: 'In %{window}: wo die Läufe gerade sind, wie jeder Schritt abschneidet und wo Läufe stehen bleiben.'
|
|
1116
|
+
funnel:
|
|
1117
|
+
caption:
|
|
1118
|
+
one: 'Von dem %{count} im Zeitfenster gestarteten Lauf: wie viele jeden Schritt erreicht haben und wo er jetzt ist.'
|
|
1119
|
+
other: 'Von den %{count} im Zeitfenster gestarteten Läufen: wie viele jeden Schritt erreicht haben und wo jeder jetzt ist.'
|
|
1120
|
+
empty: In diesem Zeitfenster wurde kein Lauf gestartet.
|
|
1121
|
+
headers:
|
|
1122
|
+
now_here: Jetzt bei diesem Schritt
|
|
1123
|
+
reached: Erreicht
|
|
1124
|
+
share: Der gestarteten
|
|
1125
|
+
step: Schritt
|
|
1126
|
+
here:
|
|
1127
|
+
cancelled:
|
|
1128
|
+
one: "%{count} abgebrochen"
|
|
1129
|
+
other: "%{count} abgebrochen"
|
|
1130
|
+
finished:
|
|
1131
|
+
one: "%{count} beendet"
|
|
1132
|
+
other: "%{count} beendet"
|
|
1133
|
+
paused:
|
|
1134
|
+
one: "%{count} pausiert"
|
|
1135
|
+
other: "%{count} pausiert"
|
|
1136
|
+
performing:
|
|
1137
|
+
one: "%{count} läuft"
|
|
1138
|
+
other: "%{count} laufen"
|
|
1139
|
+
ready:
|
|
1140
|
+
one: "%{count} geplant"
|
|
1141
|
+
other: "%{count} geplant"
|
|
1142
|
+
waiting:
|
|
1143
|
+
one: "%{count} wartet"
|
|
1144
|
+
other: "%{count} warten"
|
|
1145
|
+
title: Trichter
|
|
1146
|
+
pipeline:
|
|
1147
|
+
attempts:
|
|
1148
|
+
one: "%{count} Versuch"
|
|
1149
|
+
other: "%{count} Versuche"
|
|
1150
|
+
caption: 'Jeder Schritt der Reihe nach: die Läufe, die gerade bei ihm stehen, und wie seine im Zeitfenster beendeten Versuche liefen.'
|
|
1151
|
+
empty: 'Noch keine Schritte: Kein Lauf dieser Klasse hat einen Schritt im Zeitfenster, und keiner läuft.'
|
|
1152
|
+
failed: Fehlgeschlagen
|
|
1153
|
+
kinds:
|
|
1154
|
+
fan_out: Fan-out
|
|
1155
|
+
removed: Entfernt
|
|
1156
|
+
signal: Wartet auf ein Signal
|
|
1157
|
+
undeclared: Nicht in der Definition
|
|
1158
|
+
live:
|
|
1159
|
+
paused: Pausiert
|
|
1160
|
+
performing: Läuft
|
|
1161
|
+
ready: Geplant
|
|
1162
|
+
waiting: Wartet
|
|
1163
|
+
now_label: Läufe bei diesem Schritt
|
|
1164
|
+
pickup: Abholung
|
|
1165
|
+
reattempted: Wiederholt
|
|
1166
|
+
run_time: Laufzeit
|
|
1167
|
+
skipped: Übersprungen
|
|
1168
|
+
step_link: Laufende Läufe bei %{step}
|
|
1169
|
+
title: Pipeline
|
|
1170
|
+
window_label: Im Zeitfenster beendete Versuche
|
|
1171
|
+
summary:
|
|
1172
|
+
attention: Brauchen Aufmerksamkeit
|
|
1173
|
+
cancelled: Abgebrochen
|
|
1174
|
+
duration: Dauer p50
|
|
1175
|
+
finished: Beendet
|
|
1176
|
+
ongoing: Laufend
|
|
1177
|
+
started: Gestartet
|
|
1178
|
+
window_label: Zeitfenster
|
|
1179
|
+
windows:
|
|
1180
|
+
1h: der letzten Stunde
|
|
1181
|
+
24h: der letzten 24 Stunden
|
|
1182
|
+
30d: der letzten 30 Tage
|
|
1183
|
+
7d: der letzten 7 Tage
|
|
1184
|
+
workflows:
|
|
1185
|
+
actions:
|
|
1186
|
+
bulk_cancel: Alle abbrechen
|
|
1187
|
+
bulk_resume: Alle fortsetzen
|
|
1188
|
+
cancel: Abbrechen
|
|
1189
|
+
rerun: Wiederholen
|
|
1190
|
+
resume: Fortsetzen
|
|
1191
|
+
resume_at: Bei Schritt fortsetzen
|
|
1192
|
+
run_now: Jetzt ausführen
|
|
1193
|
+
signal: Signal senden
|
|
1194
|
+
skip_step: Schritt überspringen
|
|
1195
|
+
attempt: Versuch %{attempt}
|
|
1196
|
+
attention:
|
|
1197
|
+
at_step_html: bei %{step}
|
|
1198
|
+
back: "← Workflows"
|
|
1199
|
+
cancel_all:
|
|
1200
|
+
one: Alle %{count} abbrechen
|
|
1201
|
+
other: Alle %{count} abbrechen
|
|
1202
|
+
confirm:
|
|
1203
|
+
cancel:
|
|
1204
|
+
one: Den bei %{step} festhängenden Lauf abbrechen?
|
|
1205
|
+
other: Alle %{count} bei %{step} festhängenden Läufe abbrechen?
|
|
1206
|
+
cancel_error:
|
|
1207
|
+
one: Den bei %{step} wegen %{error} festhängenden Lauf abbrechen?
|
|
1208
|
+
other: Alle %{count} bei %{step} wegen %{error} festhängenden Läufe abbrechen?
|
|
1209
|
+
resume:
|
|
1210
|
+
one: Den bei %{step} pausierten Lauf fortsetzen?
|
|
1211
|
+
other: Alle %{count} bei %{step} pausierten Läufe fortsetzen?
|
|
1212
|
+
resume_error:
|
|
1213
|
+
one: Den bei %{step} wegen %{error} pausierten Lauf fortsetzen?
|
|
1214
|
+
other: Alle %{count} bei %{step} wegen %{error} pausierten Läufe fortsetzen?
|
|
1215
|
+
description: Laufende Läufe, die auf einen Menschen warten, gruppiert nach dem Grund des Stopps. Ist die Ursache behoben, handle für die ganze Gruppe.
|
|
1216
|
+
empty_hint: Kein laufender Lauf ist pausiert, im Stillstand, überfällig oder wartet länger als workflow_waiting_visibility_threshold.
|
|
1217
|
+
empty_title: Nichts braucht Aufmerksamkeit.
|
|
1218
|
+
first_seen_html: erstmals %{time}
|
|
1219
|
+
headers:
|
|
1220
|
+
actions: Aktionen
|
|
1221
|
+
reason: Grund
|
|
1222
|
+
runs: Läufe
|
|
1223
|
+
seen: Gesehen
|
|
1224
|
+
workflow: Workflow
|
|
1225
|
+
last_seen_html: zuletzt %{time}
|
|
1226
|
+
only_class_html: Nur %{workflow}.
|
|
1227
|
+
reasons:
|
|
1228
|
+
overdue: 'Überfällig: fällig, aber nicht abgeholt'
|
|
1229
|
+
paused_error: Wegen eines Fehlers pausiert
|
|
1230
|
+
paused_manual: Von Hand pausiert
|
|
1231
|
+
stalled: 'Stillstand: Der Worker antwortet nicht mehr'
|
|
1232
|
+
waiting_overdue: Wartet zu lange
|
|
1233
|
+
resume_all:
|
|
1234
|
+
one: Alle %{count} fortsetzen
|
|
1235
|
+
other: Alle %{count} fortsetzen
|
|
1236
|
+
show_all: Alle Klassen anzeigen
|
|
1237
|
+
show_runs: Läufe anzeigen
|
|
1238
|
+
title: Braucht Aufmerksamkeit
|
|
1239
|
+
audit:
|
|
1240
|
+
by: "%{event} durch %{actor}"
|
|
1241
|
+
empty: Keine Ereignisse aufgezeichnet.
|
|
1242
|
+
headers:
|
|
1243
|
+
what: Was geschah
|
|
1244
|
+
when: Wann
|
|
1245
|
+
title: Audit-Protokoll
|
|
1246
|
+
with_reason: "%{sentence}: %{reason}"
|
|
1247
|
+
with_step: "%{sentence} (%{step} #%{attempt})"
|
|
1248
|
+
bad_request: 'Ungültige Anfrage: %{reason}'
|
|
1249
|
+
confirm:
|
|
1250
|
+
cancel: Diesen Workflow abbrechen? Die offenen Schritte werden abgebrochen und er läuft nicht mehr.
|
|
1251
|
+
rerun: Diesen Workflow als neuen Lauf mit demselben Subjekt und denselben Argumenten erneut starten?
|
|
1252
|
+
resume: Diesen Workflow fortsetzen?
|
|
1253
|
+
resume_at: Diesen Workflow beim gewählten Schritt fortsetzen? Die offenen Schritte werden zuvor abgebrochen.
|
|
1254
|
+
run_now: Den geplanten Schritt jetzt ausführen, statt zu warten?
|
|
1255
|
+
signal: Dieses Signal an den Workflow senden?
|
|
1256
|
+
skip_step: Den Schritt, auf den dieser Workflow wartet, überspringen und zum nächsten gehen?
|
|
1257
|
+
events:
|
|
1258
|
+
cancelled: Abgebrochen
|
|
1259
|
+
fan_out_finished: Fan-out abgeschlossen
|
|
1260
|
+
fan_out_opened: Fan-out geöffnet
|
|
1261
|
+
finished: Abgeschlossen
|
|
1262
|
+
late_completion_ignored: Späte Fertigmeldung ignoriert
|
|
1263
|
+
paused: Pausiert
|
|
1264
|
+
rerun: Wiederholt
|
|
1265
|
+
rescheduled: Neu geplant
|
|
1266
|
+
resumed: Fortgesetzt
|
|
1267
|
+
run_now: Jetzt ausführen
|
|
1268
|
+
signal_claimed: Signal übernommen
|
|
1269
|
+
signal_received: Signal empfangen
|
|
1270
|
+
stall_detected: Stillstand erkannt
|
|
1271
|
+
started: Gestartet
|
|
1272
|
+
step_completed: Schritt abgeschlossen
|
|
1273
|
+
step_failed: Schritt fehlgeschlagen
|
|
1274
|
+
step_reattempted: Schritt erneut versucht
|
|
1275
|
+
step_scheduled: Schritt geplant
|
|
1276
|
+
step_skipped: Schritt übersprungen
|
|
1277
|
+
step_started: Schritt gestartet
|
|
1278
|
+
step_waiting: Schritt wartet
|
|
1279
|
+
wait_timed_out: Wartezeit abgelaufen
|
|
1280
|
+
filters:
|
|
1281
|
+
apply: Filter anwenden
|
|
1282
|
+
clear: Zurücksetzen
|
|
1283
|
+
created_from: Erstellt ab
|
|
1284
|
+
created_to: Erstellt bis
|
|
1285
|
+
ended_from: Beendet ab
|
|
1286
|
+
ended_to: Beendet bis
|
|
1287
|
+
error_class: Fehlerklasse
|
|
1288
|
+
step: Aktueller Schritt
|
|
1289
|
+
subject_id: Subjekt-ID
|
|
1290
|
+
subject_type: Subjekttyp
|
|
1291
|
+
workflow_class: Workflow-Klasse
|
|
1292
|
+
workflow_id: Workflow-ID
|
|
1293
|
+
flash:
|
|
1294
|
+
bad_group: Diese Gruppe ist ungültig.
|
|
1295
|
+
bulk_cancel:
|
|
1296
|
+
one: "%{count} abgebrochen."
|
|
1297
|
+
other: "%{count} abgebrochen."
|
|
1298
|
+
bulk_cancel_skipped: "%{count} abgebrochen; %{skipped} waren bereits weitergelaufen."
|
|
1299
|
+
bulk_failed: "%{count} konnten nicht geändert werden: %{reason}"
|
|
1300
|
+
bulk_more: 'Es warten möglicherweise weitere Läufe: Erneut drücken für die nächsten %{cap}.'
|
|
1301
|
+
bulk_resume:
|
|
1302
|
+
one: "%{count} fortgesetzt."
|
|
1303
|
+
other: "%{count} fortgesetzt."
|
|
1304
|
+
bulk_resume_skipped: "%{count} fortgesetzt; %{skipped} waren bereits weitergelaufen."
|
|
1305
|
+
cancel: Workflow abgebrochen.
|
|
1306
|
+
choose_step: Wähle einen Schritt zum Fortsetzen.
|
|
1307
|
+
failed:
|
|
1308
|
+
not_allowed: 'Nicht ausgeführt: Der Lauf ist jetzt %{status}.'
|
|
1309
|
+
not_found: Dieser Workflow existiert nicht mehr.
|
|
1310
|
+
other: "%{action} fehlgeschlagen: %{reason}"
|
|
1311
|
+
payload_not_object: 'Nicht gesendet: Die Payload ist kein JSON-Objekt.'
|
|
1312
|
+
payload_too_large: 'Nicht gesendet: Die Payload ist größer als %{limit} Bytes.'
|
|
1313
|
+
rerun: Neuer Lauf gestartet.
|
|
1314
|
+
resume: Workflow fortgesetzt.
|
|
1315
|
+
resume_at: Workflow bei %{step} fortgesetzt.
|
|
1316
|
+
run_now: Der geplante Schritt läuft jetzt.
|
|
1317
|
+
signal: Signal %{name} gesendet.
|
|
1318
|
+
signal_duplicate: Signal %{name} wurde mit diesem Schlüssel bereits zugestellt; es wurde nichts Neues gesendet.
|
|
1319
|
+
signal_name_missing: 'Nicht gesendet: Das Signal braucht einen Namen.'
|
|
1320
|
+
skip_step: Schritt übersprungen.
|
|
1321
|
+
headers:
|
|
1322
|
+
current_step: Aktueller Schritt
|
|
1323
|
+
last_activity: Letzte Aktivität
|
|
1324
|
+
started: Gestartet
|
|
1325
|
+
status: Status
|
|
1326
|
+
subject: Subjekt
|
|
1327
|
+
workflow: Workflow
|
|
1328
|
+
index:
|
|
1329
|
+
attention_link:
|
|
1330
|
+
one: Braucht Aufmerksamkeit (%{count})
|
|
1331
|
+
other: Braucht Aufmerksamkeit (%{count})
|
|
1332
|
+
description: 'Dauerhafte mehrstufige Läufe: was jeder gerade tut und was als Nächstes passiert.'
|
|
1333
|
+
empty_hint: Wähle einen anderen Status oder entferne die Filter. Ein Lauf startet mit YourWorkflow.start!(subject, **arguments).
|
|
1334
|
+
empty_title: Keine passenden Workflows.
|
|
1335
|
+
insights_link: Einblicke nach Klasse
|
|
1336
|
+
status_label: Nach Status filtern
|
|
1337
|
+
title: Workflows
|
|
1338
|
+
next:
|
|
1339
|
+
cancelled_html: Abgebrochen %{ago}.
|
|
1340
|
+
due_html: 'Bereit: %{step} war fällig %{ago} und wartet auf einen Worker.'
|
|
1341
|
+
finished_html: Abgeschlossen %{ago}.
|
|
1342
|
+
overdue_html: 'Überfällig: %{step} war fällig %{ago}; der Sweep sendet es erneut.'
|
|
1343
|
+
paused_error_html: 'Pausiert bei %{step}: %{error} — fortsetzen oder abbrechen.'
|
|
1344
|
+
paused_manual_html: Pausiert bei %{step} — fortsetzen oder abbrechen.
|
|
1345
|
+
performing_attempt_html: "%{step} wird ausgeführt (Versuch %{attempt})."
|
|
1346
|
+
performing_html: "%{step} wird ausgeführt."
|
|
1347
|
+
ready_html: 'Bereit: %{step} läuft als Nächstes.'
|
|
1348
|
+
scheduled_html: 'Geplant: %{step} läuft %{time}.'
|
|
1349
|
+
unknown_html: 'Status: %{status}.'
|
|
1350
|
+
waiting_batch_html: Wartet auf Stapel %{batch} (%{done} von %{total} Jobs erledigt).
|
|
1351
|
+
waiting_signal_html: Wartet auf Signal %{signal} seit %{ago}.
|
|
1352
|
+
waiting_signal_timeout_html: Wartet auf Signal %{signal} seit %{ago}. Das Warten läuft ab %{time}.
|
|
1353
|
+
waiting_step_html: Wartet auf %{step}.
|
|
1354
|
+
not_found:
|
|
1355
|
+
hint: Er ist eventuell abgeschlossen und nach workflow_retention entfernt worden, oder die Datenbank konnte nicht gelesen werden (siehe Log).
|
|
1356
|
+
title: Workflow nicht gefunden
|
|
1357
|
+
outcomes:
|
|
1358
|
+
cancelled: abgebrochen
|
|
1359
|
+
completed: abgeschlossen
|
|
1360
|
+
finished_early: hat den Lauf vorzeitig beendet
|
|
1361
|
+
paused: hat den Lauf pausiert
|
|
1362
|
+
reattempted: erneut versucht
|
|
1363
|
+
skipped: übersprungen
|
|
1364
|
+
resume:
|
|
1365
|
+
carry_on: 'Fortsetzen: mit %{step} weitermachen'
|
|
1366
|
+
continue: 'Fortsetzen: weiter mit %{step}'
|
|
1367
|
+
finish: 'Fortsetzen: Lauf beenden'
|
|
1368
|
+
resend: 'Fortsetzen: %{step} erneut senden'
|
|
1369
|
+
retry: 'Fortsetzen: %{step} wiederholen'
|
|
1370
|
+
rewait: 'Fortsetzen: erneut auf %{step} warten'
|
|
1371
|
+
show:
|
|
1372
|
+
actions: Aktionen
|
|
1373
|
+
arguments: Argumente
|
|
1374
|
+
back: "← Workflows"
|
|
1375
|
+
cancelled_at: Abgebrochen
|
|
1376
|
+
class_missing: "%{workflow_class} ist in diesem Prozess nicht geladen: Der Lauf kann noch abgebrochen, aber nicht fortgesetzt werden."
|
|
1377
|
+
definition_outdated: 'Dieser Lauf wurde mit einer älteren Definition von %{workflow_class} gestartet: Die Schritte haben sich seitdem geändert.'
|
|
1378
|
+
details: Details
|
|
1379
|
+
finished_at: Abgeschlossen
|
|
1380
|
+
no_arguments: Dieser Lauf hat keine Argumente.
|
|
1381
|
+
paused_at: Pausiert
|
|
1382
|
+
reason_hint: Wird im Audit-Protokoll festgehalten, neben der ausführenden Person.
|
|
1383
|
+
reason_label: Grund (optional)
|
|
1384
|
+
rerun_of: Wiederholung von
|
|
1385
|
+
reruns: Wiederholt als
|
|
1386
|
+
resume_at_label: Schritt zum Fortsetzen
|
|
1387
|
+
signal:
|
|
1388
|
+
hint: Ein darauf wartender Schritt wird sofort geweckt; sonst bleibt es ausstehend, bis ein Schritt es übernimmt.
|
|
1389
|
+
name: Signalname
|
|
1390
|
+
payload: Payload (JSON)
|
|
1391
|
+
send: Signal senden
|
|
1392
|
+
title: Signal senden
|
|
1393
|
+
signal_statuses:
|
|
1394
|
+
claimed: Übernommen
|
|
1395
|
+
consumed: Verbraucht
|
|
1396
|
+
pending: Ausstehend
|
|
1397
|
+
signals:
|
|
1398
|
+
empty: Diesem Lauf wurden keine Signale zugestellt.
|
|
1399
|
+
headers:
|
|
1400
|
+
claimed: Übernommen
|
|
1401
|
+
consumed: Verbraucht
|
|
1402
|
+
idempotency_key: Idempotenzschlüssel
|
|
1403
|
+
name: Signal
|
|
1404
|
+
received: Empfangen
|
|
1405
|
+
status: Status
|
|
1406
|
+
payload: Payload
|
|
1407
|
+
title: Signale
|
|
1408
|
+
statuses:
|
|
1409
|
+
cancelled: Abgebrochen
|
|
1410
|
+
finished: Abgeschlossen
|
|
1411
|
+
gone: entfernt
|
|
1412
|
+
paused: Pausiert
|
|
1413
|
+
performing: In Ausführung
|
|
1414
|
+
ready: Bereit
|
|
1415
|
+
scheduled: Geplant
|
|
1416
|
+
waiting: Wartend
|
|
1417
|
+
step_statuses:
|
|
1418
|
+
cancelled: Abgebrochen
|
|
1419
|
+
completed: Abgeschlossen
|
|
1420
|
+
failed: Fehlgeschlagen
|
|
1421
|
+
in_progress: Läuft
|
|
1422
|
+
scheduled: Geplant
|
|
1423
|
+
skipped: Übersprungen
|
|
1424
|
+
waiting: Wartend
|
|
1425
|
+
steps:
|
|
1426
|
+
batch: Stapel %{batch}
|
|
1427
|
+
caused_by: Verursacht durch %{error}
|
|
1428
|
+
empty: Noch keine Versuche.
|
|
1429
|
+
headers:
|
|
1430
|
+
finished: Abgeschlossen
|
|
1431
|
+
queued: Eingereiht
|
|
1432
|
+
ran: Gelaufen
|
|
1433
|
+
scheduled: Geplant
|
|
1434
|
+
started: Gestartet
|
|
1435
|
+
status: Status
|
|
1436
|
+
step: Schritt
|
|
1437
|
+
waited: Gewartet
|
|
1438
|
+
worker: Worker
|
|
1439
|
+
revision: Revision %{revision}
|
|
1440
|
+
show_backtrace: Backtrace anzeigen
|
|
1441
|
+
title: Versuche
|
|
1442
|
+
waiting_for: danach Wartezeit %{duration}
|
|
1443
|
+
waits_for_html: wartet auf %{signal}
|
|
1444
|
+
tabs:
|
|
1445
|
+
all: Alle
|
|
1446
|
+
cancelled: Abgebrochen
|
|
1447
|
+
finished: Abgeschlossen
|
|
1448
|
+
ongoing: Laufend
|
|
1449
|
+
paused: Pausiert
|
|
1450
|
+
performing: In Ausführung
|
|
1451
|
+
ready: Bereit
|
|
1452
|
+
waiting: Wartend
|
|
1453
|
+
timeline:
|
|
1454
|
+
caption: 'Jeder Versuch, der älteste oben: gewartet (seine Wartezeit), eingereiht (fällig, noch nicht abgeholt), gelaufen (nach Ausgang eingefärbt) und wartend (auf ein Signal oder seinen Stapel), die Pausen in einer eigenen Zeile. Die Versuchstabelle darunter listet dieselben Dauern.'
|
|
1455
|
+
empty: Noch keine Versuche.
|
|
1456
|
+
paused_period_html: Pausiert ab %{from} für %{duration}
|
|
1457
|
+
paused_row: Pausiert
|
|
1458
|
+
series:
|
|
1459
|
+
paused: Pausiert
|
|
1460
|
+
queued: Eingereiht
|
|
1461
|
+
ran_cancelled: Gelaufen, abgebrochen
|
|
1462
|
+
ran_failed: Gelaufen, fehlgeschlagen
|
|
1463
|
+
ran_ok: Gelaufen
|
|
1464
|
+
ran_open: Läuft
|
|
1465
|
+
waited: Gewartet
|
|
1466
|
+
waiting: Wartend
|
|
1467
|
+
title: Zeitachse
|