{"ref":"artifact:cap-java-cds-feature-flow","page":"/artifacts/cap-java-cds-feature-flow","json":"/artifacts/cap-java-cds-feature-flow.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"cap-java-cds-feature-flow","name":"com.sap.cds:cds-feature-flow","artifact_type":"package","ecosystem":"cap","domain":"process-and-workflow","origin_ring":"sap-official","description":{"one_line":"Adds declarative status-transition flows to CAP Java: entry and target states on a bound action, validated and applied by a generic handler that answers 409 Conflict from a wrong state.","short":"Declarative status-transition flows on bound actions in CAP Java","what_it_solves":"Adds status-transition flows to a CAP Java service, part of the [cds-services-bom](artifact:cap-java-cds-services-bom) release line. In CAP Node.js support for flows is built in and available out of the box; for CAP Java it is this feature, added with runtime scope in srv/pom.xml, that provides it. A flow is modelled with three annotations on a bound action: @flow.status marks the entity's status element, and @from and @to declare the entry and target states of a transition; a generic handler then rejects an action whose entity is not in one of the states named in @from with a 409 Conflict, and moves the status to the state named in @to once the action runs. SAP Fiori elements UIs pick this up automatically and enable, disable or refresh the transition buttons accordingly."},"links":{"homepage":"https://central.sonatype.com/artifact/com.sap.cds/cds-feature-flow","docs":"https://cap.cloud.sap/docs/guides/services/status-flows"},"identity":{"license":"SAP DEVELOPER LICENSE AGREEMENT for CAP"},"source_available":false,"compat":{"runtimes":["java"]},"flavors":[{"key":"java","source":{"url":"https://cap.cloud.sap/docs/guides/services/status-flows","title":"Status-Transition Flows","checked":"2026-09-19","quote":"For CAP Java, it is provided by the feature"}}],"drafted_with_ai":true,"provides":[{"capability":"capability:status-flows","what_it_does":"Adds the CAP Java implementation of status-transition flows: a generic handler validates the entity's current state against a bound action's entry states before the action runs, and updates the status to the target state afterwards.","sources":[{"url":"https://cap.cloud.sap/docs/guides/services/status-flows","title":"Status-Transition Flows","checked":"2026-09-19","quote":"In CAP Node.js support for flows is built-in and available out of the box."},{"url":"https://cap.cloud.sap/docs/guides/services/status-flows","title":"Status-Transition Flows","checked":"2026-09-19","quote":"The need for custom code is greatly reduced when using status-transition flows, as CAP automatically provides generic handlers for the common flow operations: validation of entry states before action execution, and updating the status to the target state after action execution."}]}],"history":[{"date":"2026-09-19","field":"provides.what_it_does","from":null,"to":"Adds the CAP Java implementation of status-transition flows: a generic handler validates the entity's current state against a bound action's entry states before the action runs, and updates the status to the target state afterwards.","reason":"New CAP Java provider discovered through official CAP documentation. Facts describe the pinned source revision, not verified deployment compatibility."}],"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-19"}},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"unknown","evidence":"no contributor data"},{"label":"Repository","tier":"unknown","evidence":"no repository data"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"unknown","evidence":"no release dates"},{"label":"Maintainer's CI","tier":"unknown","evidence":"no repository data"}],"practice":[{"label":"Tests","tier":"unknown","evidence":"not crawled"},{"label":"Docs","tier":"unknown","evidence":"docs link declared, tree not read"},{"label":"Changelog","tier":"unknown","evidence":"not crawled"}],"reach":[{"value":null,"unit":"installs/week"},{"value":null,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","npm":"not published under this name"},"edges":{"maintainers":[],"contributors":[],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}