pgbus 0.19.4 → 0.20.1

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.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/README.md +97 -7
  4. data/Rakefile +6 -1
  5. data/app/controllers/pgbus/dashboard_controller.rb +2 -0
  6. data/app/controllers/pgbus/workflow_definitions_controller.rb +28 -0
  7. data/app/controllers/pgbus/workflows_controller.rb +197 -0
  8. data/app/frontend/pgbus/modules/charts.js +148 -4
  9. data/app/frontend/pgbus/modules/charts.min.js +1 -1
  10. data/app/frontend/pgbus/modules/charts.min.js.map +1 -1
  11. data/app/frontend/pgbus/style.css +1 -1
  12. data/app/helpers/pgbus/button_helper.rb +4 -2
  13. data/app/helpers/pgbus/workflow_insights_helper.rb +129 -0
  14. data/app/helpers/pgbus/workflows_helper.rb +165 -0
  15. data/app/models/pgbus/blocked_execution.rb +12 -0
  16. data/app/models/pgbus/uniqueness_key.rb +88 -3
  17. data/app/models/pgbus/workflow_entry.rb +172 -0
  18. data/app/models/pgbus/workflow_event.rb +43 -0
  19. data/app/models/pgbus/workflow_signal.rb +77 -0
  20. data/app/models/pgbus/workflow_step.rb +149 -0
  21. data/app/views/layouts/pgbus/application.html.erb +2 -0
  22. data/app/views/pgbus/dashboard/_stats_cards.html.erb +17 -0
  23. data/app/views/pgbus/workflows/_actions.html.erb +59 -0
  24. data/app/views/pgbus/workflows/_events_table.html.erb +24 -0
  25. data/app/views/pgbus/workflows/_filters.html.erb +29 -0
  26. data/app/views/pgbus/workflows/_signal_form.html.erb +31 -0
  27. data/app/views/pgbus/workflows/_signals_table.html.erb +40 -0
  28. data/app/views/pgbus/workflows/_status_filter.html.erb +12 -0
  29. data/app/views/pgbus/workflows/_steps_table.html.erb +79 -0
  30. data/app/views/pgbus/workflows/_timeline.html.erb +49 -0
  31. data/app/views/pgbus/workflows/_workflows_table.html.erb +59 -0
  32. data/app/views/pgbus/workflows/attention.html.erb +88 -0
  33. data/app/views/pgbus/workflows/definitions/_by_revision.html.erb +52 -0
  34. data/app/views/pgbus/workflows/definitions/_duration_table.html.erb +18 -0
  35. data/app/views/pgbus/workflows/definitions/_funnel.html.erb +49 -0
  36. data/app/views/pgbus/workflows/definitions/_pipeline.html.erb +16 -0
  37. data/app/views/pgbus/workflows/definitions/_step_card.html.erb +31 -0
  38. data/app/views/pgbus/workflows/definitions/_throughput_table.html.erb +32 -0
  39. data/app/views/pgbus/workflows/definitions/_window.html.erb +17 -0
  40. data/app/views/pgbus/workflows/definitions/index.html.erb +71 -0
  41. data/app/views/pgbus/workflows/definitions/not_found.html.erb +5 -0
  42. data/app/views/pgbus/workflows/definitions/show.html.erb +80 -0
  43. data/app/views/pgbus/workflows/index.html.erb +15 -0
  44. data/app/views/pgbus/workflows/not_found.html.erb +5 -0
  45. data/app/views/pgbus/workflows/show.html.erb +93 -0
  46. data/config/i18n-tasks.yml +6 -0
  47. data/config/locales/da.yml +445 -0
  48. data/config/locales/de.yml +445 -0
  49. data/config/locales/en.yml +445 -0
  50. data/config/locales/es.yml +445 -0
  51. data/config/locales/fi.yml +445 -0
  52. data/config/locales/fr.yml +445 -0
  53. data/config/locales/it.yml +445 -0
  54. data/config/locales/ja.yml +445 -0
  55. data/config/locales/nb.yml +445 -0
  56. data/config/locales/nl.yml +445 -0
  57. data/config/locales/pt.yml +445 -0
  58. data/config/locales/sv.yml +445 -0
  59. data/config/routes.rb +26 -0
  60. data/lib/generators/pgbus/add_workflow_signals_generator.rb +56 -0
  61. data/lib/generators/pgbus/add_workflows_generator.rb +54 -0
  62. data/lib/generators/pgbus/templates/add_workflow_signals.rb.erb +51 -0
  63. data/lib/generators/pgbus/templates/add_workflows.rb.erb +150 -0
  64. data/lib/generators/pgbus/templates/migration.rb.erb +127 -0
  65. data/lib/pgbus/active_job/adapter.rb +81 -3
  66. data/lib/pgbus/active_job/delivery.rb +63 -0
  67. data/lib/pgbus/active_job/executor.rb +20 -8
  68. data/lib/pgbus/concurrency/blocked_execution.rb +14 -6
  69. data/lib/pgbus/configuration/workflow_settings.rb +99 -0
  70. data/lib/pgbus/configuration.rb +64 -4
  71. data/lib/pgbus/dead_letter_header.rb +9 -1
  72. data/lib/pgbus/generators/migration_detector.rb +40 -0
  73. data/lib/pgbus/instrumentation.rb +33 -0
  74. data/lib/pgbus/integrations/appsignal/dashboard.json +157 -1
  75. data/lib/pgbus/integrations/appsignal/subscriber.rb +16 -1
  76. data/lib/pgbus/mcp/rack_app.rb +7 -2
  77. data/lib/pgbus/mcp/runner.rb +2 -1
  78. data/lib/pgbus/mcp/serialization.rb +25 -0
  79. data/lib/pgbus/mcp/server.rb +53 -10
  80. data/lib/pgbus/mcp/tools/deploy_tasks_tool.rb +1 -10
  81. data/lib/pgbus/mcp/tools/workflow_cancel_tool.rb +23 -0
  82. data/lib/pgbus/mcp/tools/workflow_definitions_tool.rb +36 -0
  83. data/lib/pgbus/mcp/tools/workflow_detail_tool.rb +38 -0
  84. data/lib/pgbus/mcp/tools/workflow_resume_at_tool.rb +32 -0
  85. data/lib/pgbus/mcp/tools/workflow_resume_tool.rb +24 -0
  86. data/lib/pgbus/mcp/tools/workflow_run_now_tool.rb +23 -0
  87. data/lib/pgbus/mcp/tools/workflow_signal_tool.rb +77 -0
  88. data/lib/pgbus/mcp/tools/workflow_skip_step_tool.rb +23 -0
  89. data/lib/pgbus/mcp/tools/workflow_stats_tool.rb +42 -0
  90. data/lib/pgbus/mcp/tools/workflows_attention_tool.rb +42 -0
  91. data/lib/pgbus/mcp/tools/workflows_tool.rb +60 -0
  92. data/lib/pgbus/mcp/workflow_insights_payload.rb +15 -0
  93. data/lib/pgbus/mcp/workflow_payloads.rb +53 -0
  94. data/lib/pgbus/mcp/write_tool.rb +134 -0
  95. data/lib/pgbus/mcp.rb +15 -0
  96. data/lib/pgbus/metrics/backends/statsd.rb +6 -0
  97. data/lib/pgbus/metrics/subscriber.rb +14 -1
  98. data/lib/pgbus/metrics/workflow_metrics.rb +75 -0
  99. data/lib/pgbus/process/consumer.rb +2 -1
  100. data/lib/pgbus/process/dispatcher.rb +39 -3
  101. data/lib/pgbus/process/worker.rb +10 -1
  102. data/lib/pgbus/recurring/schedule.rb +1 -1
  103. data/lib/pgbus/streams/presence.rb +65 -36
  104. data/lib/pgbus/uniqueness.rb +23 -6
  105. data/lib/pgbus/version.rb +1 -1
  106. data/lib/pgbus/web/data_source/workflow_actions.rb +109 -0
  107. data/lib/pgbus/web/data_source/workflow_insights.rb +99 -0
  108. data/lib/pgbus/web/data_source/workflow_list.rb +291 -0
  109. data/lib/pgbus/web/data_source.rb +126 -15
  110. data/lib/pgbus/web/workflow_action_plan.rb +62 -0
  111. data/lib/pgbus/web/workflow_insights_queries.rb +250 -0
  112. data/lib/pgbus/web/workflow_insights_report.rb +171 -0
  113. data/lib/pgbus/web/workflow_payload.rb +36 -0
  114. data/lib/pgbus/web/workflow_query.rb +82 -0
  115. data/lib/pgbus/web/workflow_state.rb +89 -0
  116. data/lib/pgbus/web/workflow_timeline.rb +130 -0
  117. data/lib/pgbus/web/workflow_window.rb +51 -0
  118. data/lib/pgbus/workflow/batch_finished_job.rb +21 -0
  119. data/lib/pgbus/workflow/dsl.rb +105 -0
  120. data/lib/pgbus/workflow/error_capture.rb +63 -0
  121. data/lib/pgbus/workflow/exception_policy.rb +170 -0
  122. data/lib/pgbus/workflow/fan_out.rb +157 -0
  123. data/lib/pgbus/workflow/fan_out_definition.rb +41 -0
  124. data/lib/pgbus/workflow/flow_control.rb +94 -0
  125. data/lib/pgbus/workflow/instance.rb +183 -0
  126. data/lib/pgbus/workflow/outside_verbs.rb +138 -0
  127. data/lib/pgbus/workflow/payload.rb +53 -0
  128. data/lib/pgbus/workflow/registry.rb +53 -0
  129. data/lib/pgbus/workflow/removed_step.rb +14 -0
  130. data/lib/pgbus/workflow/runner.rb +218 -0
  131. data/lib/pgbus/workflow/signal_matcher.rb +53 -0
  132. data/lib/pgbus/workflow/signals.rb +132 -0
  133. data/lib/pgbus/workflow/states.rb +119 -0
  134. data/lib/pgbus/workflow/step_context.rb +58 -0
  135. data/lib/pgbus/workflow/step_definition.rb +133 -0
  136. data/lib/pgbus/workflow/step_execution.rb +242 -0
  137. data/lib/pgbus/workflow/step_job.rb +28 -0
  138. data/lib/pgbus/workflow/step_outcome.rb +151 -0
  139. data/lib/pgbus/workflow/steps.rb +103 -0
  140. data/lib/pgbus/workflow/sweep.rb +156 -0
  141. data/lib/pgbus/workflow/test_helpers.rb +152 -0
  142. data/lib/pgbus/workflow/wait_timeout.rb +94 -0
  143. data/lib/pgbus/workflow/waiting.rb +82 -0
  144. data/lib/pgbus/workflow.rb +183 -0
  145. data/sig/pgbus/configuration.rbs +23 -0
  146. metadata +92 -1
