Why and how to write reproducible test cases

We all have been in situations where the application we were developing or maintaining did not do what we expect it to do. This happens all the time. No big deal you think, but after hours of trying to figure out the problem, you still are stuck.

In my experience it helped to stand back a bit and trying to look at the problem from a different angle. There are different ways to do this. One is to try to talk to someone else and to try to explain the problem. I  sometimes see the problem during explaining the problem, sometimes when I try to explain what I have tried to resolve the problem. The interesting part is the the person you talk to does not even have to be a programmer.

In my other post I tried to give some rules on how to ask questions on OTN, so I assume you have done anything in this direction and still don’t have a working solution. Now, there are problems which are not solved after this. This is the point where you should think about writing a reproducible test case. The remaining post is about how to write such a test case in a way you get the most out of it and make it easy for others to help you solve the problem.

A test case should fulfill some requirements:

  1. it must reproduce the problem
  2. it must be as easy as possible in doing this
  3. it should be easy to use by other users which don’t work in your environment
  4. it should use a data model which is known by other users (without the need to study table definitions, triggers, …)
  5. if a known data model can’t be used the model must be described in great detail
  6. if possible it should not be necessary to change  or insert data
  7. if data has to be changed or inserted you should include scripts or steps to get the original data back
  8. it should not take longer than 15-20 minute to setup everything

You might think that it will cost a lot of your time to create such a test case. You are right, it will cost you some time, but this time is well spend:

  1. chance is that you’ll find the problem and it’s solution while creating the test case. Then you are done and can be proud of yourself.
  2. creating the test case forces you to get a clear picture of the problem. This helps to describe the problem to others
  3. providing a test case to the community increases your chance that somebody find the problem and helps you fixing it drastically
  4. If nobody can help you and you ask support.oracle.com for help, they will ask you for a reproducible test case too. Normally the work  faster if you can provide one and have a good description of the problem.

After you now know the reasons and requirements for a test case let’s talk about how to create one. I always use the HE DB schema provided with every Oracle DB (or you can get it from Oracle Sample Model and Scripts). Almost every developer has access to an running HR DB instance. Depending on the problem and the relation to the original data I choose only the minimum number of tables needed to create the test case.

Lets say the problem in your app happens in a data entry form which consists of a master-detail-detail data. Then I look at the HR model and use Regions, Countries, Locations as data model for the test case. Depending on the data you can choose different tables, e.g. Departments, Employees, Jobs.

Once the data model (or the tables) are known, I create a simple ‘ADF Fusion Web Application’ which will create a workspace with two projects. The model project I create by using the ‘Business Components from Table…’ option you get by right clicking on the model project and then selection ‘New’. As the whole process is to long to describe I made screenshots from every dialog . The sample application is created with JDev version so you might not exactly see the same images.

Creating the workspace:

Creating the model project:

Checking the model project:

After this the basic workspace for the test case is finished and can be used to add the problem specific parts. Here you start with the business logic and add whatever you need to show hte problem in the UI.

If your problem is related to cascading selectOneChoice in a form, it’s a good idea to add the configuration to the model project and test this using the application module tester. Once the business logic is running you continue with setting up the UI. Here you don’t have to design a pretty looking UI. Make it as simple as you can. Concentrate on showing the problem.

Here are some specific things you should take into account:

  1. if your problem needs a fancy design, e.g. you have a layout problem or a skin problem, then you sure add all needed resources to reproduce the problem.
  2. if your problem needs specific data in the DB, you should create DDL scripts to create the tables and to insert data into the tables. Avoid to add table space names and other storage information in hte scripts as other users likely don’t have those table spaces. A description of the data model is mandatory!
  3. if your case needs third party libraries you must provide the exact version of the libraries and hte location where we can download them! Smaller libraries you should add to the test case zip file.
  4. Write a detailed description on how to start the application (which page to run) and what to do to get to the problem.
  5. Format your code! I hate reading unformatted code. It costs time to interpret things which I would like to spend on solving the problem, not by trying to figure out which part of code I’m looking at.
  6. Comment your code! The better the code is commented the easier we can understand what you have tried to do. In a perfect world I wold like to understand the code by just reading the comments of the methods without having to go into the details of the implementation. Once the problem area is clear I start looking into the implementation. One thing I do is to read the comment of a method and checking it against it’s implementation.

