Cap
TASC Notes - Part 5
These are the notes summarising what was covered in The Art and Science of CAP part 5, one episode in a mini series with Daniel Hutzel to explore the philosophy, the background, the technology history...
read postTASC Notes - Part 4
These are somewhat more detailed notes than normal that summarise The Art and Science of CAP part 4, one episode in a mini series with Daniel Hutzel to explore the philosophy, the background, the...
read postThe elements of programming with respect to CDL and SICP
CAP's language for expressing the domain model, the entities, their relationships, services, and more, is CDS's Conceptual Definition Language (CDL). It's a language that I've been dwelling on a lot...
read postThe Art and Science of CAP
Here's a summary of the resources relating to the series called "The Art and Science of CAP" with Daniel Hutzel. The series consists of a number of episodes, broadcast live on the Hands-on...
read postTASC Notes - Part 3
These are the raw, unedited notes I took to summarise The Art and Science of CAP part 3, one episode in a mini series with Daniel Hutzel to explore the philosophy, the background, the technology...
read postTASC Notes - Part 2
These are the raw, unedited notes I took to summarise The Art and Science of CAP part 2, one episode in a mini series with Daniel Hutzel to explore the philosophy, the background, the technology...
read postFlattening the hierarchy with mixins
Another gem in the TASC ("The Art & Science of CAP") inaugural episode is from around 49 mins in, in Daniel H's example about two application teams ("invoices" and...
read postFive reasons to use CAP
This is now available in audio format on the Tech Aloud podcast: Five reasons to use CAP - DJ Adams - 07 Nov 2024. The SAP Cloud Application Programming Model (CAP) is an incredible feat of design and...
read postSeparating concerns and focusing on the important stuff
The phrase "separation of concerns" is one that I hear relatively often, but have never until now stopped to think properly about what it is, what it means. It's a concept discrete and...
read postRestricting access via facets with masked elements
Watching the inaugural episode of The Art & Science of CAP, in particular around 39 mins in, Daniel was showing an example of a projection where some of the details of the entity -- upon which the...
read postKeeping things simple in domain modelling with CDS
When embracing domain modelling with CAP, keep things simple. One of the greatest benefits of domain modelling done properly is having a domain expert on the team. Don't forget that domain expert,...
read postCAP plugins deconstructed - part 2 - service introspection in the REPL
In this second of a three part series of blog posts, we look at how to explore service information in a running CAP server, digging into the entities, elements and annotations using...
read postCAP plugins deconstructed - part 1 - understanding how the mechanism works
In this first of a three part series of blog posts, we explore the CDS Plugin mechanism in CAP to find out how it works, so we are well prepared to write our own plugin. Background This series of blog...
read postTASC Notes - Part 1
These are notes relating to part one of The Art and Science of CAP, which aired live as part of Devtoberfest this year. This inaugural episode kicked off a mini series with Daniel Hutzel to explore...
read postAutomatic validation in OData and REST calls with CAP
There is automatic validation of data coming into CAP-based service endpoints. Up until recently, there was a difference on how this happened between "REST" and OData channels, but with the...
read postTurning an OData expand into a cds.ql CQL query with a projection function in CAP
If, while serving a call to your provided CAP service, you want to construct some CQL to perform on your database in a similar way to how $expand works in OData, this post may help. Before I start,...
read postDigging into CSN diffs for CDS models
I wanted to increase my understanding of CSN a little by noting changes in it as I built up my CDS model, and ended up with a script csndiff to help me with that. To grok something complex, I try to...
read postDefining a custom 'after' handler in CAP with 'each'
TL;DR: There's special behaviour if you use the each parameter name when defining an after handler, but the way this works and the way you should invoke it has changed. Adding custom logic to your CAP...
read postControlling automatic HTTP requests in CAP Node.js design time loops
CAP affords developers a great design time experience, with minimal setup and fast turnaround times when building out your model and code. Often what I like to do is run an OData query operation to...
read postSimple script for previewing CDS models in CSN - cdsray
The March 2024 release of CAP brought many great new features including one for VS Code users - CDS Previews From Editor Title Bars. It allows you to look, in realtime, at how your CDS model...
read postUsing @cap-js/sqlite in CF for your CAP services
I published a couple of short posts recently: Running non-production CAP services in CF Easily add an explicit cds.requires.db to your CAP project's package.json Both of them are related to going...
read postRunning non-production CAP services in CF
Sometimes I want to run test CAP services not only locally, but in the cloud. I don't want the trappings of production (which are of course important ... in production settings) such as a production...
read postEasily add an explicit cds.requires.db to your CAP project's package.json
In an experimental CAP project serving data in an in-memory SQLite persistence mechanism, seeded from CSV files (as per the classic starting point in CAP's Grow As You Go approach), I wanted to have...
read postImprove your CAP dev container shell prompt
In the current back to basics series on CAP Node.js we're using VS Code with a dev container, based on the definition in the repo for the series. The container image is based on this one: FROM...
read postAvoid design time CAP server restarts when maintaining local data files
Starting the CAP server with cds watch is great for tight development loops at design time, especially with the built-in in-memory SQLite persistence layer, seeded by data in CSV files. When the...
read postCAP, CDS, CDL, CSN and jq - finding associations
In CAP, relationships between entities can be expressed with associations. In digging into how these are represented internally, I found jq yet again to be invaluable in parsing out info from the...
read postCAP, CORS and custom headers
A colleague asked me if I could add CORS support to a service I was running, built with the SAP Cloud Application Programming Model (CAP). CAP already has some basic support for CORS, so I dug in....
read postISO content for common CAP types
There's an NPM package that provides default content based on the ISO specifications for CAP common types for countries, languages, currencies and timezones. In this post I explore what that package...
read postSuccessful double CodeJam in Wroclaw and Warsaw
I'm at Warsaw airport on my journey home after a great few days in Poland. My first flight is already delayed so I have a bit of time at the gate to write up some notes. I arrived in Wroclaw, in the...
read postDeveloping CAP in containers - three ways
On Friday last week we had the first Hands-on SAP Dev live stream of 2024, and it was the first episode in a new "back to basics" series on the SAP Cloud Application Programming Model (or...
read postSAP CodeJam report - service integration with CAP in Guetersloh, DE
I'm on the train back to Duesseldorf on an early Saturday morning, after another successful outing of our SAP CodeJam content that takes participants through the ins and outs of service integration...
read postSAP CodeJam on Service Integration with CAP in Brescia
The SAP CodeJam programme continues apace. Yesterday I ran a CodeJam in Brescia, Italy, on the topic of service integration with CAP, the SAP Cloud Application Programming Model. Here's a quick...
read postA deep dive into OData and CDS annotations
In 2022 on our SAP Developers YouTube channel, I ran a series of live streams on the Hands-on SAP Dev show, where we went back to basics on OData. You can watch all of the episodes via this playlist:...
read postSAP CodeJam on Service Integration with CAP in Utrecht
Yesterday I ran an SAP CodeJam in Utrecht, in The Netherlands, on "Service Integration with the SAP Cloud Application Programming Model" (CAP), and I think it's fair to say it was a great...
read postCAP is important because it's not important
In this post, I consider what CAP really is, what it gives us, and why we should consider it a fundamental piece of the puzzle in the cloud context and beyond. Update (08 Nov): This blog post is...
read post