Jarvis Pizzeria: Collaborate in PCS

An interesting aspect of working in Oracle Process Cloud Service with a team of three people is the fact that you need to collaborate and work together in the same “source”. However, where traditionally we are used to develop on our machine and merge source in repositories like Git, Bitbucket or Subversion, in the Cloud, we do not even see the source, let alone are able to merge it.
So, how does a team collaborate in the Oracle Cloud?

Oracle offers a good, free platform for collaboration called Developer Cloud Services (DevCS).
As long as you have an other Oracle Cloud product - i.e. JCS, ABCS - DevCS comes for free, it does not come stand-alone. Within this environment, it offers a wiki, issue trackers, source control and much more. For this use case, we will focus on how to work together within PCS.
Once the PCS instance is requested, set up and ready to use, you can share the instance with others.

For this, we need to login on cloud.oracle.com, the sharing happens from the Oracle Cloud Dashboard and not from within the PCS instance.

Within the Dashboard, we open the menu on the left hand side and go to the Users tab.

Here we can add users, we added all the members of the Jarvis Pizzeria team.

The accounts are created and set up and invitation e-mails are automatically sent. Everyone will get their own private space within PCS. To collaborate, we created a new space and shared the workspace among each other to develop together on the same application and processes. This is done within PCS, so we can leave the Oracle Cloud Dashboard and log onto our PCS instance.

Within the ‘Develop Processes’ part of PCS, we can create a New Space from the Create button.

The space is added to the List of Spaces, and it is private by default. However, now we can start sharing it.

Pressing the Share button will bring up a popup to share the space with other users.

Pressing the choose button, gives another popup where we can browse the users.

After selecting the users and pressing ok, we are brought back to the previous screen. We need to select the role for the users and click share. A confirmation is shown, which we can now close, and the space is shared.

To make sure not more than one member is currently working on the same process, there is a lock & edit mechanism that sees to it that only one developer at the same time can work on the application.
When you do not have a lock on the application, the blue top bar will tell you you are in viewing modus.

When no one else has a lock on the application, the blue bar will show a pencil to start editing.

However, that is not always the case, because maybe someone else has the lock. On the right we can see how many people have access to our process, in this case it shows the number three.

When we click this button, it will show us the users in a popup.

To take over the lock from Marc, who is currently disconnected to the application, but still has the lock, we need to go back to the Application. We can not lock a single process instance within our application, we need to lock the whole application. In the Application Menu there is an option ‘Take over application’.

Once the application is taken over, the lock is shifted from Marc to Richard in this case and Richard can start developing the process. When going into the application, the blue bar on top will show Editing instead of Viewing:

Also, the popup will show Richard with the lock being online and Editing within the application.

Next to ‘Editing’, there are three important buttons, save, publish and discard. The save button will save your changes, although PCS also saves automatically. After saving we still have the lock and can continue working on our application.
Both the publish and discard buttons will release the lock.

If we do not publish our changes, we will get a warning about losing our changes when we discard and release the lock.

If we want to close the application anyway, we need to explicitly discard the current changes we had saved, but not yet published.

However, we have to be aware to always communicate with our teammates and use the button on the top right to see if someone is online or editing. When we take over the lock on the application, we will not get a warning screen whether our teammate is currently making changes or has open changes. When taking over the lock, that user will get a notification that the project is now locked by someone else:

It looks like the saved, but not yet published, changes within the application are automatically published, since we verified that the user taking over the lock directly sees those changes. But this might not be the desired behaviour.

An Introduction to Jarvis Pizzeria!

 A developers’ dream, where Pizzas, Cloud & Oracle meet”

In the summer of 2017, three enthusiastic Oracle Consultants decided to join effort and start their own business. Not all developers love the cloud (just yet), but we all love pizza, so what better than to start our own pizzeria; Jarvis Pizzeria!  Besides that, pizza is the new EmpDept for developers, so two birds with one stone. Where better to explore the Oracle Cloud, more specific Oracle Process Cloud (PCS), than within the walls of our own beloved pizzeria.

Since an Iron Man reference is always a good idea for anything Oracle related, Jarvis Pizzeria is born!

Now, before we tell you all about our automated pizza process, let's take a moment to introduce the team.

The Cloud Architect of MyFMW
Marcel is a familiar face within the Oracle Community, his expertise on BPM & SOA (plus more) is shared on MyFMW. Besides preparing pizzas, Marcel is also preparing for the Cloud, will PCS be the new BPM?

Cloud Ninja @RubiX
Marc knows the BPM Suite and all its pros and cons from his time at Oracle. However, now that he’s left the mothership to consult at RubiX, it is time to challenge the Cloud proposition of Oracle. What better way than looking at PCS to see how this Cloud solution fits within the PaaS offerings.