Finally you zip everything together and make the zip file available to the public. Make sure that you delete unnecessary files and folders from the workspace (like .data and .classes). These folders are huge and are recreated automatically when you compile the application. Pay special attention to library files (jars) which are sometimes huge. As you are given us the version and location where to download them (and instructions where to put them!) they can be omitted. You can use Google Drive or Dropbox which are well known to other developers. I you use an unknown file host service you risk that nobody downloads the test case.

One final word of advice

We are all trying to help but have our normal work to do too. Creating a test case, even after you are asked to provide one, doesn’t mean that you get help from other users. There is no service level agreement (SLA) attached!

If you need urgent support ask Oracle Support or help. The test case will help you there too as support don’T need weeks to understand and reproduce the problem.





JDeveloper is out


Today October, 19th 2016 JDeveloper was released. From the first look at it it’s only a maintenance release.  There is currently no ‘What’s new’ document, only a release notes are available.

The release notes show only some bug fixes and some deprecation. Noteworthy are some changes in the REST runtime. One of them is that ADF REST HTTP PUT is deprecated functionality. From the doc

ADF REST HTTP PUT is deprecated functionality

Oracle has deprecated the functionality for executing HTTP PUT methods on ADF REST resource requests. In the current release, the describe for ADF REST resources continues to display PUT actions when the backing view object has the Update operation enabled (the operation enables both PUT and PATCH methods); however, ADF REST service clients should avoid making PUT requests (replace all items of the view row) as this functionality will be desupported in a future release

Another change in the REST department is that adf date and datetime attributes are no longer described as string but as date and datetime. Interesting if you work with ADFbc and Oracle JET.

There are some other small bug fixes and deprecation’s of oracle.domain data types and the dvt:stockGraph. You should use dvt:stockChart instead.

Let’s wait if Oracle releases an ‘What’s new’ document in hte near (?) future which will spear us some time searching for new stuff🙂

How to Ask Questions in OTN Spaces

You have a problem which you can’t figure out yourself and  want to ask some other users for help. We all have been in this situation!

Even the veteran users (like myself) had run into such problems. We all are glad that the OTN spaces exists where we can ask other users for their input and help.

Sure it’s easiest for you to just open a question in OTN or support.oracle.com (MOSC) and just ask

“I have a problem fitting my QTY_X  into the pivot”

Then you’ll get plenty of fire from other users who don’t really know what you are talking about. It will take some questions and your answers and after one or two days, the thread is already 8-10 posts long, the others have a basic understanding of the problem. This is what I call waste of time.

It would have been easier, if you had given the full use case at the beginning. This would have cost you a couple of minutes work (max. 30 min) but would have saved 24 hours in question and answers. So, here are some basic rules of how to ask questions:

  1. search the forum if your question has been asked before (and
    answered). The forums search isn’t that bad🙂
  2. search again using Google. Don’t give up after reading the first hit
  3. give information about your environment like versions of software you use. This is essential as versions change and other users might run into a similiar problem never knowing if the thread they read was about their version
  4. give a full understandable use case of the problem. The process of formulating a good forum question, will force you to think more clearly about the question yourself.  Sometimes in the middle of writing the question the answer comes to you because you’ve restated the problem in terms an outsider can understand
  5. tell us what you have already tried to solve the problem. Help the others to get the big picture and show that you not just dump your work on the forum users
  6. give information about the technologies you use in your application. If you e.g. POI to generate native EXCEL files and this is related to your problem, we should know. If you use PL/SQL to make changes in the DB we should nḱnow too
  7. providing code snippets and any other information which you think helps us to understand the problem or what you have tried to solve it
  8. Screenshots help understand visual problems. It’s hard to describe problems with are only visual like “my fields are not aligned”. Make screenshots and add them to your post.
  9. Provide stacktraces as text if you are ask to provide one. This way we can look at each part.
  10. Format code you provide. This make code readable, regardless if it’s Java, PL/SQL or the source of a .jsff page.

