Workflow

workflows/README.vi.md định nghĩa nó trong một câu:

Một workflow là một chuỗi operator ghép sẵn: danh sách bậc theo thứ tự, mỗi bậc là danh sách nhánh chạy song song (tối đa ba), kèm vòng lặp quay về một bậc trước và preset cho Yêu cầu của từng nhánh.

Chín file trong workflows/ là tham chiếu, không phải toàn bộ số chuỗi có thể có: chúng là những hình dạng lặp lại đủ nhiều để đáng ghi xuống.

Cửa vào dùng chúng ra sao

Cửa vào đọc when của mọi ví dụ. Khớp trọn thì chạy đúng như đã ghi; preset điền vào request.json, và người chỉ bị hỏi những field không có mặc định. Khi chỉ khớp một phần, hoặc bài toán nghiệp vụ khó hơn mọi when mô tả, cửa vào tự ghép chuỗi của mình từ bảng ## Next của các operator và routing.json thay vì bẻ một ví dụ gần đúng cho vừa, theo đúng luật mà scripts/validate-workflows.mjs ép lên các file này:

  • mỗi nhánh gọi tên một operator có thật và chỉ preset field mà operator đó khai;
  • mọi field Requirements không có Default thì được preset hoặc nằm trong asks của nhánh, để chuỗi nói trước những field nào cửa vào lấy từ phạm vi nhiệm vụ hay hỏi người trước khi nhánh đó chạy;
  • mọi Input bắt buộc của một nhánh phải do một bậc trước sinh ra;
  • các nhánh trong cùng một bậc không dùng chung alias ghi — hai operator không được ghi cùng một checkout hay cùng một gốc cùng lúc, còn frontend.surface.audit được fan-out theo ma trận vì nó không ghi gì;
  • một vòng lặp quay về bậc trước và mang maxRounds;
  • chuỗi nào ghi source frontend dưới mode: apply thì chạy frontend.surface.audituat.verify giữa lần ghi đó và git.publish của nó;
  • chuỗi kết thúc ở git.publish, release.deploy hoặc user.

Chuỗi tự ghép mà còn dùng lại được thì thành một file mới ở đây, kèm when của nó.

Mọi chuỗi giao hàng đều là một dòng dài

Chuỗi ghi một bề mặt không kết thúc khi source biên dịch được. Giữa lần ghi và lần publish có hai bằng chứng không thứ gì khác trong cây cấp được: frontend.surface.audit render bề mặt và giữ lại ảnh chụp, còn uat.verify đi hành trình của một người thật xuyên qua nó. quality.verify nằm giữa và trả lời câu hỏi khác — build, lint, type, coverage — và cổng xanh không nhận ra một trang đọc lên thấy sai. Nên mọi ví dụ có apply source frontend đều kết thúc như nhau:

frontend.source.apply → workspace.bind (role fe, runtimeNeed consume) → frontend.surface.audit → quality.verify → uat.verify → git.publish

workspace.bind lần hai có ở đó vì head đã dịch: bề mặt được phục vụ, audit và đi thử là bề mặt mà lần ghi vừa sinh ra. uat.verify cần requestedBy, featureflow, nên mọi chuỗi mang nó đều khai chúng dưới asks. backend-feature là chuỗi giao hàng duy nhất không có hai bằng chứng ấy, và when của nó nói rõ vì sao: nó không ghi bề mặt nào, còn uat.verify cần đầu vào frontend-surface-audit và một route fe đã bind.

Một chuỗi cũng có thể chứng minh một bản giao ở nơi khác nơi nó được viết. staging-uat không ghi gì — frontend.source.apply của nó chạy dưới mode: dry, nên luật dòng dài không với tới — và nó preset env cho lượt audit cùng lượt chạy. Trường ấy chọn ra một stack của bản cài: entry trong sổ đăng ký runtime, file tài khoản, đích của seed và bản tham chiếu đã duyệt. Một môi trường không ứng với stack nào dưới .stacks/ bị từ chối ngay ở cổng chứ không được mặc định hoá, và chuỗi kết thúc ở user, vì hai biên nhận trong tay một con người mới là kết quả; đưa lên một môi trường vẫn là việc của release.

Hình dạng file

schemaVersion là 9. id bằng tên file. whenenvi. chain là mảng các bậc, mỗi bậc là mảng { operator, requirements?, asks?: [field], fanout?: "matrix", maxParallel?: 1..3 }. loops là mảng { from, to, when, maxRounds }. endsuser hoặc một operator của bậc cuối.

Nhánh và phiên

Không có gì được thiết kế, ghi hay commit bên ngoài một phiên: state.jsonstep-1/parallel-1/request/request.json đã có, và validate-request xanh trên chúng, trước khi bất kỳ file nào ngoài thư mục phiên bị đọc để sửa hay bị ghi. Mọi nhánh có ghi source đều commit trên session/<sessionId>; git.publish merge nhánh đó vào, và từ chối một nhánh phiên mà phiên của nó không có biên nhận source-application lẫn ảnh chụp audit (SESSION_MISSING). Một nhánh bị chặn vào lại như một bậc mới, và một vòng lặp tính vào maxRounds của chính operator đó.

Chín ví dụ, với chuỗi được dựng ra theo từng bậc, nằm ở Tham chiếu → Workflow.