Skip to content

Latest commit

 

History

History
265 lines (208 loc) · 20.3 KB

features.md

File metadata and controls

265 lines (208 loc) · 20.3 KB
status
released
<script setup> import { h } from 'vue' const X = () => h('span', { class: 'ga', title: 'Available' }, [ '✓' ]) const Na = () => h('i', { class: 'na', title: 'not applicable' }, [ 'n/a' ]) const D = () => h('i', { class: 'prog', title: 'in progress' }, [ 'in prog.' ]) const O = () => h('i', { class: 'plan', title: 'planned' }, [ 'planned' ]) const C = () => h('i', { class: 'contrib', title: 'contributions welcome' }, [ 'contrib?' ]) const Ac = () => h('i', { class: 'contrib', title: 'active contributions' }, [ 'contrib' ]) </script> <style scoped> .ga { color: var(--vp-c-green-2);} .na { color: gray; font-size:90%; } .prog { color: var(--vp-c-green-3); font-size:90%; font-weight:500; } .plan { color: gray; font-size:90% } .contrib { color: gray; font-size:90% } </style>

Features Overview

Following is an index of the features currently covered by CAP, with status and availability information. In addition, we also list features, which are planned or already in development, but not yet generally available, to give you an idea about our roadmap.

Legend

Tag Explanation
generally and publicly available today
not applicable for this combination
in progress; likely to become available near-term
we might pick that up for development soon
not scheduled for development by us so far
already active contribution

CLI & Tools Support

CLI commands
Jump-start cds-based projects cds init <project>
Add a feature to an existing project cds add <facets>
Add models from external sources cds import <api>
Compile cds models to different outputs cds compile <models>
Run your services in local server cds serve <services>
Run and restart on file changes cds watch
Read-eval-event loop cds repl
Inspect effective configuration cds env
Prepare for deployment cds build
Deploy to databases or cloud cds deploy
Login to multitenant SaaS application cds login <app-url>
Upgrade SaaS tenant(s) to latest versions cds upgrade
Logout from multitenant SaaS application cds logout
Subscribe a tenant to a SaaS application cds subscribe <tenant>
Unsubscribe a tenant from a SaaS application cds unsubscribe <tenant>
Pull the base model for a SaaS extension cds pull
Push a SaaS extension cds push

Run cds help <command> to find details about an individual command. Use cds version to check the version that you've installed. To know what is the latest version, see the Release Notes for CAP.


Editors/IDE Support Application Studio VS Code
CDS Syntax Highlighting
CDS Code Completion
CDS Prettifier
Advanced Debug/Run Tools
Project Explorer
...

CDS Language & Compiler

CDS
Entity-Relationship Modeling
Custom-defined Types
Views / Projections
Associations & Compositions
AnnotationsCommon, OData
Aspects
Services...
— w/ Redirected Associations
— w/ Auto-exposed Targets
— w/ Actions & Functions
— w/ Events
Managed Compositions of Aspects
Structured Elements
Nested Projections
Calculated Elements
Managed n:m Associations
Pluggable CDS Linter
CDS Linter

Providing Services

Core Framework Features CDS Node.js Java
Automatically Serving CRUD Requests
Deep-Read/Write Structured Documents
Automatic Input Validation
Auto-filled Primary Keys
Implicit Paging
Implicit Sorting
Access Control
Arrayed Elements
Streaming & Media Types
Conflict Detection through ETags
Authentication via JWT
Basic Authentication

Enterprise Features CDS Node.js Java
Authorization
Analytics in Fiori
Localization/i18n
Localized Data
Temporal Data
Managed Data
Dynamic Extensibility
Monitoring / Logging [Node.js|Java]
Audit Logging [Node.js|Java]

Inbound Protocol Support CDS 1 Node.js Java
REST/OpenAPI
OData V2 2 3
OData V4
OData V4 for APIs
GraphQL4 5 6

1 Export CDS models to ...
2 To support customers with existing OData V2 UIs
3 Through V2 proxy
4 Could be a good case for 3rd-party contribution
5 For Node.js try out the GraphQL Adapter
6 For Java try out the provided sample code.

Consuming Services

Service Consumption APIs Node.js Java
Uniform Consumption APIs → Hexagonal Architecture
Dynamic Querying
Programmatic Delegation
Generic Delegation
Resilience (retry, circuit breaking, ...)

Outbound Protocol Support CDS 1 Node.js Java
REST/OpenAPI
OData V2
OData V4
GraphQL2

1 Import API to CSN
2 Could be a good case for 3rd-party contribution

Learn more about supported features for consuming services.{.learn-more}

Events / Messaging

CDS Node.js Java
Declared Events in CDS
Mock Broker (to speed up local dev) [Node.js|Java]
SAP Cloud Application Event Hub
plugin

plugin
SAP Event Mesh
Composite Messaging (routing by configuration) [Node.js|Java]
Import AsyncAPI
Export AsyncAPI

Database Support

CDS/deploy Node.js Java
SAP HANA
SAP HANA Cloud
PostgreSQL
SQLite 1
H2 1
MongoDB out of the box
Pluggable drivers architecture
Out-of-the-box support for other databases?

1 To speed up development. Not for productive use!

Note: You can already integrate your database of choice in a project or a contribution level. The last two are meant to further facilitate this by out-of-the-box features in CAP.

UIs/Frontend Support

CDS Node.js Java
Serving Fiori UIs
Fiori Annotations in CDS
Advanced Value Help
Draft Support
Draft for Localized Data
Support for Fiori Analytics
Support for other UI technologies, for example Vue.js 1

1 through standard REST/AJAX

Platform Support & Integration

Node.js Java
Deploy to/run on SAP BTP, Cloud Foundry environment
Deploy to/run on Kubernetes1
Deploy to/run on Kyma
SaaS on-/offboarding
Multitenancy
Health checks

1 Available on plain Kubernetes level → see blog post by Thomas Jung

Extensibility

Tenant-Specific Extensions
Adding Extension Fields
Adding new Entities
Adding new Relationships
Adding/Overriding Annotations
Adding Events
Extension Namespaces
Extension Templates
Custom Governance Checks
Generic Input Validations
Declarative Constraints
Execute Sandboxed Code
Runtime API for In-App Extensibility
Propagating Extensions across (µ) Services