The list above is not complete but a starting point. Giving this information will help you getting an answer to your question.

Please remember that all users have normal jobs to do to get the bills paid. Phrases as ‘ASAP’, ‘urgent’ have no meaning at all . There is no ‘Service Level Agreement’ attached to the OTN Spaces. If you need urgent help you should use support.oracle.com, the paid support Oracle offers.

OTN Appreciation Day: Developer Cloud Service

Tim Hall had the great idea to introduce the ‘OTN Appreciation Day’ where bloggers should write a short blog about their favourite Oracle feature. As the OTN is a great network which I use every day, I like to add a blog about my current best like feature, the ‘Oracle Developer Cloud Service’.

So, why is the Developer Cloud Service my favoured feature?

I’m a consultant, coach and architect helping customers to bring their Oracle related projects to a good start, sometimes back on track, help migrate projects to current versions an coach developers. There are many questions where customers ask to see how something is going to work or how to set something up. Before the DCS, setting up an environment which is similar to the customers was a time consuming task.

I had to install software like JDeveloper, WebLogic Server, SOA Suite and Database most often before getting to the real task.  Coaching developers in new techniques like using git or automate software deployment (continuous integration) needs software too.

The DCS offers an ready to use environment to develop software and deploy it to WebLogic Server already setup with the needed packages like ADF and/or SOA Suite. You can plugin your own DB or use the one running in the cloud.

Agile development can be done with the DCS too. You can use an integrated bug tracker, use agile boards and create tasks you assign to developers of your team. Code reviews can be done and the Hudson server is used to build a new artifact including the last reviewed changes. Once they passed there automated tests, the new version can be automatically deployed to the server. The new version of the software is ready to be accessed from everybody. You get a full integrated DevOps platform!

This DCS makes my live as a consultant and coach a lot easier. Modern techniques can be shown and teached to customers. I also use the DCS for trainings the German ADF Community holds on multiple occasions. The DCS has evolved since end of 2015, more features have been added and more are in the pipeline to make it more productive in hte future.

To find out more about the Developer Cloud Service visit my other blog posts about the DCS or Oracle Developer Cloud Service.

If you want to try the DCS for yourself, you can get a free 30 day trial.




Summary of Day 4 at the Oracle Open World 2016

Late, but not forgotten, here is the summary of day four. It was too late yesterday, after the appreciation event to write it all down,

Wednesday was a somehow slow day for me as I attended two sessions only. Most of the day was reserved for meetings around my other activities in the OTN network like moderation and the German ADF Community which will soon relaunch their community page on OTN.

The first session was about testing web applications with Selenium ‘Testing Java Web Applications with Selenium: A Cookbook‘ by Jorge Hidalgo and Vicente Gonzalez Arellano, over at the Java One. It turned out that the Selenium Webdriver for JDev ADF is better working than the one showed in the demo in this session. The JDev Webdriver abstracts all the tricky stuff like waiting for ajax calls or finding the right component away from the developer. This make the job really easy. Summary: nothing new learned.

After a nice working lunch with my peer OTN moderators and the Queen of Moderators I attended a session about developing applications with Oracle JET and ADFbc REST services ‘Oracle Application Development Framework and Oracle JavaScript Extension Toolkit in the Cloud‘ by Sherry Yu, Shray Bansal and Abhinav Shroff. This session was interesting to see as it used REST services generated from ADFbc. This kind of REST services offer many usages

ADFbc REST Services Usage

ADFbc REST Services Usage

and allow some very nice features out of the box like pageable collections, rich set of meta data, list of values, attribute types and validation and resource discovery

ADFbc REST Services Functions

ADFbc REST Services Functions

During run time you can tailor the payload by only retrieving the attributes you need, execute batch transactions, sort the results and have build in security.

ADFbc Run Time Features

ADFbc Run Time Features

Simple queries can be added to the REST calls. These are working like ‘Query by Example’ in ADF tables. This set of features allows for many different use cases

ADFbc REST Use Cases

