How-to: Validate Conditional Required Field (Rego)
Require aoi only for spatial execution mode.
1. Define the inputs
inputs:
execution-mode:
type: string
aoi:
type:
- https://raw.githubusercontent.com/eoap/schemas/main/geojson.yaml#Polygon
- "null"
2. Add Rego check
hints:
- class: eoap:RegoPolicyHint
module: |
package workflow
deny[msg] {
input["execution-mode"] == "spatial"
input["aoi"] == null
msg := "aoi is required when execution-mode is spatial"
}
queries:
- data.workflow.deny[_]
3. Validate with sample values
Run:
assertions-mate workflow.cwl --inputs inputs-valid.yaml
Ready-to-run example in this repository
examples/conditional-required-validation/workflow.cwlexamples/conditional-required-validation/inputs-valid.yamlexamples/conditional-required-validation/inputs-invalid.yaml