@@ -140,6 +140,11 @@ nl:
140
140
  throughput: Doorvoer
141
141
  throughput_detail: jobs/min over de laatste %{minutes} min
142
142
  throughput_unavailable: vereist jobstatistieken (rails g pgbus:add_job_stats)
143
+ workflows: Workflows
144
+ workflows_attention:
145
+ one: "%{count} heeft aandacht nodig"
146
+ other: "%{count} hebben aandacht nodig"
147
+ workflows_detail: lopend (%{paused} gepauzeerd)
143
148
  verdict:
144
149
  links:
145
150
  dlq: Dead letters
@@ -723,6 +728,7 @@ nl:
723
728
  processes: Processen
724
729
  queues: Wachtrijen
725
730
  recurring: Terugkerend
731
+ workflows: Workflows
726
732
  return_to_app: Terug naar app
727
733
  title: Pgbus Dashboard
728
734
  toggle_dark_mode: Donkere modus schakelen
@@ -1023,3 +1029,442 @@ nl:
1023
1029
  disabled: Taak uitgeschakeld
1024
1030
  enabled: Taak ingeschakeld
1025
1031
  failed: Kon taak niet omschakelen
1032
+ workflow_insights:
1033
+ back_to_classes: Alle workflowklassen
1034
+ back_to_runs: Alle workflowruns
1035
+ bad_request: 'Ongeldig verzoek: %{reason}'
1036
+ capped: 'Beperkt tot workflow_retention (%{retention}): oudere voltooide en geannuleerde runs worden verwijderd.'
1037
+ few_samples:
1038
+ one: n=%{count}, weinig metingen
1039
+ other: n=%{count}, weinig metingen
1040
+ index:
1041
+ description: 'Hoe elke workflowklasse het deed in %{window}: de runs die nu lopen, de runs die eindigden en hoe lang een run van begin tot eind duurt.'
1042
+ empty_hint: 'Definieer een subklasse van Pgbus::Workflow en start een run: YourWorkflow.start!(subject, **arguments).'
1043
+ empty_title: Er heeft nog geen workflowklasse gedraaid.
1044
+ headers:
1045
+ attention: Aandacht nodig
1046
+ cancelled: Geannuleerd
1047
+ duration_p50: Duur p50
1048
+ duration_p95: Duur p95
1049
+ finished: Voltooid
1050
+ ongoing: Lopend
1051
+ paused: Gepauzeerd
1052
+ workflow_class: Workflowklasse
1053
+ title: Workflow-inzicht
1054
+ links:
1055
+ at_step: "%{status} runs bij %{step}"
1056
+ attention: runs van %{workflow} die aandacht nodig hebben
1057
+ cancelled: runs van %{workflow} die in het venster zijn geannuleerd
1058
+ cancelled_bucket: runs geannuleerd in deze periode
1059
+ finished: runs van %{workflow} die in het venster zijn voltooid
1060
+ finished_bucket: runs voltooid in deze periode
1061
+ ongoing: lopende runs van %{workflow}
1062
+ paused: gepauzeerde runs van %{workflow}
1063
+ started: runs van %{workflow} die in het venster zijn gestart
1064
+ started_bucket: runs gestart in deze periode
1065
+ not_found:
1066
+ hint: Geen subklasse van Pgbus::Workflow en geen run heet %{workflow} (of het lezen mislukte, zie de log).
1067
+ title: Onbekende workflowklasse
1068
+ not_loaded: Definitie niet geladen
1069
+ not_loaded_hint: 'Deze klasse laadt niet meer in de app: de stappen komen uit de rijen van de runs, in de volgorde waarin de runs ze bereikten.'
1070
+ percentile: "%{name} %{value}"
1071
+ removed_in_flight:
1072
+ one: "%{count} run op verwijderde stap %{step}"
1073
+ other: "%{count} runs op verwijderde stap %{step}"
1074
+ show:
1075
+ by_revision:
1076
+ all_steps: Alle stappen
1077
+ caption: 'Dezelfde cijfers voor de laatste vijf app-revisies die in het venster een poging afrondden, nieuwste eerst: een achteruitgang na een deploy verschijnt als een rij.'
1078
+ empty: Geen poging in dit venster registreerde een app-revisie (config.app_revision).
1079
+ headers:
1080
+ attempts: Pogingen
1081
+ failed: Mislukt
1082
+ reattempted: Opnieuw geprobeerd
1083
+ revision: Revisie
1084
+ run_time: Looptijd
1085
+ skipped: Overgeslagen
1086
+ step: Stap
1087
+ seen_html: gezien %{from} tot %{to}
1088
+ title: Per app-revisie
1089
+ worse: gestegen van %{rate} op %{revision}
1090
+ charts:
1091
+ durations:
1092
+ between: "%{from}–%{to}"
1093
+ caption:
1094
+ one: Hoe lang de %{count} run die in het venster werd voltooid, duurde van begin tot eind.
1095
+ other: Hoe lang de %{count} runs die in het venster werden voltooid, duurden van begin tot eind.
1096
+ headers:
1097
+ range: Duur
1098
+ runs: Runs
1099
+ over: "%{from} of meer"
1100
+ title: Duur van begin tot eind
1101
+ under: minder dan %{to}
1102
+ series:
1103
+ cancelled: Geannuleerd
1104
+ finished: Voltooid
1105
+ runs: Runs
1106
+ started: Gestart
1107
+ throughput:
1108
+ caption: 'Gestarte, voltooide en geannuleerde runs per %{bucket} in %{window}: %{started} gestart, %{finished} voltooid, %{cancelled} geannuleerd.'
1109
+ headers:
1110
+ cancelled: Geannuleerd
1111
+ finished: Voltooid
1112
+ from: Vanaf
1113
+ started: Gestart
1114
+ title: Runs per %{bucket}
1115
+ description: 'In %{window}: waar de runs nu zijn, hoe elke stap presteert en waar runs stoppen.'
1116
+ funnel:
1117
+ caption:
1118
+ one: 'Van de %{count} run die in het venster startte: hoeveel elke stap bereikten en waar hij nu is.'
1119
+ other: 'Van de %{count} runs die in het venster startten: hoeveel elke stap bereikten en waar elk nu is.'
1120
+ empty: Er is in dit venster geen run gestart.
1121
+ headers:
1122
+ now_here: Nu bij deze stap
1123
+ reached: Bereikt
1124
+ share: Van gestart
1125
+ step: Stap
1126
+ here:
1127
+ cancelled:
1128
+ one: "%{count} geannuleerd"
1129
+ other: "%{count} geannuleerd"
1130
+ finished:
1131
+ one: "%{count} voltooid"
1132
+ other: "%{count} voltooid"
1133
+ paused:
1134
+ one: "%{count} gepauzeerd"
1135
+ other: "%{count} gepauzeerd"
1136
+ performing:
1137
+ one: "%{count} bezig"
1138
+ other: "%{count} bezig"
1139
+ ready:
1140
+ one: "%{count} gepland"
1141
+ other: "%{count} gepland"
1142
+ waiting:
1143
+ one: "%{count} wachtend"
1144
+ other: "%{count} wachtend"
1145
+ title: Trechter
1146
+ pipeline:
1147
+ attempts:
1148
+ one: "%{count} poging"
1149
+ other: "%{count} pogingen"
1150
+ caption: 'Elke stap op volgorde: de runs die er nu staan, en hoe de pogingen die in het venster eindigden, verliepen.'
1151
+ empty: 'Nog geen stappen: geen run van deze klasse heeft een stap in het venster en er loopt er geen.'
1152
+ failed: Mislukt
1153
+ kinds:
1154
+ fan_out: Fan-out
1155
+ removed: Verwijderd
1156
+ signal: Wacht op een signaal
1157
+ undeclared: Niet in de definitie
1158
+ live:
1159
+ paused: Gepauzeerd
1160
+ performing: Bezig
1161
+ ready: Gepland
1162
+ waiting: Wachtend
1163
+ now_label: Runs nu bij deze stap
1164
+ pickup: Oppakken
1165
+ reattempted: Opnieuw geprobeerd
1166
+ run_time: Looptijd
1167
+ skipped: Overgeslagen
1168
+ step_link: Lopende runs bij %{step}
1169
+ title: Pipeline
1170
+ window_label: Pogingen die in het venster eindigden
1171
+ summary:
1172
+ attention: Aandacht nodig
1173
+ cancelled: Geannuleerd
1174
+ duration: Duur p50
1175
+ finished: Voltooid
1176
+ ongoing: Lopend
1177
+ started: Gestart
1178
+ window_label: Tijdvenster
1179
+ windows:
1180
+ 1h: het afgelopen uur
1181
+ 24h: de afgelopen 24 uur
1182
+ 30d: de afgelopen 30 dagen
1183
+ 7d: de afgelopen 7 dagen
1184
+ workflows:
1185
+ actions:
1186
+ bulk_cancel: Alles annuleren
1187
+ bulk_resume: Alles hervatten
1188
+ cancel: Annuleren
1189
+ rerun: Herhalen
1190
+ resume: Hervatten
1191
+ resume_at: Hervatten bij stap
1192
+ run_now: Nu uitvoeren
1193
+ signal: Signaal versturen
1194
+ skip_step: Stap overslaan
1195
+ attempt: poging %{attempt}
1196
+ attention:
1197
+ at_step_html: bij %{step}
1198
+ back: "← Workflows"
1199
+ cancel_all:
1200
+ one: Annuleer alles (%{count})
1201
+ other: Annuleer alles (%{count})
1202
+ confirm:
1203
+ cancel:
1204
+ one: De run annuleren die bij %{step} vastzit?
1205
+ other: Alle %{count} runs annuleren die bij %{step} vastzitten?
1206
+ cancel_error:
1207
+ one: De run annuleren die bij %{step} vastzit door %{error}?
1208
+ other: Alle %{count} runs annuleren die bij %{step} vastzitten door %{error}?
1209
+ resume:
1210
+ one: De run hervatten die bij %{step} is gepauzeerd?
1211
+ other: Alle %{count} runs hervatten die bij %{step} zijn gepauzeerd?
1212
+ resume_error:
1213
+ one: De run hervatten die bij %{step} is gepauzeerd door %{error}?
1214
+ other: Alle %{count} runs hervatten die bij %{step} zijn gepauzeerd door %{error}?
1215
+ description: Lopende runs die op een persoon wachten, gegroepeerd naar wat ze stillegde. Is de oorzaak verholpen, handel dan de hele groep af.
1216
+ empty_hint: Geen lopende run is gepauzeerd, vastgelopen, achterstallig of wacht langer dan workflow_waiting_visibility_threshold.
1217
+ empty_title: Niets heeft aandacht nodig.
1218
+ first_seen_html: eerste %{time}
1219
+ headers:
1220
+ actions: Acties
1221
+ reason: Reden
1222
+ runs: Runs
1223
+ seen: Gezien
1224
+ workflow: Workflow
1225
+ last_seen_html: laatste %{time}
1226
+ only_class_html: Alleen %{workflow}.
1227
+ reasons:
1228
+ overdue: 'Achterstallig: aan de beurt, maar niet opgepakt'
1229
+ paused_error: Gepauzeerd door een fout
1230
+ paused_manual: Handmatig gepauzeerd
1231
+ stalled: 'Vastgelopen: de worker reageert niet meer'
1232
+ waiting_overdue: Wacht te lang
1233
+ resume_all:
1234
+ one: Hervat alles (%{count})
1235
+ other: Hervat alles (%{count})
1236
+ show_all: Alle klassen tonen
1237
+ show_runs: Runs tonen
1238
+ title: Aandacht nodig
1239
+ audit:
1240
+ by: "%{event} door %{actor}"
1241
+ empty: Geen gebeurtenissen vastgelegd.
1242
+ headers:
1243
+ what: Wat er gebeurde
1244
+ when: Wanneer
1245
+ title: Auditlog
1246
+ with_reason: "%{sentence}: %{reason}"
1247
+ with_step: "%{sentence} (%{step} #%{attempt})"
1248
+ bad_request: 'Ongeldig verzoek: %{reason}'
1249
+ confirm:
1250
+ cancel: Deze workflow annuleren? De openstaande stappen worden geannuleerd en de workflow draait niet opnieuw.
1251
+ rerun: Deze workflow opnieuw starten als nieuwe run, met hetzelfde onderwerp en dezelfde argumenten?
1252
+ resume: Deze workflow hervatten?
1253
+ resume_at: Deze workflow hervatten bij de gekozen stap? De openstaande stappen worden eerst geannuleerd.
1254
+ run_now: De geplande stap nu uitvoeren in plaats van te wachten?
1255
+ signal: Dit signaal naar de workflow versturen?
1256
+ skip_step: De stap overslaan waarop deze workflow wacht en doorgaan naar de volgende?
1257
+ events:
1258
+ cancelled: Geannuleerd
1259
+ fan_out_finished: Fan-out afgerond
1260
+ fan_out_opened: Fan-out geopend
1261
+ finished: Afgerond
1262
+ late_completion_ignored: Late voltooiing genegeerd
1263
+ paused: Gepauzeerd
1264
+ rerun: Herhaald
1265
+ rescheduled: Opnieuw gepland
1266
+ resumed: Hervat
1267
+ run_now: Nu uitvoeren
1268
+ signal_claimed: Signaal geclaimd
1269
+ signal_received: Signaal ontvangen
1270
+ stall_detected: Vastloper gedetecteerd
1271
+ started: Gestart
1272
+ step_completed: Stap voltooid
1273
+ step_failed: Stap mislukt
1274
+ step_reattempted: Stap opnieuw geprobeerd
1275
+ step_scheduled: Stap gepland
1276
+ step_skipped: Stap overgeslagen
1277
+ step_started: Stap gestart
1278
+ step_waiting: Stap wacht
1279
+ wait_timed_out: Wachttijd verlopen
1280
+ filters:
1281
+ apply: Filters toepassen
1282
+ clear: Wissen
1283
+ created_from: Aangemaakt vanaf
1284
+ created_to: Aangemaakt tot
1285
+ ended_from: Beëindigd vanaf
1286
+ ended_to: Beëindigd tot
1287
+ error_class: Foutklasse
1288
+ step: Huidige stap
1289
+ subject_id: Onderwerp-ID
1290
+ subject_type: Onderwerptype
1291
+ workflow_class: Workflow-klasse
1292
+ workflow_id: Workflow-ID
1293
+ flash:
1294
+ bad_group: Die groep is ongeldig.
1295
+ bulk_cancel:
1296
+ one: "%{count} geannuleerd."
1297
+ other: "%{count} geannuleerd."
1298
+ bulk_cancel_skipped: "%{count} geannuleerd; %{skipped} waren al verder."
1299
+ bulk_failed: "%{count} konden niet worden gewijzigd: %{reason}"
1300
+ bulk_more: 'Er wachten mogelijk meer runs: druk nogmaals voor de volgende %{cap}.'
1301
+ bulk_resume:
1302
+ one: "%{count} hervat."
1303
+ other: "%{count} hervat."
1304
+ bulk_resume_skipped: "%{count} hervat; %{skipped} waren al verder."
1305
+ cancel: Workflow geannuleerd.
1306
+ choose_step: Kies een stap om te hervatten.
1307
+ failed:
1308
+ not_allowed: 'Niet uitgevoerd: de run is nu %{status}.'
1309
+ not_found: Die workflow bestaat niet meer.
1310
+ other: "%{action} mislukt: %{reason}"
1311
+ payload_not_object: 'Niet verstuurd: de payload is geen JSON-object.'
1312
+ payload_too_large: 'Niet verstuurd: de payload is groter dan %{limit} bytes.'
1313
+ rerun: Nieuwe run gestart.
1314
+ resume: Workflow hervat.
1315
+ resume_at: Workflow hervat bij %{step}.
1316
+ run_now: De geplande stap draait nu.
1317
+ signal: Signaal %{name} verstuurd.
1318
+ signal_duplicate: Signaal %{name} was al afgeleverd met deze sleutel; er is niets nieuws verstuurd.
1319
+ signal_name_missing: 'Niet verstuurd: het signaal heeft een naam nodig.'
1320
+ skip_step: Stap overgeslagen.
1321
+ headers:
1322
+ current_step: Huidige stap
1323
+ last_activity: Laatste activiteit
1324
+ started: Gestart
1325
+ status: Status
1326
+ subject: Onderwerp
1327
+ workflow: Workflow
1328
+ index:
1329
+ attention_link:
1330
+ one: Aandacht nodig (%{count})
1331
+ other: Aandacht nodig (%{count})
1332
+ description: 'Duurzame runs met meerdere stappen: wat elke run doet en wat er hierna gebeurt.'
1333
+ empty_hint: Kies een andere status of wis de filters. Een run start met YourWorkflow.start!(subject, **arguments).
1334
+ empty_title: Geen workflows gevonden.
1335
+ insights_link: Inzicht per klasse
1336
+ status_label: Filteren op status
1337
+ title: Workflows
1338
+ next:
1339
+ cancelled_html: Geannuleerd %{ago}.
1340
+ due_html: 'Klaar: %{step} was %{ago} aan de beurt en wacht op een worker.'
1341
+ finished_html: Afgerond %{ago}.
1342
+ overdue_html: 'Achterstallig: %{step} was %{ago} aan de beurt; de sweep verstuurt hem opnieuw.'
1343
+ paused_error_html: 'Gepauzeerd bij %{step}: %{error} — hervat of annuleer.'
1344
+ paused_manual_html: Gepauzeerd bij %{step} — hervat of annuleer.
1345
+ performing_attempt_html: "%{step} wordt uitgevoerd (poging %{attempt})."
1346
+ performing_html: "%{step} wordt uitgevoerd."
1347
+ ready_html: 'Klaar: %{step} draait als volgende.'
1348
+ scheduled_html: 'Gepland: %{step} draait %{time}.'
1349
+ unknown_html: 'Status: %{status}.'
1350
+ waiting_batch_html: Wacht op groep %{batch} (%{done} van %{total} taken klaar).
1351
+ waiting_signal_html: Wacht op signaal %{signal}, gestart %{ago}.
1352
+ waiting_signal_late_html: Wacht op signaal %{signal}, gestart %{ago} (te laat sinds %{late}). De volgende melding over de vertraging gaat %{time} uit.
1353
+ waiting_signal_notify_html: Wacht op signaal %{signal}, gestart %{ago}. Een melding over de vertraging gaat %{time} uit, en het wachten gaat door.
1354
+ waiting_signal_timeout_html: Wacht op signaal %{signal}, gestart %{ago}. De wachttijd verloopt %{time}.
1355
+ waiting_step_html: Wacht op %{step}.
1356
+ not_found:
1357
+ hint: Hij is mogelijk voltooid en verwijderd na workflow_retention, of de database kon niet worden gelezen (zie het log).
1358
+ title: Workflow niet gevonden
1359
+ outcomes:
1360
+ cancelled: geannuleerd
1361
+ completed: voltooid
1362
+ finished_early: rondde de run vroegtijdig af
1363
+ paused: pauzeerde de run
1364
+ reattempted: opnieuw geprobeerd
1365
+ skipped: overgeslagen
1366
+ resume:
1367
+ carry_on: 'Hervatten: verdergaan met %{step}'
1368
+ continue: 'Hervatten: doorgaan met %{step}'
1369
+ finish: 'Hervatten: de run afronden'
1370
+ resend: 'Hervatten: %{step} opnieuw versturen'
1371
+ retry: 'Hervatten: %{step} opnieuw proberen'
1372
+ rewait: 'Hervatten: opnieuw wachten op %{step}'
1373
+ show:
1374
+ actions: Acties
1375
+ arguments: Argumenten
1376
+ back: "← Workflows"
1377
+ cancelled_at: Geannuleerd
1378
+ class_missing: "%{workflow_class} is niet geladen in dit proces: de run kan nog wel worden geannuleerd, maar niet hervat."
1379
+ definition_outdated: 'Deze run is gestart met een oudere definitie van %{workflow_class}: de stappen zijn sindsdien gewijzigd.'
1380
+ details: Details
1381
+ finished_at: Afgerond
1382
+ no_arguments: Deze run heeft geen argumenten.
1383
+ paused_at: Gepauzeerd
1384
+ reason_hint: Wordt vastgelegd in het auditlog, naast wie het deed.
1385
+ reason_label: Reden (optioneel)
1386
+ rerun_of: Herhaling van
1387
+ reruns: Herhaald als
1388
+ resume_at_label: Hervatten bij stap
1389
+ signal:
1390
+ hint: Een stap die erop wacht, gaat direct verder; anders blijft het signaal in afwachting tot een stap het oppakt.
1391
+ name: Signaalnaam
1392
+ payload: Payload (JSON)
1393
+ send: Signaal versturen
1394
+ title: Een signaal versturen
1395
+ signal_statuses:
1396
+ claimed: Geclaimd
1397
+ consumed: Verwerkt
1398
+ pending: In afwachting
1399
+ signals:
1400
+ empty: Geen signalen afgeleverd aan deze run.
1401
+ headers:
1402
+ claimed: Geclaimd
1403
+ consumed: Verwerkt
1404
+ idempotency_key: Idempotentiesleutel
1405
+ name: Signaal
1406
+ received: Ontvangen
1407
+ status: Status
1408
+ payload: Payload
1409
+ title: Signalen
1410
+ statuses:
1411
+ cancelled: Geannuleerd
1412
+ finished: Afgerond
1413
+ gone: verdwenen
1414
+ paused: Gepauzeerd
1415
+ performing: Wordt uitgevoerd
1416
+ ready: Klaar
1417
+ scheduled: Gepland
1418
+ waiting: Wachtend
1419
+ step_statuses:
1420
+ cancelled: Geannuleerd
1421
+ completed: Voltooid
1422
+ failed: Mislukt
1423
+ in_progress: Actief
1424
+ scheduled: Gepland
1425
+ skipped: Overgeslagen
1426
+ waiting: Wachtend
1427
+ steps:
1428
+ batch: groep %{batch}
1429
+ caused_by: Veroorzaakt door %{error}
1430
+ empty: Nog geen pogingen.
1431
+ headers:
1432
+ finished: Afgerond
1433
+ queued: In wachtrij
1434
+ ran: Uitgevoerd
1435
+ scheduled: Gepland
1436
+ started: Gestart
1437
+ status: Status
1438
+ step: Stap
1439
+ waited: Gewacht
1440
+ worker: Worker
1441
+ revision: revisie %{revision}
1442
+ show_backtrace: Backtrace tonen
1443
+ title: Pogingen
1444
+ waiting_for: daarna %{duration} wachten
1445
+ waits_for_html: wacht op %{signal}
1446
+ tabs:
1447
+ all: Alle
1448
+ cancelled: Geannuleerd
1449
+ finished: Afgerond
1450
+ ongoing: Lopend
1451
+ paused: Gepauzeerd
1452
+ performing: Wordt uitgevoerd
1453
+ ready: Klaar
1454
+ waiting: Wachtend
1455
+ timeline:
1456
+ caption: 'Elke poging, oudste bovenaan: gewacht (de wachttijd), in wachtrij (aan de beurt, nog niet opgepakt), uitgevoerd (gekleurd naar hoe het afliep) en wachtend (op een signaal of de groep), met de pauzes op een eigen rij. De pogingentabel hieronder toont dezelfde duren. Een stippellijn markeert elke keer dat een wachttijd zijn deadline passeerde.'
1457
+ empty: Nog geen pogingen.
1458
+ paused_period_html: Gepauzeerd op %{from} gedurende %{duration}
1459
+ paused_row: Gepauzeerd
1460
+ series:
1461
+ paused: Gepauzeerd
1462
+ queued: In wachtrij
1463
+ ran_cancelled: Uitgevoerd, geannuleerd
1464
+ ran_failed: Uitgevoerd, mislukt
1465
+ ran_ok: Uitgevoerd
1466
+ ran_open: Actief
1467
+ waited: Gewacht
1468
+ waiting: Wachtend
1469
+ title: Tijdlijn
1470
+ wait_timeout_html: 'De wachttijd van %{step} verstreek op %{time} (on_timeout: %{action}).'