Oracle Early Adopter @The Future Group
Richard is always looking for an excuse to play around with the newest Oracle Technology products to stay on the edge of what is happening within the Red Cloud. Can the Oracle PaaS deliver like Jarvis delivers pizzas?

So that is the team! In the time to come, we will start automating our pizza process with the help of Oracle PCS. One of the goals for this project is very selfish, we want to explore PCS and familiarize ourselves with the tool and technology. We joined effort to discuss our findings, ask questions and motivate each other. However, now it is also time to share our experiences with the Community. This will happen in a blog series on our sites as well as via implementation examples and presentations at Oracle related Events.

In essence we have cut the automated pizza process in a couple of separated, decoupled steps; the preparation, the payment & the delivery. Within these steps we will use several familiar techniques, like Human Tasks and Business Rules. We will compare the PCS options to their BPM counterpart and share our findings from a level of ‘MyFirstPcsProcess’ to a more in-depth analysis of the tool and product.

As you can see, our use case reflects upon the process, how PCS relates to BPM, how easy it is to implement a business process, the usage of gateways, business rules and other features we know from BPMN. As a result, our focus has been on Oracle PCS and Oracle PCS alone. This means our lessons learned will also be focussed on PCS and probably will not translate one on one to a real business case.
For example, we use the integration within PCS, to directly call REST and SOAP endpoints, while for a critical, core business system, it is wise to let this integration go through the Integration Cloud as abstraction layer from the process.

We hope you enjoy our blog series, happy readings!

Blogs in this series:

The OGh / nlOUG Tech Experience 2017

Thursday, 15th of June and Friday 16th of June, the first Full Stack Conference of the Dutch User Group took place, a mergers of the DBA - SQL Day & the Fusion Middleware Experience, The Tech Experience 2017. A milestone for the Dutch User Group, but also for the Oracle Community.
Already in the opening speech of the chairman something important happened, the OGh (Oracle Gebruikersclub Holland) announced their name change to nlOUG to the public. With this the name is in line with other Oracle User Group and easier to recognise international.
So, what are my personal experiences with the Tech17 of the nlOUG?

As Member of the Organisation
For me personally the Tech Experience 2017 started right after the Fusion Middleware Experience of 2016. My fellow board members have always known that I was in favor of a Full Stack Conference like many of the countries surrounding us. Now that we had 3 big seperated events in 2016, it was time to start looking to combine some of them. For one, simply because of the workload shared amongst the organisation teams, but also to be more attractive for international speakers and visitors.
Since our APEX World is a somewhat famous event, it made sense to merge the DBA & SQL event with that of the Fusion Middleware. Since we were able to add our BIWA knowledge in here as well, it made a somewhat special line up with dedicated tracks to almost any Oracle topic you can think of (besides APEX).
On the Tech Experience itself we had a great team of volunteers working together to make this event a big success!  

As a Speaker at the Event
In between all the hassle of organising the event with things like helping out our speakers, socialising with the attendees, talking with our sponsors, keeping track of time, technical difficulties and more, I was able to find time to share some of my personal experience and knowledge with the attendees as well.
I presented a double slot with the Cloud ACE Team, trying to combine up to 17 different Cloud Offerings from Oracle to create a story for the audience to familiarise themselves with the Oracle PaaS Cloud. However, as a real user group aim should be on customers, I also presented a Customer Case Study together with Frank Houweling about how we implement the ADF performance monitor at a customer and tackled a lot of performance issues.  
As a Volunteer at the Event  
As organisation, we asked our SIG Leads committee as well as our board members to be present and help out with the organisation of this event. For me personally that also meant spending a hand or two (or three?) to the event. From welcoming our international speakers into the Netherlands and Amersfoort on Wednesday evening I had an early morning rise on Thursday to prepare the location. Helping out the sponsors to get to their booth, looking over the rooms to see if all the technical equipment is in place and working, greeting our speakers, pointing out where their session would be held and handing out the speakers wifi. A whole handful already before the opening speech or first keynote even started. After the keynote, it meant to host one of the parallel sessions, making sure the speaker is there, helping them connecting (if needed), making them feel at home and discussing their presentation. During the session I would keep a track of the time and inform the speaker if necessary, while in the end I was able to thank the speaker on behalf of the organisation and hand them over a small present from the nlOUG.

