Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
Showing results for 
Search instead for 
Did you mean: 
Developer Advocate
Developer Advocate
This is a searchable description of the content of a live stream recording, specifically "Ep.44 – Business Rules in Cloud Foundry – setting things up" in the "Hands-on SAP dev with qmacro" series. There are links directly to specific highlights in the video recording. For links to annotations of other episodes, please see the "Catch the replays" section of the series blog post.

This episode was streamed live on Fri 22 Nov 2019 and is approximately 60 minutes in length. The stream recording is available on YouTube.

Brief synopsis: In previous recent episodes we've taken a look at the Business Rules service on Neo, and kicked the tyres with a simple rules service. Now it's time to move to Cloud Foundry and set things up there. Let's go!

00:02:00 It's #TShirtDay today and I'm wearing my favourite Rush tshirt - you should definitely check out their music:

00:06:10 If you want to request an SAP CodeJam, check out the main CodeJam page where you can find the topics and a link to request one.

00:07:10 As I mentioned earlier today, on the SAP Cloud Platform Cockpit there's a new Starter Scenario available, "Build a Business Application using Node.js" - nice work iwona.jirschitzka & team!

00:09:10 I'm trying to work more openly, and am now editing my draft annotations for the live stream replays in a public GitHub repo. So you'll see the draft annotations as they're written, and most likely even before they're made live. In fact, I'll go and push this new file right now!

00:10:45 Now, in the upcoming section of the main Hands-on SAP dev post, I'm maintaining not only the upcoming episode but, where appropriate, I've added future planned episodes - there are already two episodes planned next week, with thomas.jung on Wednesday and mariusobert on Friday.

00:11:40 Starting where we left off on this topic last time, looking at what we have with respect to the Business Rules service in the Neo environment, so that we know what we're aiming for in Cloud Foundry (CF). This includes the service itself and also the administration UI.

00:14:45 Mentioning one of the great folks from the Intelligent Enterprise Process Orchestration team archana.shukla - you should definitely take a look at her blog posts on the subjects of the Business Rules and Workflow services!

00:16:00 Exploring my SAP Cloud Platform CF trial account, and the relationships between the subaccount, the organisation and the space(s), as well as basic CF concepts such as applications, services, service instances and bindings.

00:19:50 gregorw points out that while you can renew your Cloud Foundry trial three times up to a total of 90 days, you can actually keep renewing, it's just that your artifacts are removed after 90 days (but you can redeploy and set things up again). He points to a tweet by chuergo16 that relates to this.

00:23:50 Mentioning the SAP Developer Insights Survey, in a conversation about feedback. If you have already completed it - thank you! If you haven't, please do, it should take you no more than 10 mins.

00:24:15 Creating a new instance of the Business Rules service, with the 'lite' plan, and talking about a strategy for naming things, to help with my problem of (a) never knowing what to pick and (b) regardless of what I pick ('business-rules' in this case) I forget what it was 5 mins later. This is particularly and painfully prescient as indeed at the end of this episode, the build / deploy process fails ... because I forgot what name I'd chosen!

00:25:30 A quick mention of the SAP Coffee Corner Radio Podcast, to which you should definitely subscribe. Recommended!

00:26:10 About to create a Service Key for the new instance of this service, so we can make calls to it from other endpoints such as the SAP API Business Hub. Note that the authentication will be based on OAuth 2.0.

00:29:05 There are three pieces of information in the Service Key that we'll need eventually to make our API calls: the client ID, the client secret, and the endpoint URL.

00:30:15 mark.teichmann shares a link to a useful resource regarding OAuth 2.0 and SAP service resources: OAuth 2.0 - Integrating access protected web services using the OAuth 2.0 Client Skip to end of meta.... Thanks Mark!

00:31:00 At this stage we move back to the organisation level in CF to create a collection of Business Service related roles and assign that collection to myself. The roles cover superuser access to both of the areas - design-time and runtime, in other words, Repository and Runtime contexts.

00:38:10 With the role collection created, we add it to my user, via Trust Configuration, in the context of the identity provider used (the SAP ID Service).

00:40:10 Almost everything is set up now, but one thing that we still have to do is manually and explicitly bring to life the equivalent of the "Manage Business Rules" app that we know and love from the Neo environment. In Neo it was automatically available to us, but in this CF context we need to build and deploy the app ourselves. It's a one-time activity, yes, it's extra work, but I think in this case it's worth it as it teaches us more stuff about how CF and multi-target apps work.

00:42:40 Downloading the file from the SAP/cloud-businessrules-samples repo, which we'll import into the SAP Web IDE to build and deploy.

00:43:40 I mentioned that this process is described in a relatively new tutorial, Set Up the Manage Rules Project Application, which is part of a new mission Get Started with SAP Cloud Platform Business Rules. Check it out!

00:45:50 Loading the SAP Web IDE, straight into a nice workspace "HandsOnSAPDev" that I've created for this live stream series purpose, importing the ZIP file, and exploring the contents, and marvelling that there is very little there - most importantly there's the mta.yaml file which we look at in detail.

For those (like me) who like to stare at configuration, here's the content of the mta.yaml file (including the change from "businessrules" to "business-rules" I had to make at the end to get the build to work and the deploy to be successful (yes, this is the name change that I'd forgotten about!):

ID: businessruleseditor
_schema-version: '2.1'
deploy_mode: html5-repo
version: 0.0.1

- name: businessruleseditor_appRouter
type: approuter.nodejs
path: businessruleseditor_appRouter
disk-quota: 256M
memory: 256M
- name: businessruleseditor_html5_repo_runtime
- name: businessrules_uaa
- name: business-rules
- name: businessruleseditor_html5_repo_runtime
service-plan: app-runtime
service: html5-apps-repo
type: org.cloudfoundry.managed-service
- name: business-rules
type: org.cloudfoundry.existing-service
- name: businessrules_uaa
xsappname: businessrules_uaa-appname
tenant-mode: dedicated
- name : UaaUser
description: Role template for accessing SAP Business Rule APIs.Editor via user token flow
- uaa.user

00:53:30 We build the project, deliberately choosing the deprecated tool, to remember what it does and how the logs look as we can look at the new build tool mbt in a future episode (the deprecated, Java-based build tool will be supported to 31 May 2020). The build process completes and a new multi-target application archive businessruleseditor_0.0.1.mtar is created.

00:56:00 We deploy this to CF, specifying the API endpoint, organisation and space ... and it fails! It's because I'd forgotten I'd named the Business Rules service instance 'business-rules' (with a dash) - I needed to adjust the mta.yaml references to deal with this. Oops! The nice thing was that the failure was fairly clean and obvious - the error message told us exactly what was wrong.

One more issue (again, my fault) - in rushing to make the change, I only changed the reference in a single place, not in both places (referer and referee) so the build failed again. Doh! Shortly after the stream finished, I fixed it. An exciting end to the stream, don't you think?

And ... as Former Member pointed out in the chat right at the end: "Problems are where we learn". Well said!