ADFbc REST Use Cases

like back end for OracleJET based applications, mobile friendly UIs, integration with other services and as REST solution for SaaS.

The remaining part of the day I spend on multiple events like hte OTN Blogger Meetup, OTN Happy Hour and finally the Oracle Appreciation Event featuring Sting and Gwen Stefani.


Summary of Day 5 at Oracle Open World 2016

I started the day with a session on Alta UI ‘Implementing Oracle’s New Alta UI Features’ by Richard Wright. Richard started by giving some reasoning about why Oracle developed Alta UI. It was manly because the users demanded a more mobile friendly UI. The biggest change which came with Alta UI was that the UI has to be build by thinking ‘mobile first’ and by more designing the flow of operations by personas. Only then you gain the full advantage of the Alta UI.

Transforming a older (legacy) application to a modern application using the Alta UI is not just migrating the skin. You have to redo the UI and design it for mobile first.This means that you have to think about different device sizes which in the end means that you have to design the application in a responsive manner.

Here the page stretches on the device. This is mostly not working on small devices as it makes the user to zoom into the right section to see the information. Because of hte size mobile friendly means that you try to visualize the information instead of e.g. showing the user a table. An image is giving information a human can intake more easily than  data in a table.

For a developer this means that using a list view should be preferred over using a table. A list view allows better responsive design.

Summary is that you should

  • Leverage major UI updates as an opportunity
  • Verify actual users versus previously targeted users
  • Target UI for preferred user devices
  • Understand their most important artifacts and tasks

Next session of the day was ‘Cloud-Native Application Development with Oracle Application Container Cloud‘ by Shaun Smith, Anand Kothari and Eric Jacobsen. This session is about the Oracle Application Container Cloud Service which lets you run native Java SE applications or Node.js based application run in the cloud.

I already mentioned the ‘Cloud Native Architecture’ on day 2.



and the demands on the application development

and tools to use to make this architecture work from Oracles point of view

The Application Container Cloud should allow you to make such development simpley by

  • Develop
  • Zip
  • Deploy

your application. This can be done on a polyglot platform using java, php, Node.js and later even Ruby and Java EE. It’s an open platform allowing you to run many applications. Oracle provides a Linux system and you can bring what ever you like.

All this runs on Docker containers. The only constraint is that the applications must be stateless, as the containers are build up and shut down on the fly to load balance your application. This is done automatically without you needing to interfere.

Once your application runs monitoring the JVM or the performance of the application is done via the cloud services. Patching, if needed, is done for you too. Not that you don’t know about it, but it’s just a click on a button. If you don’t like the patch because it breaks your application you can easily rollback the patch

Final session of the day and OOW 2016 for me was ‘Using Docker with Continuous Delivery in Oracle Cloud‘ by Greg Stachnick and Mike Raab. This session talked about how Docker is used in the Oracle Container Cloud Service to allow agile, containerized development in the cloud.

The first part was about the developers cloud which was covered in almost every session about the cloud.


Second part was about the Container Cloud Service and it’s base implementation StackEngine (a company bought by Oracle end of last year).


Key features of the Container Cloud are shown in the image below:


When setting up a service in a docker container the UI looks like


Changes made in the UI are reflected directly in a docker run script (which you can get on the same page). Spinning up a new container is a matter of two clicks:

Stacks are the equivalent to Dockers composer but have some add on like you are able to add parameters to the containers.

In the end the Container Cloud service is a flexible ‘bring your own’ container and run it in hte cloud. Don’t forget to bring the needed licences too🙂

Product will be available within the next 12 month!

That was the OOW2016 for me. See you next year!



Summary of Day 3 at Oracle Open World 2016

Started with the (early) morning keynote ‘Oracle OpenWorld Tuesday Morning Keynote‘ hosted by Bhanu Murthy B. M., Safra Catz, Hon. Chief Minister Shri. Devendra Fadnavis and Thomas Kurian.

As the keynote and it’s content is covered all over the media already I won’t add to this. Oh, one thing I like to say is that the ‘live’ demos did not really look live to me. Would you risk that your ‘live’ demo is going to hell because of some technical problem with Thomas Kurian on stage?