As Member of the Community
Finally, a Full Stack event in the Netherlands, no need to take a plane somewhere to see an Oracle User Group Conference, but basically in my backyard. An awesome feeling and an awesome time I had. As a developer, mainly focussed on Java, Fusion Middleware & Cloud, I was still able to connect with Maria in her keynote about the Oracle Database 12c. After which I got to see Lucas his presentation about Machine Learning, a topic that I have no hands on experience with yet, but that looks promising. Next up, Ralf with his presentation about Case Management in the Process Cloud, a personal interest since I am using Case Management on premises at my current client. A good overview was presented and I got wiser and more enthusiastic about PCS during the presentation.  
The next day I got to see Duncan doing his Developers keynote, Frank & Steven doing their chatbot show and ending the event with Lucas doing a final keynote called ‘It’s a wrap’. A presentation that contains a lot of highlights about the Tech Experience 2017, his point of view on the content as well as on the future of our workfield.
Although I only had a couple of free slots, I still got to see a lot of interesting presentation and enjoyed it.

As a member of the Community, I would not have wanted to miss this conference, it is great we have this in the Netherlands and I hope there are more to come.
As a volunteer, I am happy that my work was appreciated by all attendees & speakers and I hope I have contributed to the Oracle community.
As a speaker I am honored to have presented at the very first Full Stack Oracle User Group Conference in the Netherlands.
And as Organisation & Board-member I am very proud of our team, volunteers, speakers, community and sponsors for making this happen and making the Oracle Community a better place in the Netherlands.

ABCS: Maintain Security & Anonymous Access

Since the application of the tech17 is now live here (disclaimer: for the official information about the OGh Tech17, go to www.tech17.nl), it is time to adjust the security settings. By default when trying to access the application you need to login to the Oracle Cloud to be able to access the application.
To give public access, I will create an anonymous role and add certain pages to the anonymous role, after that they should be visible without the need to login first.

In the main menu, I go to the security settings.

On the left hand side in the Access panel, I can select to allow anonymous access. This means there will be a role created for the anonymous-users.

After ticking the checkbox, you will see an extra role appear in the Roles section of the page. There is now an Anonymous User role.

Under the Roles sections, you see the Pages section, here you can map the pages to certain roles. I make the Home and Tracks pages accessible for anonymous users, but the other pages in the menu are not.

Now that we have adjusted the security settings, you can actually see the result of this action already in the Page Designer.

In the top menu on the right there is an icon that looks like a person. When you hover over it, it says 'Who am I?'.

Here you can change the role that you have while making more adjustments to your page. If you click the icon, you will get a screen where you can select the various roles. In my case I choose the newly created role anonymous.

This results in the Page Designer acting accordingly and only displaying the Home and Tracks menu items for this role.

ABCS: Go Live with your Application

When you are done developing the first version of your application, you might want to go live with it. Within ABCS there are a couple of steps build in to publish your application to the public. Before you can do this, you first have to go through a Stage environment where you can check the functionality of your application before publishing the application.

To do this, in the main menu we you choose the option Stage:

You can decide to start with a clean database, in case you do not want development data to be taken to the stage environment.
In my case, I want the imported CSV data to be populated to the Stage environment as well, so I choose the option to populate the data.

This might take a couple of minutes, after that the menu is changed and you have 2 extra options.
You can now publish your application, meaning it will go into production, or you can run the staged version to verify everything is in order.

To verify that the staged version is good, I run the staged version and navigate through the application to verify the data on the Tracks page.

The out of the box filter is also working correctly as I can filter on the columns that are displayed in the table.

Lets go back to ABCS and publish our application through the menu.
Again you will be given the option to populate the data to production after you have verified the working in the Stage environment.
I still want the data to be published as well, so I select the include data option.

You will now see that your application is live within ABCS:

In the menu you can select to run the published version.

This brings you to your application that is now fully operational.

You can check out the application through here.

ABCS: Import data from CSV

In this use case, I do not let the user fill the data for the application through data entry forms, but rather I use the data that is available for the OGh Tech Experience 2017, this data is in a csv file that I want to upload to display the tracks within the application.

When opening the hamburger menu on the top left, you can leave the Page Designer and go to other parts of ABCS, in this case I am going to use the Data Designer to fill the previously created Business Object.

Selecting the Data Designer, gives you a couple of options, here you can create Business Objects, as I have done previously using the Page Designer, you can connect to REST Services (more on that later in this serie) or you can use the Data Manager for exploring, importing or exporting data.
When going in to the Data Manager, there is an option to import to import data from file.

A pretty straight forward UI, that brings up an popup so you can select a file that contains the data you want to import.

You can accomplish the same thing, by going to the Business Object itself instead of through the Data Manager and select to import data from a file.

You can browse your local files and select the file you want to use to fill the Business Object.

The next step in the wizard will give you the option to either append the existing data or to replace all the current data within the Business Object.

Clicking the import button will give you feedback about possible errors or warnings that occurred that you might want to fix.

When all the data is correct and you are satisfied with the result, you will see the data being displayed in the Business Object layout. Below the results for the import of the tracks.csv into the Tracks Business Object.

Now that the underlaying data has been supplied, returning to the Tracks page will show the data we have just imported into the Business Object.