Execuções agendadas
Configurando os quatro tipos de programação—CRON / INTERVAL / ONE TIME / DELAYED COMPLETION—com o manuseio do fuso horário e gatilhos de workflow encadeados.
O programador de Braidrun suporta quatro tipos de gatilho: CRON (uma expressão recorrente), INTERVAL (um intervalo fixo), ONE TIME (um-off) e DELAYED COMPLETION (acorrentado de um workflow). Todos os horários são gerenciados centralmente pelo serviço de agendamento da plataforma e continuam disparando em seus próprios horários após um reinício do serviço.
Conceito: cronograma e execução
Cada gatilho cria uma execução. Uma programação é um objeto de longa duração, enquanto uma execução é um registro de execução única. Um escalonamento pode carregar um conjunto estático de entradas (pares de valor chave) que servem como variáveis de entrada da execução em cada gatilho.
Cada agenda armazena seu próprio fuso horário (um nome IANA como Ásia/Shanghai), e o servidor calcula os tempos de gatilho contra ele. Criando através da interface web padrão para o fuso horário atual de sua conta; ao criar através da API, sempre passe o fuso horário explicitamente.
Os Quatro tipos de programação
| Tipo | Campos-chave | Comportamento |
|---|---|---|
CRON | cronExpression, timezone | Incêndios recorrentemente por uma expressão de 5 campos de cron, granularidade até minuto |
INTERVAL | interval, startTime, endTime | Dispara cada número fixo de milissegundos, com tempos de início e fim opcionais |
ONE_TIME | startTime | Incêndios uma vez na hora definida, em seguida, auto-desativações |
DELAYED_COMPLETION | triggerWorkflowId, delaySeconds | Fires N segundos após um workflow upstream terminar com sucesso, para cadeias de workflow |
Os quatro tipos compartilham um conjunto comum de campos: habilitado (se ativo), maxRuns (máxima contagem de gatilho) e entradas (variáveis de entrada estáticas). Quando o endTime passou ou a contagem de gatilho atinge o maxRuns, o cronograma é desativado automaticamente, mas não excluído.
Criar uma agenda CRON
curl -X POST https://braidrun.com/api/schedules \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"workflowId": "<workflow-id>",
"name": "Daily 9 AM report",
"scheduleType": "CRON",
"cronExpression": "0 9 * * *",
"timezone": "Asia/Shanghai",
"inputs": {
"environment": "production"
}
}'A expressão cron é 5-campo: minuto hora dia-de-mês mês dia-de-semana. Ele suporta *, listas (1,3,5), intervalos (1-5), e passos (*/6); Domingo pode ser escrito como 0 ou 7. Os tempos de desencadeamento são calculados com base no fuso horário da programação.
| expressão | significado |
|---|---|
0 9 * * * | Todos os dias 09:00 |
0 9 * * 1-5 | Dias úteis 09:00 |
0 */6 * * * | a cada 6 horas |
30 14 1 * * | 14h30 do dia 1º de cada mês |
Em uma implantação multi-instância, um bloqueio distribuído deduplica cada ponto de gatilho: apenas um nó realmente inicia a execução, então adicionar nós não causa gatilhos duplicados.
Interval: intervalo fixo
O corpo de solicitação vai para POST /api/agendas assim como CRON, apenas os campos diferem:
{
"workflowId": "<workflow-id>",
"name": "每 5 分钟同步一次",
"scheduleType": "INTERVAL",
"interval": 300000,
"startTime": 1785542400000,
"endTime": 1788220800000,
"maxRuns": 500
}interval— O intervalo de desencadeamento em milissegundos; valores abaixo de 1 segundo são elevados para 1 segundostartTime/endTime— Opcional, um timestamp epoch-millisegundo; se o startTime for definido, ele espera até esse momento antes de começar, e ele se auto-desativa uma vez que o endTime passoumaxRuns— Opcional; desativa automaticamente após disparar tantas vezes
Tempo ÚNICO: único
{
"workflowId": "<workflow-id>",
"name": "上线前补跑一次",
"scheduleType": "ONE_TIME",
"startTime": 1785546000000
}startTime é um timestamp epoch-millisegundo. Depois de disparar uma vez ao mesmo tempo, o agendamento desativa automaticamente; em uma implantação multi-instância, um bloqueio único garante que ele dispara apenas uma vez.
Agendamento acorrentado (DELAYED COMPLETION)
DELAYED COMPLETION encadeia dois workflows: cada workflow a montante A termina com o status COMPLETED, espera atrasoSegundos segundos e, em seguida, ativa automaticamente o workflow B ligado a este cronograma. Uso típico: execute o workflow do relatório automaticamente 10 minutos após o workflow de pull de dados terminar.
{
"workflowId": "<workflow-B-id>",
"name": "A 完成 10 分钟后跑 B",
"scheduleType": "DELAYED_COMPLETION",
"triggerWorkflowId": "<workflow-A-id>",
"delaySeconds": 600,
"maxRuns": 10
}- Conta se A foi acionado manualmente, pelo Webhook, por agendamento ou por uma cadeia – desde que termine com sucesso; as execuções falhadas ou canceladas não desencadeiam o a jusante
delaySeconds— Necessário, 0 a 30 dias (2592000 segundos); 0 significa gatilho imediatamente após a conclusãomaxRuns— Omitir para ilimitado; 1 cadeias apenas uma vez; N cadeias no máximo N vezes, em seguida, auto- desactivaçõestriggerWorkflowId— Ele não pode igualar workflowId (self-triggering seria loop para sempre), e o criador precisa de permissão de visualização no workflow upstream- Os gatilhos atrasados pendentes são armazenados de forma duradoura e sobrevivem a um serviço de reiniciar ou rolar liberação: eles disparam como de costume quando chega a hora
Gerenciando agendamentos
| Ponto final | Objecto |
|---|---|
GET /api/schedules | Listar todos os escalonamentos visíveis |
GET /api/schedules/{id} | Ver um único |
PUT /api/schedules/{id} | Atualizar; os campos são os mesmos que para criação, e mudar o tipo revalida em relação ao novo tipo |
DELETE /api/schedules/{id} | Apagar |
POST /api/schedules/{id}/toggle | Activar / desactivar |
POST /api/schedules/{id}/run | Executar uma vez imediatamente, ignorando o cronograma |
GET /api/schedules/{id}/history | Histórico do gatilho |
GET /api/schedules/workflows/{workflowId} | Listar todos os escalonamentos sob um determinado workflow |
# 立即执行一次(返回这次 execution)
curl -X POST https://braidrun.com/api/schedules/<schedule-id>/run \
-H "Authorization: Bearer <token>"
# 停用(enabled=true 则启用;不带参数则在两者间切换)
curl -X POST "https://braidrun.com/api/schedules/<schedule-id>/toggle?enabled=false" \
-H "Authorization: Bearer <token>"
# 最近 50 条触发历史
curl "https://braidrun.com/api/schedules/<schedule-id>/history?limit=50" \
-H "Authorization: Bearer <token>"alternância ativada pode ir em um parâmetro de consulta ou no corpo JSON; se nenhum for passado, ele gira entre habilitado e desativado. Cada registro de histórico inclui o status, a bandeira de sucesso, e os tempos de início e fim; limite os padrões para 50, max 500.
Entradas compartilhadas e predefinições de parâmetros
Além de definir entradas diretamente em um cronograma, você pode criar "parametros predefinidos" para um workflow: execute o mesmo workflow sob diferentes predefinições para diferentes configurações.
# 创建一个参数预设
curl -X POST https://braidrun.com/api/workflows/<wf>/presets \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "生产环境",
"description": "生产环境参数",
"variables": {
"environment": "production",
"debug_mode": "false",
"max_retries": "3"
}
}'
# 用预设触发执行
curl -X POST https://braidrun.com/api/workflows/<wf>/presets/<id>/execute \
-H "Authorization: Bearer <token>"Simultaneidade em lote de vários workflows
Selecione vários itens da lista de workflow e clique em “Execução Simultânea” para iniciar um lote de execuções por vez.
- Cada workflow selecionado criará seu próprio registro de execução
- A execução que exceder maxConcurrency entrará primeiro em PENDING
- Depois que a execução anterior for concluída, a próxima na fila será automaticamente convertida para RUNNING
0Não indica limite e inicia o lote inteiro ao mesmo tempo
A simultaneidade no nível superior do workflow controla a simultaneidade da mesma camada no DAG interno de um único workflow;
Comportamento após reinicialização do serviço
- Execução acionada: O padrão é INTERROMPIDO, a menos que a continuação automática esteja habilitada (consulteReiniciar e retomar automaticamente)
- CRON / INTERVAL / ONE TIME agendas que não vieram devido: fogo como de costume após um reinício
- Pendente DELAYED COMPLETION adiados gatilhos: já persistiu, eles continuam esperando e disparar a tempo após um reinício
- Pontos de gatilho perdidos durante o tempo de inatividade: sem maquiagem (para evitar o risco de escrita dupla)