Next on my list for today was ‘Agile Development and DevOps Done Even Faster with Oracle IaaS and PaaS‘ by Michael Lehmann, Suhas Uliyar and  Siddhartha Agarwal. This session talked about agile development in the cloud using IaaS, PaaS and Microservices together with DevOps tools like Docker.

First a Cloud Navtive Architecture was introduced:


Cloud Native Architecture

 Multiple services working together to build the cloud native architecture

Services for the Cloud Native Architecture

The practical part was a sample which showed how to build, deploy, or manage mobile-fronted, API-first autoscaling application, a microservice build on Node.js here, live on stage. New here is htat you can use the Management Cloud Service to introspect the microservice to see how it runs on your environment. The just build service then is consumned by anohter app (mobile using MAX) to visualize the data.

The final dashboard build for the mobile app, it took only about 20 minutes to build and deploy:


Dashboard for the Mobile Application

and the final detailed architecture of the application:

Detailed Architecture

Detailed Architecture

Next on my Cloud program was ‘Development Operations in the Cloud: A Use Case and Best Practices‘ by Greg Stachnick and Jeff Stephenson. They talked about best practices using the Cloud Services to develop applications from the modern DevOps point of view.


Modern DevOps

The case study was about the development of the Developers Cloud Service itself, neat!


Developers Cloud Service Outline

This is a big project which is running completely in the cloud. Here is an image that shows a code review screen (sorry for the poor quality)


Code Review

After accepting the changes the changes are pushed back to the mail line, triggering the next integration cycle in the continuous integration system. The typical cloud developers life is


Day  in the Life of a Devloper

and the day of a manager

to summarize these points



This summary hit the nail on the head. I’ve bin a contractor in many projects, always asking for more machines or more power. I would be happy if I could spin up another machine to do some testing instead of waiting for some other things to finish using the machine I wait for.

Before my day is over there are two sessions about ADF and JDeveloper to attend. First was Shay Schmeltzer with ‘Oracle Application Development Framework and Oracle JDeveloper: What’s New‘ which reveals what’s coming up in the world of ADF and JDeveloper. Shay started with the short history of ADF and JDev


which is even longer if you count JBO to it too, which started 1999. Impressive. The session was more about features which are new in JDev 12.2.1 and JDev, both versions are out quite some time.  So, nothing new for seasoned ADF developers at the beginning.

Not so well known are ADF Business Components Triggers which are more known by Forms developers. They allow to do things right before or after some DB events fires.


ADF BC REST Services and REST DataControl are better known if you work in the cloud or with mobile applications:

Remote Regions where introduced with JDev 12.2.1 but needed a patch to make them run (fixed in


Remote Task Flows:


UI stuff like responsive support through templates (Tablet First), Massonry Layout and matchmediaqueries:


Lots of new and changed data visualization components:

and finally to sum things up, other enhancements behind the scenes:


For the future we can expect more and easier support for REST services and writing Groovy code. The biggest change will be the integration of JET Composite Components into ADF pages. JET Composite Components are an equivalent to ADF Declarative Components. You can build components from using other components, add properties to them to influence their behavior. Composite Components fire events which you can use to interact. Not sure how this will work, other that in the end you have HTML. Bad thing is that there is not even a time frame for this. More details in hte next section.

Anyway, ADF is not dead! There will be future development and enhancements in JDeveloper and ADF.

Final session for this long day ‘Oracle Development Tools and Frameworks: Which One Is Right for You?‘ by Shay Shmeltzer (again) and Denis Tyrell. As some of the features are not available at the moment the ‘Safe Harbor’ statement comes to play. So if you see something which you don’t find in the available version, you have to patiantly wait for it. No time frame given😦

Shay summarized the different frameworks ADF, MAF, JET and ABCS and pointed out their key features. As the frameworks are well known I spare most details. As promised I give more detail about the Oracle JET Composite Components.

Sample JET Composite Components

Sample JET Composite Components

Key features of JET Composite Components and there basic structure is shown below

(Coming soon!) The composite components end up together in a Tenant Component Catalog where the components can be filtered by their characteristics


Which late will be extended so that components are available from different channels


In the end there will be Project Visual Code provides a low code environment

Project Visual Code

Project Visual Code

After this deep dive into JET Composite Components I present the summary of the session which shows which development framework is used for which development

At the end of the session Shay and Denis answered some question which are noteworthy. I Cant remember all question but tried to summarize the key points from the answers:

  1. Oracle focuses on JET as the future development environment Future focus on jet. Why? ADF is already feature rich and the developer don’t ask for much more.
  2. Developers want more client side development. Demand on server generated UI is going to decline.
  3. JET will get offline capabilities! This can’t be done easily with ADF.
  4. JET allows faster exchange of libraries. JavaScript developers tend to rewrite their UI faster then ADF developers (see yesterdays summary where Geertjan Wielenga made the same point).
  5.  Public Component Catalog is only public to a point. You have to submit components which then will be vetted by someone before other users can use them.
  6. Cloud IDE (writing code in the cloud) will have JavaScript capabilities
  7. ABCS (Application Builder Cloud Service) is not available on premise right now
  8. For declarative JET development look at ABCS. ABCS allows to get the underlying JET code (save as) so you can look at the code and change it, e.g. to use it elsewhere.

Summary of Day 2 at Oracle Open World 2016

I started day two with brushing up my knowledge about NetBeans and how to work with it. I attended a tutorial session about a JPA modeling tool (jpamodeler.github.io) by Geertjan Wielenga and Gaurav Gupta.

This tool, written by Gaurav Gupta,  allows seamless working with entities to create data models and the other way around. It’s a graphical tool to create complex entity relationship models and to generates code like REST API and Angular JS 1 from the model. Nicely done plugin.

Lets hope we see more plugins like this one, now that NetBeans is donated to the Apache Foundation.

Next session again on NetBeans and this time on ‘Ten Essential Building Blocks of JavaScript in the Enterprise’ by Geertjan Wielenga again. The session talked about building enterprise applications with modern JavaScript front end. This trend is still picking up momentum in the industries, the room was packed.

Building blocks

Building blocks

You may ask ‘JavaScript in the enterprise?’ and this was i thought first too, but Geertjan showed why this can be done and how. He showed how to translate concepts such as ‘modularity’ and ‘loose coupling’ to JavaScript applications.

The are however things to think about like that you don’t put everything into the browser! There are applications which don’t need to be in the browser as they are very specific to only a couple of people (like air traffic control software). You can supplement such apps with new browser based parts like notifications or reports.

New features should be based on HTML, CSS and JavaScript. Avoid external plugins or flash. CSS isn’t all about styling. CSS is modular today (about 50 modules). Some of the feature you use CSS for can be accomplished by using JavaScript in a better way. A sample is that CSS is used to show/hide elements from the DOM to get responsive designs (mediaqueries). Using JavaScript you load/unload libraries from the DOM reducing the size of the DOM. JavaScript allows to get better result then CSS mediaqueries.

JavaScript Librarires

JavaScript Librarires

One other thing to do is to differentiate between frameworks and libraries (see picture) and what they are doing. The question to answer is if to use frameworks or libraries to build your application. Using a Framework lock you in on the vendor, libraries allows you to switch them out if you find a better solution. On the other side you have to put it together yourself, or use  e.g. OracleJET which puts some well known libraries together to a working framework but allow to switch the libraries against others.

A more debatable argument Geertjan made was about ‘Life in a volatile Ecosystem’:


which points out, that you just code the application once, so maintainability isn’t the biggest concern. You rewrite the app anyway in short time. a so

After a short break to change the venue I was back into the cloud again. Greg Stachnick talked about ‘A Cloud Platform for Developers: A Tour of Oracle Developer Cloud Service’, a more executive overview with a couple of demos. This is not new to me so I spare the details. The new info were the things to come in future versions like hte Cloud IDE which allows you to change code directly in the Developers Cloud.

Cloud IDE

Cloud IDE

Also new will be the support of Docker Pipeline for continuous integration in a DevOps way:

Docker Pipeline

Docker Pipeline

The downside is that Greg clod not disclose exact date. We are in the range of hte ‘next year’😦

Next session, again a change of the locate included, was Shay Sheltzer on Application Builder Cloud Service:

Application Cloud Builder Service

Application Cloud Builder Service

In short the Application Builder Cloud Service allows hte citizen developer to create applications by abstracting most of hte complexity away. Applications can be build from templates, you can add your one templates to e.g. implement some corporate identity. The development is done by using ready to use components (in hte end OracleJET is used for the UI of hte application) from the component pallet. You only have to drag the components to their place on the canvas defined in hte template and you are done.

The data model is build from the entries you do while putting the application together. Once you deploy the application the entries to the field are stored in a DB. There is not administration of hte db required, it’s all done in hte background. The downside right now is that you only can import/export data to the app using csv files. Later version can use REST and the  Integration Cloud Service to get to corporate data.

To close the day I went over to the Oracle Applications User Experience Cloud Exchange an event inside OOW16 showing then next generation UX. There were some very interesting approaches on how UX can and will (?) work in the future. Some ideas are already implemented in the next versions of some cloud applications.

Smart Office, IoT and other more experimental interacting methods are very interesting for future UX. I had a great time there!




Summary of day one Oracle Open World 2016

Day one, Sunday 18th September 2016, is reserved for Oracle User Forum, so it’s not the real start of the OOW which will be Larry Ellison’s keynote on Sunday afternoon.

Nevertheless, Sunday is full of interesting session. I tend to pick a main theme for this day to get at much info in the short time available.

This year I choose Microservices and SOA Cloud Service.

The first session I attended was about design pattern for the SOA Cloud Service by Arturo Viveros and Ronald van Luttikhuizen. They boiled down their experience doing SOA projects in well known design pattern (Design Patterns) which you can use if you are tasked with the same problem. They identified patterns like ‘publish/subscribe’ or ‘mediator’ and showed how to implement them in the SOA Cloud Service and other cloud services.

This was really interesting and useful.

Next session was about ‘Tips for mastering SOA Cloud Service’ by Robert van Mölken. He gave practical tips about things you should do and things you should better not do when provisioning the service, running it and writing or composing applications for it. A session with lots of practical info.

To round up the  Microservice/SOA theme I attend a session ‘Microservices and DevOps and Oracle Cloud: A Bright Future’ by Sai Janakiram Penumuru. Sai strongly advised to use micro services together with SOA Cloud Service.

The thing I remember best was the ‘definition’ of microservices he gave. He compared a microservice to Unix shell commands. A Unix shell command does one thing, but does it good. Multiple shell commands can be tied together to build something bigger (e.g. using the pipe symbol). This definition is intuitive🙂

The remaining on the session he talked about how DevOps works and how the different Oracle Cloud Services supports this with the help of microservices.

The remaining of the day was reserved for networking and the OOW annual ACE dinner. This year the event held at the Chart House. Great food, great views!

Thanks to the ACE program for this great event.

DOAG DevCamp2016: Oracle Development Cloud Service Hands On (Part 4)

In part three of the series we completed the task to setup the build system in the DCS for the AppsCloudUIKit application. This final part of the series concludes with setting up the ‘Continuous Integration’ part of the application into the JCS.

Setting up the Continuous Integration to the JCS

The final task is to setup the continuous integration to the Java Cloud Service we use. This is done in the ‘Deploy’ tab where we create a ‘New Configuration’

We then fill in the needed data:

The Configuration name and the application name must match

Nest we select a deployment target. Here we can choose between a JCS and an Application Container Cloud depending on the type of application we develop. As we have created a web application using ADF we select the Java Cloud Service.

We can decide which type of deployment we like: on ‘Demand’ or’ Automatic’. Automatic means that after each build the deploy task is triggered. With the checkbox ‘Deploy stable builds only’ we tell the task to only deploy successful builds. If we choose ‘On demand’ we can select the build we like to deploy

To see the application running in the JCS we can use the URL AppsCloudUIKit (