AMIS Blog http://technology.amis.nl Friends of Oracle and Java Tue, 25 Nov 2014 06:41:00 +0000 en-US hourly 1 http://wordpress.org/?v=4.0.1 Christmas Masterclass Oracle SOA Suite 12c http://technology.amis.nl/2014/11/20/christmas-masterclass-oracle-soa-suite-12c/ http://technology.amis.nl/2014/11/20/christmas-masterclass-oracle-soa-suite-12c/#comments Thu, 20 Nov 2014 15:16:56 +0000 http://technology.amis.nl/?p=33188 On Friday, December 19, AMIS organises a special XMas-terclass on SOA Suite 12. SOA Suite 12c (June 2014) was a major release for Oracle’s flagship integration product. This release introduces new functionality, higher developer productivity, more robust run-time scalability and performance. 12c brings together development and administration of Service Bus and SOA composite applications, it ships [...]

The post Christmas Masterclass Oracle SOA Suite 12c appeared first on AMIS Blog.

]]>
On Friday, December 19, AMIS organises a special XMas-terclass on SOA Suite 12.

SOA Suite 12c (June 2014) was a major release for Oracle’s flagship integration product. This release introduces new functionality, higher developer productivity, more robust run-time scalability and performance. 12c brings together development and administration of Service Bus and SOA composite applications, it ships new technology adapters as well as a SDK to develop custom adapters and provides across the stack support for REST-style services and JSON-format messages. New facilities were added to the stack, like Managed File Transfer and Enterprise Scheduling Services, and others better integrated, such as Oracle Event Processing and Business Activity Monitoring.

This masterclass, based on over a year’s beta program participation and extensive research and experimentation, deals with many of the essential topics for SOA Suite 12c. In one day, presenters Robert van Mölken and Lucas Jellema will discuss how SOA Suite 12c will change and enhance the way SOA projects develop services. They will show many live demonstrations of the tools in action – providing you concrete insight in new and improved features. At the end of this masterclass, attendees will know how SOA Suite 12c can benefit their organizations and how they can get started with building skills, migrating applications and using this new release properly.

Throughout the day, participants and presenters have enough opportunity to discuss real world experience and brainstorm on how to best make use of SOA Suite 12c in their organizations.

All demo code and slides will be made available. Participants will also receive a voucher for the Oracle SOA Suite 12c Handbook by Lucas Jellema (Oracle Press, Spring 2015).

The SOA Suite 12c Xmas-terclass is aimed at developers, solution architects and administrators with SOA Suite 11g experience.

More information & registration

The post Christmas Masterclass Oracle SOA Suite 12c appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/11/20/christmas-masterclass-oracle-soa-suite-12c/feed/ 0
MAF 2.0 : Loading Images in a Background Process – Part I http://technology.amis.nl/2014/11/18/maf-2-0-loading-images-background-process/ http://technology.amis.nl/2014/11/18/maf-2-0-loading-images-background-process/#comments Tue, 18 Nov 2014 09:38:15 +0000 http://technology.amis.nl/?p=32895 Images are heavily used in Mobile apps. For instance a list that contains employees usually shows the images of these employees. This works well when you have a WIFI connection, but what if you are using slower connections ? If you look at a mobile twitter app you will see that, depending on connectivity, images [...]

The post MAF 2.0 : Loading Images in a Background Process – Part I appeared first on AMIS Blog.

]]>
Images are heavily used in Mobile apps. For instance a list that contains employees usually shows the images of these employees. This works well when you have a WIFI connection, but what if you are using slower connections ? If you look at a mobile twitter app you will see that, depending on connectivity, images are loaded instantaneously or delayed. In this post I explain how you can load the images of a List in a background process, after the other content has been loaded.

As mentioned before, a twitter client is able to defer the loading of images whenever a slow connection is detected. You are able to read the content as soon as it is loaded, and the images will show up with a delay, one at a time.

No WIFI connection active

No WIFI connection active

WIFI connection active

WIFI connection active

Implementing the basics

I was tempted to make a working sample of this behavior in an Oracle MAF app. The best way to prove this concept is to simply build an app containing a simple list showing an image of the employee and the employee’s name. The data in this list would typically come from a web service but for the simplicity of this example I use a POJO. The POJO is based on the Employee POJO from Oracle’s WorkBetter sample app. After I created the properties, I make sure that all getters and setters are generated.

public class Employee {
    private int empId;
    private String firstName;
    private String lastName;
    private boolean active = false;
    private String image;

There is one extra method, called setImageById(), that takes the empId and constructs the image name. This will be used and explained later in this post. The actual images are provided as part of the application.
images

    public void setImageById(int id){
        Integer i = new Integer(id);
        String image = i.toString() + ".png";
        setImage(image);  
    }

As a dataprovider I create a new class called EmployeeService. In the constructor of this a list of Employees is created and once this list is ready, a call to setEmpImage() is made. In this method calls out to out POJO class to set the Employees Image.

public class EmployeeService {
    protected static List s_employees = new ArrayList();

    public EmployeeService() {
            s_employees.add(new Employee(130, "Mary", "Atkinson"));
            s_employees.add(new Employee(105, "David", "Austin"));
            s_employees.add(new Employee(116, "Shelli", "Baida")); 
            // .... More
            setEmpImage();
   } 
    public void setEmpImage() {
        for (int x = 0; x < s_employees.size(); x++) {
            Employee e = (Employee) s_employees.get(x);
                e.setImageById(e.getEmpId());
   }
    public Employee[] getEmployees() {
        return (Employee[]) s_employees.toArray(new Employee[s_employees.size()]);
    }

The class also contains a getEmployees() method that returns all the employees. This getter will be used on the listpage that is created next. The creation of the listpage is simple. After creating a data control on the EmployeeService class we can just drag and drop the EmployeesCollection to the AMX page as an MAF List View. Make sure you pick a list style where you can actually see the images. In this example, after creating the list we have to make sure that the Listview knows where the images are located so we need to make a small change.

<amx:image source="#{row.image}" id="i2"/>

Because the image path is pics/ this must be changed to:

<amx:image source="pics/#{row.image}" id="i2"/>
DnD

Drag and Drop Employees Collection

Now you can deploy the app and see how the images are loaded all at once if you open the app.

allOtOnce

All Images Displayed at Once

Implementing the background loading

Now lets see what we need to do when we want to load the images in the background. First of all we must determine the connection type. When it is WIFI, we can load all data, including the images all at once. Otherwise we use two separate calls. The first one reads the employee data and the second one is started in a background process to load the images of the employees. In this post we do not actually implement it in this way. We don’t look at the connection type at all. For now we will simply assume that there is a slow connection and always load the images in the background, as this was the purpose of this post anyway.
To load images in the background we need to create a class that can run as a separate thread.
This is a new class, BackgoundLoader. This class implements the Runnable interface.

package com.blogspot.lucbors.img.mobile.services;

import oracle.adfmf.framework.api.AdfmfJavaUtilities;

public class BackgroundLoader implements Runnable {
    public BackgroundLoader() {
        super();
    }
    EmployeeService empServ = null;

    public BackgroundLoader(EmployeeService empServ) {
        this.empServ = empServ;
    }
    boolean go = false;

    public void run() {
        while (true) {
            if (go) {
                empServ.loadImage();
            }
            try {
                Thread.sleep(10);
            } catch (InterruptedException e) {
            }
        }
    }

Note that when this is running, it will call the loadImage() method on the employeeService class in a background thread. We will use this BackgroundLoader class as the worker class where we create an instance of. This instance is passed to a new thread that is created in the setEmpImage() method, by calling startImageLoader(), when we do not have a fast connection. Once the thread is started, the setEmpImage() returns immediately.

    public void setEmpImage() {
        for (int x = 0; x < s_employees.size(); x++) {
            Employee e = (Employee) s_employees.get(x);
            if (1 == 0) {
                // this is what we do with a fast connection
                e.setImageById(e.getEmpId());
            }
            if (1 == 1) {
              // this is what we do with a slow connection (or if 1==1)
              startImageLoader();
          }
        providerChangeSupport.fireProviderRefresh("employees");
      }
    }

    private BackgroundLoader loader = new BackgroundLoader(this);
    private Thread worker = new Thread(loader);

/*
* Starts the BackgroundLoader thread which invokes the loadImage method to load the images in
* a background process.
*/ 

    public void startImageLoader() {
        setLoaderStarted(true);
        loader.go = true;
        if (!worker.isAlive()) {
            worker.start();
        }
        setLoaderStarted(loader.go);
    }

The run method of the BackgoundLoader class then calls the loadImage() method in the EmployeeService class as mentioned before. This executes the loadImage() on a separate thread so the UI is not locked. The data on the screen is already shown, while the loadImage() continues to work in the background to load the images. Note that the UI is not blocked. You can scroll and navigate at your convenience.

Finally the loadImage() method has one more, very important aspect. Once data in the Employee collection changes, that is once an image is retrieved, we need to call AdfmfJavaUtilities.flushDataChangeEvents(). This is necessary because as data is updated in the background thread. Any changes in background theads are not propagated to the main thread until they are explicitly flushed by calling AdfmfJavaUtilities.flushDataChangeEvents().

public synchronized void loadImage() {
        int i = 0;
        long time = 1000;
        while (i < filtered_employees.size()) {
            Employee e = (Employee) filtered_employees.get(i);
            int id = e.getEmpId();
            e.setImageById(id);

            try {
                wait(time);
                AdfmfJavaUtilities.flushDataChangeEvent();
            } catch (InterruptedException f) {
                //catch exception here
            }
            i++;
        }
    }

Now there is no need to make any changes to the UI. It will behave the same as before, with the difference that images are shown not all at once, but on a one by one basis. Simply redeploy the app and run it. You will see the images loading slowly. Note that to mimic slow connections we wait 1 second after every image. This makes the background loading very visible in the UI. The video below shows the image loading behavior.

Summary
In this post you learned how to use a background process to load images to the UI. This sample can be improved by actually calling a webservice to retrieve the data, instead of hardcoding all emps in a POJO. You can, based on connectivity, load the images in the same thread, or start a background process to call the service that returns the images.

Resources
To look at the WorkBetter demo app that is shipped with Oracle MAF,you can unzip the publicSamples.zip and open the workBetter app in Jdeveloper. The public samples also contains the StockTracker app that is used to demo the background process.
If you want to read more on Mobile Application Framework, you can also buy my book which is available from amazon: http://www.amazon.com/Oracle-Mobile-Application-Framework-Developer/dp/0071830855

The post MAF 2.0 : Loading Images in a Background Process – Part I appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/11/18/maf-2-0-loading-images-background-process/feed/ 0
Wetgeving frustreert vernieuwing http://technology.amis.nl/2014/11/17/wetgeving-frustreert-vernieuwing/ http://technology.amis.nl/2014/11/17/wetgeving-frustreert-vernieuwing/#comments Mon, 17 Nov 2014 06:25:29 +0000 http://technology.amis.nl/?p=33080 Je bent bezig met het creëren van iets nieuws? Een nieuw product of bedrijfsmodel waardoor je organisatie een unieke positie in kan nemen? Je zoekt je uitdaging in het oplossen van uitdagende inhoudelijke hobbels waar je lekker je tanden in kunt zetten. Maar in de praktijk loop je als vernieuwer al snel tegen bestaande wet [...]

The post Wetgeving frustreert vernieuwing appeared first on AMIS Blog.

]]>
Robbrecht van Amerongen

Robbrecht van Amerongen
Business Innovation Maanger

Je bent bezig met het creëren van iets nieuws? Een nieuw product of bedrijfsmodel waardoor je organisatie een unieke positie in kan nemen? Je zoekt je uitdaging in het oplossen van uitdagende inhoudelijke hobbels waar je lekker je tanden in kunt zetten. Maar in de praktijk loop je als vernieuwer al snel tegen bestaande wet en regelgeving aan als het gaat om innovatie. Wat doen je dan? Conformeren, of de bestaande regels uitdagen….? 

Innovatie: Dat mag niet…!

Innovatie gaat over het veranderen van techniek, processen en bedrijfsmodellen. Daarbij is het uiteraard de bedoeling dat je iets nieuws introduceert. Het is heel gebruikelijk dat je al snel tegen regels en wetgeving aanloopt. Ok zal je al snel te maken hebben met protectionistische maatregelen zoals certificering, vergunning en ontheffing.

Een aantal van deze regels passen in mijn ogen niet meer bij de huidige maatschappij waarbij een groot deel van de communicatie en het handelsverkeer digitaal verloopt. Waarom heb ik bijvoorbeeld een vestigingsplaats nodig wanneer ik mijn activiteiten alleen maar online uitvoer? En waarom moet ik een vergunning hebben als ik min woning tijdelijk wil verhuren? Raar…

Disruptive innovation

Met de opkomst van disruptive innovation zie je dat de vernieuwing en concurrentie uit een totaal andere hoek komt. Een andere bedrijfstak of een totaal ander product. Geïntroduceerd door partijen die zich niet storen aan, of zelfs geen idee hebben van vergunning en regelgeving. De introductie van een merk als Uber toont aan dat je vanuit een kantoor in San Francisco een verstorende impact kan hebben op de Nederlandse markt van taxi vergunningen. De branche is faliekant tegen dit nieuwe bedrijf, de markt vindt het geweldig.

clip_image002De voorbeelden van disruptive innovation geven aan dat deze modellen snel tegen nieuwe regelgeving aanlopen. Soms moet de overheid nieuwe wetgeving maken of schaft ze bestaande regels af. De zelfrijdende auto lokt de discussie uit over de competenties van de menselijke “bestuurder”. Een blinde man heeft in de US al 200.000 kilometer gereden met een zelf rijdende auto. Het is echter nog steeds verplicht om een auto te voorzien van een stuur en een “bekwame” bestuurder.

Innovatie: gewoon doen!

Innovaite? Dat mag niet!In mijn ervaring loopt de wetgeving altijd achter op de werkelijkheid en bij innovatie zou ik me daar ook zeker niet door laten tegenhouden. Daarbij zal je je wel bewust moeten afvragen of de regelgeving bedoeld is voor veiligheid of voor marktbescherming. Innovatie gedijt het beste in een omgeving met een liberaal vergunningenbeleid. En als dat er niet is dan is er altijd nog het “just do it” paradigma. Laat je vooral niet tegenhouden door negatieve en verbiedende geluiden uit de omgeving. Denk bijvoorbeeld maar eens hoe leuk de kinderserie Pippi Langkous is als iedereen naar het regeljuffertje Annika had geluisterd.

In mijn werkt wet- en regelgeving veelal frustrerend voor innovatie. Daarom zou ik altijd eerst iets doen dan pas kijken of het mag. Wellicht heb je iets moois gecreëerd en forceert de markt dit tot een geaccepteerd model. Innovatie : “Dat mag wel!”

 

*Dit artikel is ook verschenen in de Computable : Wetgeving frustreert vernieuwing

The post Wetgeving frustreert vernieuwing appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/11/17/wetgeving-frustreert-vernieuwing/feed/ 0
In-depth look into Oracle API Catalog (OAC) 12c http://technology.amis.nl/2014/11/14/in-depth-look-oracle-api-catalog-oac-12c/ http://technology.amis.nl/2014/11/14/in-depth-look-oracle-api-catalog-oac-12c/#comments Thu, 13 Nov 2014 22:00:43 +0000 http://technology.amis.nl/?p=32920 With the release of Oracle Enterprise Repository 12c another product was released. Oracle API Catalog 12c (OAC) allows you to build a catalog of your organization APIs. OAC provides a layer of visibility to those APIs so application development knows what and which one to use.  OAC includes a simple metamodel for an API asset, [...]

The post In-depth look into Oracle API Catalog (OAC) 12c appeared first on AMIS Blog.

]]>
With the release of Oracle Enterprise Repository 12c another product was released. Oracle API Catalog 12c (OAC) allows you to build a catalog of your organization APIs. OAC provides a layer of visibility to those APIs so application development knows what and which one to use.  OAC includes a simple metamodel for an API asset, automation to populate OAC, and the ability for users to search OAC for APIs and understand the details of the APIs to assess their fit in the user’s application.

Installation

I’m not going to bore you with the details about the installation by giving a installation guide. It took me about 40 minutes from scratch (excluding downlOERoad time). The steps are describes in the installation guide Oracle provides. OAC is part of the OER 12c installation jar, but can be licensed and installed, as an own managed domain, without licensing and installing OER.

The steps to take on high level (from scratch):

  1. Download and install Oracle Database, Fusion Middleware Infrastructure 12c, Oracle Enterprise Repository 12c, RCU patch 18791727 and Weblogic patch 18718889 (these last two are important, else you can’t install OAC).
  2. Run RCU (oracle_common/bin/rcu.sh|bat) and create the OAC repository
  3. Run Weblogic Domain creation (weblogic/bin/config.sh|bat) and create a new which includes OAC.
  4. After installation and startup of weblogic and managed service you can find the OAC console at url: http://serverhost:8111/oac

Note: if you harvesting from another weblogic server (like SOA Suite 12c), the weblogic patch should also be installed there.

Taking the first steps

When taking my first steps the official getting started guide can help you a lot. OAC has four high-level features. OAC collects services, it has a harvester which creates API assets in OAC. After harvesting you can add metadata to the API assets like description, tags and documentation. After harvesting and editing an API asset it can be published so it is visible for application development. Published APIs can be discovered and used  through the API Catalog console and via the Oracle JDeveloper Oracle Enterprise Repository plug-in.

Logging in for the first time

After installing FMW & OAC 12c and starting the Weblogic server you can login into the provided OAC console (default) running at http://serverhost:8111/oac.

OAC12c: Login to the provided console (admin / weblogic 1)

OAC12c: Login to the provided console (admin / weblogic 1)

The default username and password is admin / weblogic1. The first time you are asked to change the password.

OAC12c: First-time login needs password change

AOAC12c: First-time login needs password change

After changing the password you will login into the console. The dashboard will be empty because no APIs are harvested yet. But when APIs are harvested they are listed at this page. On this page you can also navigate to “My APIs” which list the API you bookmarked.

OAC12c: Empty dashboard after first-time login

OAC12c: Empty dashboard after first-time login

As admin, navigate to “Admin”, you can configure Users and Departments, control Sessions, change System settings and Import/Export the catalog. This blog will go in to the Admin features later on.

OAC12c: Admin page for configuring users, departments, sessions and change system settings

OAC12c: Admin page for configuring users, departments, sessions and change system settings

Collecting / harvesting services

The first activity is to harvest APIs into OAC. The harvester is used to populate OAC with API assets from SOA Suite and Service Bus or other deployed services. The harvesting process can be run from the command line or can be integrated into the build process. The latter can be used to automatically do the harvest at build time. Harvested API assets will get a “Draft” state and won’t be visible to developers yet.

For this blog I will use the command line harvester. There are to types of harvesters; one for SOA Suite, OER & File-based assets and one for harvesting OSB. I will use the first harvester and use it with integrated SOA Suite 12c environment.

OAC12c: Harvest assets using command line harvester

OAC12c: Harvest assets using command line harvester

For this blog I changed the HarvesterSettings.xml, which is decribed here, and added OAC en SOA server information, including projects to harvest.

OAC12c: Change Harvester Settings in supplied XML configuration

OAC12c: Change Harvester Settings in supplied XML configuration

Doing it like this you don’t have to add any parameters to harvest.sh|bat. If you want to harvest a specific asset you can use the command line properties, for example another SOA composite.

harvest.bat -remote_url localhost:7003 -remote_username weblogic -remote_server_type SOASuite -remote_project ValidatePayment_rev1.0 -soa_partition default

The result after running the harvest command should look something like on the image below (in preview mode).

OAC12c: Result of running harvest command (preview mode)

OAC12c: Result of running harvest command (preview mode)

View harvested APIs

After harvesting you first asset(s) you can login the OAC console to see the result. Assets that are harvested will get the “Draft” status, thats why  after logging into the OAC console again, no APIs are published and visible on the dashboard. Search on Service Type = Draft to view newly harvested APIs.

OAC12c: Search on draft for freshly harvested APIs

OAC12c: Search on draft for freshly harvested APIs

To see, edit and publish the API asset details click on the specific row. The details page opens which shows information about the asset like Type of Asset, Endpoint, Harvester properties and WSDL summary including namespace, porttype and methods.

OAC12c: API asset details including endpoint and WSDL summary

OAC12c: API asset details including endpoint and WSDL summary

Besides the details you can perform some actions (from left to right):

OAC12c: API actions

Link, toggle view, bookmark, edit & delete

  • Link to details page: Get URL of API asset details page you currently look at and can share.
    Example: http://soabpm:8111/oac/index.jsp?assetid=50003&renderMinMaxButton=false&renderNextPrevButtons=false
  • Toggle between tabs and view all: You can view the API asset details in tabs (tab per category) and view them on single page like displayed above.OAC12c: Tabbed view of API asset details
  • Add to My APIs: Click to bookmark API. After bookmarking API it is visible under MyAPIs page.
  • Edit details: Page to edit API asset details. More about this below.
  • Delete items: Delete the API asset from the repository.

Add metadata to harvested API

To add metadata or edit other details of an API asset click on the edit icon/button to open the Edit Asset page. On this page you can change the name, change the version, add keywords and descriptions, but also add a link to documentation URL and assign/upload an icon. To publish an API change the API status from Draft to Published. It is also possible to set the API active status from Active to Retired.

OAC12c: On the Edit Asset page details like, keyword, description and version can be changed

OAC12c: On the Edit Asset page details like, keyword, description and version can be changed

Publish a draft API

To publish an API you just need to change the API status to published and saving the asset.

OAC12c: Publish-API
On the overview page the API status is changed and the API details can be exported to Excel and PDF.

OAC12c: API status changes when published

OAC12c: API status changes when published

When going back to the dashboard the recently published API is visible. When you click on the name of the API asset the user is redirected to the details page.

OAC12c: Dashboard listing recently published APIs

OAC12c: Dashboard listing recently published APIs

On both the dashboard as on the Asset detail page reviews are mentioned. The admin user can’t perform this action. For this we will create some new users.

Sharing the APIs with other users

After taking the first steps the APIs can be shared with other users. To do so new users can be added with specific roles. As admin user click on the “Admin” menu item and choose the Users section (selected by default). From this page new users can be created, you can search for users and edit & delete users.

OAC12c: Users administration page

OAC12c: Users administration page

Add, search, edit and delete users

To create a new user click in the Users section on the Add User icon on the top-right of the page section. The Create New User page is displayed. The page is divided into three sub sections; user information, roles and departments. The user information section contains form fields for the username, password, real name and email & phone information. It is also possible to force changing the password and allow the password to never expire. A user can have one of four statuses; Active, Inactive, Lockout (after 3 failed logins) and Unapproved.

OAC12c: Create new user - overview section

OAC12c: Create new user – overview section

The roles section gives the opportunity to give the user specific access. The admin role gives you access to harvest, edit & publish API assets and manage application settings liked described in this blog so far. The curator can harvest and edit & publish API assets and the developer can access / search published APIs.

OAC12c: Create new user - roles section

OAC12c: Create new user – roles section

The department section gives the opportunity to add the user to a specific department. Departments is not more then just a filter of which users belong to that department. It is not necessary to add the new user to a department.

OAC12c: Department Details

OAC12c: Department Details

To see user details and change user information or even delete a user go back to the Users section. To see user details click on the name of the user and you will be navigated to the User Details page. You can also search on department, role and status. The latter can i.g. be used if a user is lockout of there account. To delete a user just checked the box in front of there username and click on the Delete button.

OAC12c: Search, edit or delete Users

OAC12c: Search, edit or delete Users

The User Details page shows the same sub sections; overview and roles & departments the user is assigned to. The interface is very universal throughout the application. On this page you can also switch to tabbed mode, one tab per sub section, and able to navigate to the edit page, duplicating the user (create new user with same roles and departments) or deleting the user from the repository.

OAC12c: User details and actions

OAC12c: User details and actions (edit, duplicate and delete)

Also create a user, developer1.  with the Developer role.

OAC12c: Developer User

OAC12c: Developer User

Switching user

To switch to a different user you can sign out of the OAC console by selecting the “Sign Out” options under your user menu. Just click on the arrow on the right side of your name.

OAC12c: Switching User by signing out of OAC console

OAC12c: Switching User by signing out of OAC console

Logging in as Curator will give the same functions as an Administrator, but without the Admin tasks.

OAC12c: Curator Dashboard

OAC12c: Curator Dashboard

Logging in as Developer will give even less options. A developer can only search in published API and add APIs to there favorites.

OAC12c: Developer Dashboard

OAC12c: Developer Dashboard

Adding an API to My APIs and reviewing the API

Als user you can add APIs to you favorites (My APIs). To add a API to your favorites go to the API asset details page and add the API to My APIs by clicking the “Add this to My APIs” button. After adding it to My APIs the details page is update and shows how many times it is added (usage) in the past 6 months. Users that have added the API to there My APIs can review on the API asset.

OAC12c: Adding API asset to My APIs

OAC12c: Added API asset to My APIs

When you click on the “View Usage History” link a pop-up is opened which shows a graph with usage over past months and which users uses the API.

OAC12c: API usage history

OAC12c: API usage history

To view all API that the user had added to My APIs the user van click on the “My APIs”  menu item. The My APIs page shows all the APIs the user has added and gives the user the opportunity to view the details by clicking on the name of the API, to write a review about an API or to delete an API from the list.

OAC12c: My APIs showing all added API and actions to review or delete a API

OAC12c: My APIs showing all added API and actions to review or delete a API

To write a review about an API click on the first (review) icon on the right side of the APIs name. A pop-up is opened with a form that the user can use to submit a review. The user can give a rating and a comment (max 4000 characters). After submitting the review the page is redirected to the a page which displays all reviews.

OAC12c: Submit a Review and viewing API reviews

OAC12c: Submit a Review and viewing API reviews

OAC12c: Dashboard shows latest reviews

OAC12c: Dashboard shows latest reviews

Other administrator tasks

View sessions

The administrator can perform some other tasks that I didn’t discuss yet. On the Sessions section page all (active) sessions are displayed and an administrator can look into the details of the session. An administrator can also delete sessions, which means if a user is active in the console the user will be logged out.

OAC12c: An administrator can view (active) sessions

OAC12c: An administrator can view (active) sessions

OAC12c: An administrator can view session details

OAC12c: An administrator can view session details

System settings

An administrator can change a lot of setting to change the behavior of the OAC console. The system settings page is divided into four main sections; Functional settings, Server Settings, Enterprise Authentication and Import and Export settings (not the actual import/export).

The functional settings sections contains settings for search results and printing details via PDF:

OAC12c: Functional Settings - Search results and PDF generation

The server settings section contains settings for embedding HTML in asset details:

OAC12c: Server Settings

The Enterprise Application section contains settings for connection to a LDAP server for user management:

OAC12c: Enterprise Application Settings

The Import/Export sections contains settings for setting timeouts:

OAC12c: Import/Export Settings

Import / export repository

The import / export of the repository can be done in the corresponding section, but instead of it being done in the web UI it uses java Webstart.

OAC12c: Import/Export Tool

My Verdict

To conclude this blog post I will give my verdict about Oracle API Catalog 12c. In the last week I had some ups but also some downs. I started on my windows laptop and installed everything locally. At first everything seemed fine, I could harvest my first Asset, but after trying to view the details I got a error after another. In the days that followed I was helped by Oracle Development and in special by Mark Dutra, but we couldn’t figure out what the problem was. I think it has something to do with security settings and how the laptop is configured (domain wise).

After creating a Linux VM and installed everything again I finally had success and the tables were turned. I really like the interface, it is very clean and uses a common workflow on every page. The use of a separate harvester (command-line or ANT task) is in one way a great solution, because you can use it in your already existing build process, but I missed the option to do this using the OAC console, you don’t always have access to use scripting.

The harvested APIs are added as Draft and an admin or curator can edit the information and publish the API. This version is a great start with lots of information already, like the endpoint, WSDL/WADL summary including methods and message payload. But I miss the possibility to register dependencies between APIs. If API are harvested from one service the separate APIs are not linked to each other.

Adding APIs to your  My APIs and the possibility to write a review can be handy. The simple metrics tell you about the usage and who uses it which is already usefull, hopefully in the future more metrics will be available in OAC.

As an administrator you can perform a lot of tasks using the UI. Adding users, looking at active sessions and import/export the repository. It worked fine on Linux, but on windows I had no result. Also the possibility to connect to an LDAP will make it much easier to add users and departments.

Pros:

  • Clean and easy UI with common workflow on most pages
  • Harvest through command-line (run-time) or ANT (design-time build)
  • Possibility to edit Assets and add documentation
  • Review on API and give feedback when an API is not working correctly
  • Metrics about usage
  • A great set of administration tools

Cons:

  • Does not work well with Windows.
  • Catalog features are still basic, no dependency viewer
  • No online harvester, you can’t harvest via the OAC console

For questions you can email me on robert.van.molken@amis.nl.

The post In-depth look into Oracle API Catalog (OAC) 12c appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/11/14/in-depth-look-oracle-api-catalog-oac-12c/feed/ 0
BPM Suite 12c: Getting started with BPM Studio (JDeveloper) and Process Composer using Process Asset Manager (PAM) http://technology.amis.nl/2014/11/12/bpm-suite-12c-getting-started-with-bpm-studio-jdeveloper-and-process-composer-using-process-asset-manager-pam/ http://technology.amis.nl/2014/11/12/bpm-suite-12c-getting-started-with-bpm-studio-jdeveloper-and-process-composer-using-process-asset-manager-pam/#comments Wed, 12 Nov 2014 08:30:46 +0000 http://technology.amis.nl/?p=33019 We see a clear trend with Oracle BPM Suite that the Process Composer – the browser based modeling IDE – is getting richer in functionality. Before too long, virtually all modeling/design and many implementation activities will be supported by Process Composer. With the upcoming Process Cloud Service where the process is created in its entirety [...]

The post BPM Suite 12c: Getting started with BPM Studio (JDeveloper) and Process Composer using Process Asset Manager (PAM) appeared first on AMIS Blog.

]]>
We see a clear trend with Oracle BPM Suite that the Process Composer – the browser based modeling IDE – is getting richer in functionality. Before too long, virtually all modeling/design and many implementation activities will be supported by Process Composer. With the upcoming Process Cloud Service where the process is created in its entirety through browser based tooling, this is of course necessary.

It will be a common practice to work on business processes both in Process Composer and in BPM Studio (JDeveloper). Exchanging the process definition between these two environments is essential for smooth collaboration. In this article, I provide some pointers to get going with Process Composer in BPM Suite 12c (12.1.3) and the interaction with BPM Studio – based on the Process Asset Manager (PAM) as well as ‘plain’ export/import.

Getting started with BPM Process Composer

Process Composer is available at http://host:port/bpm/composer.

On the home page, there are several areas that you can step into: business architecture and BPM processes are the main ones. To create a new BPM project, click on the plus icon in the BPM Project title area. Provide the name and description of the project and select an existing or new space.

image

Click on the Save button to create the new space and project.

The list of all projects is shown.You can click on the newly created project to enter it.

image

The project home is presented – with very little in it as it is new.

image

Click on the plus icon to create a new BPM process.

Provide the name of the process and a description. Click on the create button.

image

The new process is listed on the project home page. Click on it to start editing the process definition.

image

The virgin BPM Process is shown in the editor. You can edit

image

For example, drag an interactive activity (human task) to the process.

image

Next, when the activity has been added, you edit its properties:

image

Note: if the trigger type of your Start node is of type None – which happens to be the default – the when you checkout the BPM process into BPM Studio (JDeveloper), you will find that there is no BPMN process component included in the Composite application diagram or file. Thanks to Niall Commiskey for helping to figure out this particilar detail. As soon as the trigger type is set to Message or Event, the BPMN Component will be included in the Composite – as would be our expectation – or at least mine.

 

 

Publish to PAM

At some point you may want to share your edit results with the rest of the world – or at least make them available for editing in BPM Studio. By publishing your session, the current state of the process definition is recorded in PAM (the Process Asset Manager) and becomes available for use in JDeveloper.

Click on the Publish icon:

image

Provide a comment to describe this next step in the life of the BPM project and click on Publish:

image

Access PAM from JDeveloper

The Process Asset Manager is accessed from JDeveloper (BPM Studio) through a special type of connection that is created in a similar fashion as all other connection resources:

image

Select PAM from the list of IDE Connection types.

Press Next on Welcome page of the connection wizard:

SNAGHTMLa3db06

Provide the login details – for example weblogic

SNAGHTMLa44d67

and the host and port for the AdminServer for the WebLogic domain running the BPM Suite/SOA Suite runtime infrastructure:

SNAGHTMLa503e9

When you press Finish and the connection details are correct, the connection is added to the list:

image

From the Windows menu, select the option Process Asset Manager Navigator.

image

This will open a new window which lists the PAM Connections and the high level content for each of them (Space and Project):

image

You can inspect the publication history for the project that started its life in Process Composer

SNAGHTMLa8e800

And the project can be Checked Out to make it available in JDeveloper – in the current application:

image

You need to provide a file system location:

SNAGHTMLa99d5a

And after checking out..

SNAGHTMLa9f430

The project will open in JDeveloper:

image

including the BPM process:

image

 

After making changes to the process definition and the other project assets, these changes can be published to PAM – for further inspection and manipulation by other developers in JDeveloper or in Process Composer:

image

A checkin comment has to be provided:

image

and the changes are written to PAM (actually a database)

In Process Composer, the checkin is listed:

image

And the changed process definition can be reviewed and edited:

image

 

Exchanging projects without using the Process Asset Manager

Projects exported from Oracle Business Process Composer can be imported into Oracle BPM Studio. Exporting a project to your local file system allows you to share projects without using Oracle Process Asset Manager (PAM). You can export a project from the application welcome pages’ project list. Find the project you want to export from the list of projects located in the project list and click the Download icon.

image

Alternatively, use the main menu – hidden away under the circular icon in the top left hand corner (it took me a while to figure out that this icon was actually the hook into this menu)

image

Choose a location on your local file system and click Save.

SNAGHTMLabd886

Import is an option in JDeveloper’s File menu:

image

Specify the type of import:

image

and select the file to import:

SNAGHTMLacb415

The list of available projects in the file is listed and when you press finish the actual import is performed:

SNAGHTMLad4e70

Note that Export from JDeveloper (or from PAM) is done in a similar way. Import can be done from the main menu (opened from the big icon image) in Process Composer.

The post BPM Suite 12c: Getting started with BPM Studio (JDeveloper) and Process Composer using Process Asset Manager (PAM) appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/11/12/bpm-suite-12c-getting-started-with-bpm-studio-jdeveloper-and-process-composer-using-process-asset-manager-pam/feed/ 0
Guest template Oracle Linux 6.5 available on Exalogic http://technology.amis.nl/2014/11/06/guest-template-oracle-linux-6-5-available-exalogic/ http://technology.amis.nl/2014/11/06/guest-template-oracle-linux-6-5-available-exalogic/#comments Thu, 06 Nov 2014 09:31:33 +0000 http://technology.amis.nl/?p=32914 When Oracle Exalogic is delivered in you data center and you implemented Exalogic as a virtual platform, the Exalogic Guest Base Template (EGBT) is based on Oracle Linux 5.8. On Exalogic you can update the template to Oracle Linux 5.10. As of 21 october the new Exalogic base template is on Oracle Linux 6.5. The [...]

The post Guest template Oracle Linux 6.5 available on Exalogic appeared first on AMIS Blog.

]]>
When Oracle Exalogic is delivered in you data center and you implemented Exalogic as a virtual platform, the Exalogic Guest Base Template (EGBT) is based on Oracle Linux 5.8. On Exalogic you can update the template to Oracle Linux 5.10. As of 21 october the new Exalogic base template is on Oracle Linux 6.5. The Oracle Linux 6.5 template for virtual platforms is available for download via Patch 19376316. The new template is applicable to Exalogic Virtual platforms which are on July 2014 PSU versions 2.0.6.1.2 or 2.0.6.0.2.

The post Guest template Oracle Linux 6.5 available on Exalogic appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/11/06/guest-template-oracle-linux-6-5-available-exalogic/feed/ 0
Using Maven to assemble and release artifacts to Nexus http://technology.amis.nl/2014/11/03/maven-assemble-release-nexus/ http://technology.amis.nl/2014/11/03/maven-assemble-release-nexus/#comments Mon, 03 Nov 2014 15:24:00 +0000 http://technology.amis.nl/?p=32898 An important part of a release process is storing artifacts in an artifact repository. Many customers use custom implementations of artifact repositories (such as file shares in combination with custom scripts) but there are also products which offer many functions of such a repository (and probably many more) out of the box so that custom [...]

The post Using Maven to assemble and release artifacts to Nexus appeared first on AMIS Blog.

]]>
An important part of a release process is storing artifacts in an artifact repository. Many customers use custom implementations of artifact repositories (such as file shares in combination with custom scripts) but there are also products which offer many functions of such a repository (and probably many more) out of the box so that custom implementations are not necessary any more. Nexus is an example of a popular artifact repository. An added benefit of using a popular product to provide repository functionality is that a lot of development tools can easily be integrated with it. Maven can easily be used to compile and assemble code and deploy it to a Nexus repository.

In this blog I will provide an example of how a shell script (as an example artifact) can be packaged and deployed to Nexus by using Maven. I will use the  to package the script, the nexus-staging-maven-plugin to deploy to Nexus and the maven-release-plugin for the version control part of the release process.

MavenSCMNexusImplementation

Sample project

My sample project can be downloaded here.

The structure is as follows;

SampleProjectStructureMy pom.xml (Maven Project Object Model) looked as follow.
POMpart1The plugin configuration looks as follows. Instead of the maven-deploy-plugin I use the nexus-staging-maven-plugin. The nexus-staging-maven-plugin provides more Nexus specific functionality then the maven-deploy-plugin has to offer. Instead of the maven-jar-plugin I use the maven-assembly-plugin. This plugin allows more control on how non-Java code can be packaged then the default maven-jar-plugin. Read more on: http://www.baeldung.com/maven-deploy-nexus.

POMpart2Assembly

In order to put the example shell script in a distributable ZIP which can be put in Nexus, the maven-assembly-plugin is used. In order to configure it, you provide an assembly descriptor. This is an XML file describing how which files should be packaged. In this descriptor you can use filters and different archive formats. Below is an example for the assembly file (src.xml) I’ve used in this blog.

AssemblyDescriptor

The assembly file as shown above, creates a ZIP-file when executing mvn package. The output can be viewed here.

As you can see, a lot is done out of the box (some of the actions performed might not be relevant and you could specifically ask for them to be skipped such as executing tests).

In this case /home/maarten/mvntest/myproject/target/testproject-1.2-SNAPSHOT-distribution.zip is created. Distribution is the id in the assembly file. The extension is derived from the specified format. The prefix is derived from the combination ArtifactId and version as specified in the pom.xml file of the project which is being packaged.

Assembly for multi module Maven projects requires some additional actions (see here). You need to add a special distribution module. In this module you need to specify which other modules need to be packaged. Also you need to add a dependency to the last compiled module in the distribution pom file so the distribution project is executed after all binaries are generated.

Nexus

I used a default installation of Nexus. In order to allow usage of Nexus from Maven, I needed to do some configuration in my projects POM file (see in the ‘Sample project’ part of this blog) and in my local settings.xml file.

The settings.xml file located in my ~/.m2 folder was the following:

SettingsXmlIt specifies which repository should be used. Nexus can be used to cache artifacts from online repositories so not every developer needs to download every artifact themselves. Inside Nexus, several repositories can be configured. For custom code, by default, the ‘Releases’ and ‘Snapshots’ repositories are used.

SCM

The maven-release-plugin requires a version control system such as SVN or GIT. It increases the version number as specified in the pom.xml file, creates a tag for the released version and saves the new trunk in the SCM system. In this example I’ve used SVN. The following SVN structure worked for the plugin without much additional configuration.

myproject
– tags
– trunk
– branches

Trunk is the ‘latest and greatest’ while the tags are created by the release process and contain the version number. See here for a blog on how to get an SVN repository working quickly.

Release

In order to execute a release, the following commands need to be given;

mvn release:prepare
mvn release:perform

If all is configured well, the output should look something like my own which can be downloaded here.

The maven-release-plugin does several things. The steps are nicely described on the following blog: http://www.disasterarea.co.uk/blog/maven-release-plugin/. The process can be repeated to create more releases.

Conclusion

Maven should be a tool to make things easier. If using Maven does not make things easier, I recommend not to use it. This of course needs to be evaluated per use-case.

When to use Maven to deploy to Nexus?

If Java is your primary technology (or your technology provides sufficient out of the box support for Maven), the assemblies to be released have a simple structure and the release process looks similar to what the maven-release-plugin provides, you can save yourself a lot of custom code by using the provided functionality of Maven. Packaging, deploying (to Nexus or another repository), executing automated tests, SCM interfacing are all there. Also Maven provides very good dependency management.

When not to use Maven to deploy to Nexus?

If you want to have a single framework to build, package, deploy different technologies and require flexibility in your process, I recommend not to use Maven for this. Using Maven to deviate from the Maven-path, requires effort. If you often have such requirements, you are probably better of with a more flexible framework.

Complex assemblies are hard to create. Multi-module projects are difficult. For the very simple example in this blog (packaging and releasing a single file), I needed to add as much plugin configuration as code to disable existing plugins. I could not get a multi module assembly working quickly enough. Also I needed to create a SVN repository to allow execution of a part of the default release process. The Maven process depends on a settings.xml file. This also needs to be configured just right on every system where the build needs to be executed.

And Nexus?

I have little complaints about Nexus. My first impression is that it is quite suitable for an artifact repository.

Nexus

The post Using Maven to assemble and release artifacts to Nexus appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/11/03/maven-assemble-release-nexus/feed/ 0
Oracle and the new road to User Experience; launch of Alta UI – Oracle OpenWorld 2014 http://technology.amis.nl/2014/10/26/oracle-new-road-user-experience-launch-alta-ui-oracle-openworld-2014/ http://technology.amis.nl/2014/10/26/oracle-new-road-user-experience-launch-alta-ui-oracle-openworld-2014/#comments Sun, 26 Oct 2014 13:30:21 +0000 http://technology.amis.nl/?p=32874 One of the new announcements on OpenWorld 2014 is the generic Alta UI. The Oracle product teams have worked hard to apply this new UI to all their products. This new interface theme is the result of Oracles efforts towards a more usable and comprehensible User Experience by the Oracle Usability Labs. The deliverables of [...]

The post Oracle and the new road to User Experience; launch of Alta UI – Oracle OpenWorld 2014 appeared first on AMIS Blog.

]]>
One of the new announcements on OpenWorld 2014 is the generic Alta UI. The Oracle product teams have worked hard to apply this new UI to all their products. This new interface theme is the result of Oracles efforts towards a more usable and comprehensible User Experience by the Oracle Usability Labs.

The deliverables of the Oracle Usability Labs are applied to all new products. This is a major change in the UX strategy of Oracle. The strategy goes beyond the usage of new colors pallets and buttons. The new User Experience Design strategy is has a method, a vision, themes and practical guidelines. In this article I will explain these guidelines and give a brief overview of the highlights of this new direction. This blog is a short summary of the user experience directions of Oracle.

We came from a dark and distant place

The images below shows some of the user interfaces we created some years ago and I guess some of us are still building with these default Oracle templates. The principles behind this where very straightforward: show all data on the screen, hierarchical data in a master-detail and non-data related navigation (like search boxes or select lists) in a pop-up window. These guidelines were described in the BLAF guidelines (2002). BLAF stands for Browser Look And Feel (B does not stand for Better). This look and feel was a direct translation from the client-server Forms Application look and feel. With these template you are able to create a W3C compliant web application. In those days W3C only had technical compliancy guidelines and no visual ones.

image

The new User Experience direction

The new user experience direction is based on 3 themes, 10 trends and a practical design guideline using context and usability. The method for developing the User Experience is based upon a frequent and fast feedback of real users. Below I will explain more about these subjects.

3 themes

The development of new user experiences are driven by tree major themes: simplicity, mobility, extensibility.

  • Simplicity :
    Easy and simple design with the focus on the essential information for a specific user in and specific role and situation.
  • Mobility :
    The new credo is “mobile first”. Design for mobile devices first and make sure these designs are also available for other kinds of devices.
  • Extensibility :
    Create applications users can customize or extend. To suit their business needs directly and tailor it to their processes and methods.

image

User Experience instead of User Interface

The design of an application not only involves the look and feel of the product. During the design you must consider the application experience in the context of the user and test these concepts. The design experts frequently receive feedback from the real users. These users are working with their designs in their real day-to-day environment. This way the application design is much more effective and aligned with the real usage.

These findings are now implemented in some of the SAAS solutions of Oracle. They are also made available through design components, best practices and building blocks for developers. If you want to know more about this you can read more about this here.

Trends in usage of technology

Looking at the development of the perception and usage of technology the Oracle UX Team sees and acts upon the following trends in relation to user experience.

Connected

  • Ubiquitous computing: We expect to be connected 99 percent of the time.
  • Any device, any location: We expect our devices to work in any location.
  • Intelligent context: Because we are in a constantly connected state, more is known about us than ever before. For example, we expect our smartphone to know where we are on a map.

Devices

  • Multiple form factors: We know we can get work done regardless of the device we are using.
  • Convenient: The screens on our devices are high quality. The devices themselves are small, light, and easy to carry, and we can expect our power supply to last the entire day.
  • Consumer acceptance: Devices are commonplace and always at hand. Society accepts that this is normal. Generational change in device usage:
  • The laptop is no longer the Swiss Army knife it used to be. Now we use the device that best fits a particular task.

Interactions

  • What matters most: We want to see what’s essential immediately and understand what we need to do about it now.
  • Small, quick, casual interactions: We want information in digestible chunks, an overview. If something interests us, we don’t want to wade through hierarchies of navigation. We want to retrieve information the quickest way possible. And our devices need to support interactions that we perform naturally.
  • Multimodal input: There are many ways to enter data. We can take pictures, use our voices, and text while in a meeting.

Design Guidelines

The most important questions users have while using a system is “what’s going on?” and “What do I have to do?” People want to use a system where they can see important information in an instant. Important for them as a user, in their current role and in the current context. Users appreciate their applications when all important operations are accessible in 3 easy clicks. In the case of business the usage is linked to 3 steps; strategic, information and action. These 3 steps are described as Glace, Scan and Commit; representing 3 different forms:

  • Glance
    This is the form of the user interface showing a strategic overview of your work. This overview will let you decide if you need further interaction with the system. If you need further information you can select a specific information group and drill down to the next level.
  • Scan
    The next form is the scan. This is the visual form where you investigate further on a specific details of an item. You can review and analyses the cause of deviating numbers in one glance in this screen. This might be an employee who is over-performing or a specific supplier who is not delivering up to his promises. Based upon this analysis you can decide to take action. This is done in the third from.
  • Commit
    The commit phase is designed for you to act. Take actions and plan actions based upon the information from the previous phase. The user experience is showing all the necessary information to do this tasks.

 

image

Use data and context

To make sure the application is simple and relevant to the user all data needs to be aware of the context of the user. Traditionally users need to provide their context; their systems-role, targets, location and other obvious information. The new paradigm in User Experience development leverages the context to the maximum to automate and simplify the interaction with the system. The context can be derived form 3 sources: you, where and how.

  • You
    This is the context that defines you as a person. What is important for you? What are your interests? What are your targets? What is your role? What is your search history? What are the things you like or hate? This context is used to serve the your information you need to excel in your role in the way you prefer to see it.
  • Where
    Almost every digital device is location aware. Combine this information with the calendar information and the devices in proximity of you and the system is able to anticipate on your current situation and present the information relevant to you at this moment.
  • How
    The system is able to learn from the interactions of the user and can anticipate on the user based upon past experience. Combined with relationship with other users and the network of the user it can predict the most ideal information or action for the user.

image

 

Testing and feedback

All these guidelines and principles are not only preached. They are also tested in practice. In one of the Usability lab locations. These labs are located in 8 different places around the world. 

Picture of the Oracle Usability demo room at the Oracle HQ in Redwood. (including Jeremy Ashley, Vice president of the Oracle Applications User Experience group)

User Experience Oracle

 

Better User Experience in ADF with Alta UI.

And how do we link these usability components to real coding in Oracle ADF?

Since September 2014 Oracle has released Ata UI. This is a practical theme with usable components for Oracle ADF. This theme offers design patterns, components, best practices and reference implementations for the new user experience model. The links below guide you to the features and the getting started guide for Alta UI. I think this will make the development of practical and usable applications a lot easier. And more usable..

Links to more information:

The post Oracle and the new road to User Experience; launch of Alta UI – Oracle OpenWorld 2014 appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/10/26/oracle-new-road-user-experience-launch-alta-ui-oracle-openworld-2014/feed/ 0
SOA Suite 12c: Querying LDAP directories using the LDAP Adapter http://technology.amis.nl/2014/10/23/soa-suite-12c-querying-ldap-directories-using-the-ldap-adapter/ http://technology.amis.nl/2014/10/23/soa-suite-12c-querying-ldap-directories-using-the-ldap-adapter/#comments Thu, 23 Oct 2014 14:04:45 +0000 http://technology.amis.nl/?p=32861 SOA Suite 12c introduced a number of new adapters. One of them is the LDAP Adapter. In several earlier articles on this blog (for example http://technology.amis.nl/2014/08/08/oracle-soa-suite-12c-ldapadapter-tutorial/ by Maarten Smeets), we have described how to set up and configure the LDAP adapter and how to use it in conjunction with the ApacheDS open source LDAP directory. [...]

The post SOA Suite 12c: Querying LDAP directories using the LDAP Adapter appeared first on AMIS Blog.

]]>
SOA Suite 12c introduced a number of new adapters. One of them is the LDAP Adapter. In several earlier articles on this blog (for example http://technology.amis.nl/2014/08/08/oracle-soa-suite-12c-ldapadapter-tutorial/ by Maarten Smeets), we have described how to set up and configure the LDAP adapter and how to use it in conjunction with the ApacheDS open source LDAP directory. Of course, this adapter is also supported with Microsoft Active Directory and Oracle’s OID, OVD and OUD.

In this article, I take the next step with the LDAP Adapter. I will demonstrate how to create a SOA composite that queries an LDAP directory for the details of a specific user account. This article continues where my earlier post – SOA Suite 12c: Creating user accounts in ApacheDS using the LDAP adapter (inspired by Maarten Smeets) – left off. I will assume the same set up, with ApacheDS as the LDAP Directory and the configuration of the LDAP Adapter connection already performed.

I want to create a service operation that takes a user id (uid attribute) as input and returns a selected set of details from the entry for that user in the LDAP directory. Here is an example of such an LDAP entry:

image

The service call – request and response – is executed in SoapUI:

image

and the resulting flow trace in the EM FMW Control:

image

The SOA Composite application is very simple – one additional component compared to the previous article: the outbound LDAP adapter reference binding, configured to search for LDAP details:

image

LDAP Adapter binding for Search operation

Let us check the configuration of this adapter binding.

SNAGHTML5ce1d7

Select the IDE connection and the JNDI name for the LDAP Adapter run time connection:

SNAGHTML5d5c44

Select the Search operation.

SNAGHTML5da748

Configure the search operation:

SNAGHTML5e011a

Select the attributes that this search should return. Only select attributes that apply to the object class(es) that the entries implement:

SNAGHTML5eb0c9

Accept defaults on the next two pages:

SNAGHTML5ee2f0

and

SNAGHTML5efbdd

and finally, press Finish:

SNAGHTML5f29b0

 

Data Structures and Transformations

The XSD generated as a result of the adapter binding configuration looks like this:

image

The LdapService has been extended with a two-way operation:

image

supported by an extended XSD definition:

image

The transformation for the search filter in the request message (from inbound request to the LDAP adapter):

image

The code for the query:

the baseDN (the tree under which the search should be executed) is set to the ExternalStaff “folder” in the saibot.airport “partition”

image

The filter string is composed according the LDAP specifications (about which there is plenty material on the internet, none of it trivial it seems – see for example LDAP Filter Tutorial). The filter is set to

concat(‘(&(objectClass=person)(uid=’,/ns0:FindUserAccountRequest/ns0:UserId,’))’) which resolves to strings such as (&(objectClass=person)(uid=hendrik.ido)) – which is LDAP speak for find all entries of objectClass person and the uid attribute set to the string value hendrik.ido.

 

image

and the transformation of the query result to the response

image

Note: we could perhaps have extracted a more elegant organizationUnitName and managerId. At the moment, some LDAP internals are exposed in these values.

The routing rule in the Mediator is configured like this:

image

 

Resources

Source code for this article: https://github.com/lucasjellema/soasuitehandbook/tree/master/ch18/LDAPAccessor.

The post SOA Suite 12c: Querying LDAP directories using the LDAP Adapter appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/10/23/soa-suite-12c-querying-ldap-directories-using-the-ldap-adapter/feed/ 0
SOA Suite 12c: Creating user accounts in ApacheDS using the LDAP adapter (inspired by Maarten Smeets) http://technology.amis.nl/2014/10/22/soa-suite-12c-creating-user-accounts-in-apacheds-using-the-ldap-adapter-inspired-by-maarten-smeets/ http://technology.amis.nl/2014/10/22/soa-suite-12c-creating-user-accounts-in-apacheds-using-the-ldap-adapter-inspired-by-maarten-smeets/#comments Wed, 22 Oct 2014 12:40:49 +0000 http://technology.amis.nl/?p=32819 My colleague Maarten Smeets recently published a very good article on the first steps with the SOA Suite 12c LDAP adapter (http://technology.amis.nl/2014/08/08/oracle-soa-suite-12c-ldapadapter-tutorial). He inspired me to take my own first and  next steps – and I need those for the Oracle SOA Suite 12c Handbook that I am currently writing. My very first step in [...]

The post SOA Suite 12c: Creating user accounts in ApacheDS using the LDAP adapter (inspired by Maarten Smeets) appeared first on AMIS Blog.

]]>
My colleague Maarten Smeets recently published a very good article on the first steps with the SOA Suite 12c LDAP adapter (http://technology.amis.nl/2014/08/08/oracle-soa-suite-12c-ldapadapter-tutorial). He inspired me to take my own first and  next steps – and I need those for the Oracle SOA Suite 12c Handbook that I am currently writing. My very first step in this area was the installation and configuration of ApacheDS server on Linux and the ApacheDS Directory Studio (described in this article http://technology.amis.nl/2014/10/22/getting-started-with-apacheds-ldap-server-and-directory-studio/) and the use of JXplorer to browse LDAP directories (as introduced by another colleague Aldo Schaap –  http://technology.amis.nl/2013/02/05/21036/).

In this article, I am going a little beyond these initial steps. I will provide some details that Maarten did not disclose. At the end, I will publish a web service from a SOA Composite that can be invoked to add new user to my ApacheDS LDAP server and also assign a manager to this new user. I struggled a little bit with the partition concept in ApacheDS – although in the end just closely looking at the log-console in the Directory Studio helped a lot in understanding what I had to specify in the input to the LDAP Adapter.

This article – http://technology.amis.nl/2014/10/22/getting-started-with-apacheds-ldap-server-and-directory-studio/ – describes how to install ApacheDS and ApacheDS Directory Studio – and how to create a custom partition saibot.airport. I am using the end result of that article as my starting point for this one.

image

Create some LDAP entries

Under my custom partition saibot.airport I have created three organizationalUnits: groups, ExternalStaff, InternalStaff. It is my intention to create users that are not on the payroll of Saibot Airport –  but that still need to recorded in the LDAP server – under the node ExternalStaff. Under InternalStaff are the people directly employed by Saibot Airport. Under groups will be the enterprise groups (or roles) that we discern in the organization. One such group has been defined: Administrators – based on the LDAP object groupOfUniqueNames. Maarten Smeets describes in this article – http://technology.amis.nl/2014/08/03/ldap-weblogic-using-apacheds-authentication-provider/#prettyPhoto- how ApacheDS can be used as a Security Provider for a WebLogic domain.

image

Configure the LDAP Adapter connection pool

Just like Maarten describes, we need to prepare a connection in the LDAP Adapter deployment in the WebLogic server. This connection is configured to connect to a specific LDAP directory server – in this case my ApacheDS Server. In the LDAP Adapter configuration we can later on refer to this connection by its logical JNDI name. The connection will then be established to whatever LDAP instance is referenced by the connection in the run time environment into which the SOA composite is deployed.

From the list of Deployment in the WebLogic domain in which the SOA Suite 12c runtime is running, click on LDAP Adapter (note: if the LDAP Adapter is currently not targeted to the (managed) server running the SOA Suite runtime, then you should configure this server as a target for this LDAP Adapter deployment – Maarten describes this in his article):

image

In the window that opens, click on the tab Configuration and then on the subtab Outbound Connection Pools. Click on the New button.

image

 

On the first page, there is not a lot of choice. Press Next.

image

On the second page, specify the JNDI name for the adapter connection. This name will be referenced in all LDAP Adapter  bindings that want to access the same LDAP Saibot Airport directory.

Set this name to eis/ldap/SaibotLdap.

image

Press Finish.

In the list of connections under the Connection Factory, you will find the newly created connection. Click on it to set the properties for connecting to the ApacheDS directory:

image

The Outbound Connection properties are presented. The properties to edit are indicated:

  • bindDN: uid=admin,ou=system
  • hostname: soa2admin2
  • password: secret
  • port: 10389

image

Press Save.

image

At this point you may get into a familiar dialog about saving the changes to a deployment plan; perform the suggested steps to create the deployment plan for the LDAP Adapter configuration.

After the configuration is complete, restart the server.

Create an LDAP connection in JDeveloper

For configuring the the LDAP Adapter in JDeveloper I need to have a connection available to the ApacheDS directory. On the Resource palette, create a new LDAP Connection, configured as follows:

SNAGHTML403fdc3

The password is secret. Press OK to complete.

The new connection should be shown in the palette:

image

The SOA Composite application to manipulate the LDAP directory

It is my intention to create a SOA Composite that reaches out to the LDAP directory to create new user accounts. These users are for now added as External Staff. A manager can – but does not need to be – specified. At this point I do not create group memberships.

The steps I went through:

  • Create a new SOA Application with a SOA project – both called LDAPAccessor
  • Add an outbound LDAP Adapter binding – configured for the Add operation
  • Create the WSDL and supporting XSD for the LDAPService exposed by the composite
  • Create a Service binding in the SOA composite based on this WSDL
  • Add a Mediator component to the composite – linking the Service binding to the LDAP Adapter binding
  • Configure the Mediator with a newly created XSL Map to transform between the incoming request to the input required by the add operation in the LDAP adapter

The final result looks like this:

image

The WSDL and XSD look like this:

image

and

image

Configuring the LDAP Adapter binding

Drag the LDAP Adapter to the SOA composite:

image

Set the name for the outbound adapter binding reference:

SNAGHTML4390f80

Select the IDE connection to the LDAP server and configure the JNDI name for the LDAP Adapter connection (eis/ldap/SaibotLdap):

SNAGHTML43998ea

Select the Add operation:

SNAGHTML439c9e9

Select the Object Classes to add (I believe that when you selected multiple object classes, they have to be in the same object hierarchy):

SNAGHTML43a04e6

Also select the attributes that will be added to the new object classes. In this case select mail, manager, mobile, uid and userPassword.

Do not check the checkbox:

SNAGHTML43b2052

(or do check it if you feel like it)

You have reached the last page of the wizard – click Finish:

SNAGHTML43ba1b1

 

Data Structures and Transformation

The XSD published by the LDAP Adapter Configuration Wizard – that we need to map to – is as follows:

image

The XSL Map for transforming from request to this XML structure is fairly simple – although the contents for some element is not trivial:

image

 

Look at the derivation of the value of the Distinguished Name (dn). Here we concatenate the uid (based on the UserId in the request message) with the (hard coded) identification: ou=ExternalStaff,o=saibot.airport

The value for the manager is also derived in a special way: after testing if a ManagerId is passed in the request message, the value sent to the LDAP Adapter is composed from the uid (the ManagerId in the request message) and the same hard coded parent node/dc context: ou=ExternalStaff,o=saibot.airport.

image

 

Deploy and Run

The composite is complete. Deploy it to the SOA Suite run time. Then, invoke it:

Create a test message – to add user Margaret Knowles:

image

The response comes in – well not actually a response but an acknowledgement of the reception of the one way service call:

image

When we check in the Directory Studio, the new user is available:

image

Next, invoke the service with a request to create a user who has a manager:

image

And sure enough, the user is created with the manager attribute appropriately set:

image

 

Note: Connect to the LDAP directory using JXplorer

When using JXplorer, I can connect to my custom partition in the ApacheDS server with these connection details:

host (in my case): soa2admin2

port 10389

Base DN (== my custom partition: saibot.airport

Security Level: User + Password

User DN: uid=admin,ou=system

Password: secret

SNAGHTML3c91bdd

The LDAP tree looks similar of course in this tool:

SNAGHTML4426f4c

Resources

Introduction to ApacheDS: http://krams915.blogspot.nl/2011/01/ldap-apache-directory-studio-basic.html

Source code for this article: https://github.com/lucasjellema/soasuitehandbook/tree/master/ch18/LDAPAccessor.

The post SOA Suite 12c: Creating user accounts in ApacheDS using the LDAP adapter (inspired by Maarten Smeets) appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/10/22/soa-suite-12c-creating-user-accounts-in-apacheds-using-the-ldap-adapter-inspired-by-maarten-smeets/feed/ 0
Getting started with ApacheDS – LDAP Server and Directory Studio http://technology.amis.nl/2014/10/22/getting-started-with-apacheds-ldap-server-and-directory-studio/ http://technology.amis.nl/2014/10/22/getting-started-with-apacheds-ldap-server-and-directory-studio/#comments Wed, 22 Oct 2014 07:34:19 +0000 http://technology.amis.nl/?p=32757 Inspired by the work and some excellent blog articles by my colleague Maarten Smeets – and while writing about the LDAP Adapter in SOA Suite 12c for the Oracle SOA Suite 12c Handbook) I decided to give ApacheDS (LDAP Directory) a spin. This article lists the very basic steps for getting started with both the [...]

The post Getting started with ApacheDS – LDAP Server and Directory Studio appeared first on AMIS Blog.

]]>
Inspired by the work and some excellent blog articles by my colleague Maarten Smeets – and while writing about the LDAP Adapter in SOA Suite 12c for the Oracle SOA Suite 12c Handbook) I decided to give ApacheDS (LDAP Directory) a spin. This article lists the very basic steps for getting started with both the server side LDAP directory (on Linux) and the visual LDAP browser & editor on top that directory. A specific step I describe is the creation of a custom partition in the directory – in this case for Saibot Airport, the fictitious airport from the case on which the book is based.

Install ApacheDS LDAP server on Linux

Download ApacheDS for Linux (http://directory.apache.org/apacheds/downloads.html)

image

Run installer

image

Provide input to installer:

image

Run server

image

 

ApacheDS Directory Studio

Download the installer, in this case for my Windows host on which the Linux VM is running (http://directory.apache.org/studio/downloads.html):

image

Run installer and accept all defaults:

SNAGHTML3200415

After successful installation, run Apache Directory Studio:

image

create a new connection – to the LDAP server we have just installed (ApacheDS on Linux)

image

Provide hostname (soa2admin2 for me – corresponding to IP 10.10.10.21) and (default) port 10389.

SNAGHTML320ba97

Set Bind DN or User to the value uid=admin,ou=system and Bind password to secret.

SNAGHTML320d799

Press Check Authentication if you want to make sure (and I know I do):

SNAGHTML321f382

Press Finish.

The LDAP directory browser is presented with the current contents of the (default, vanilla, out of the box) ApacheDS structure:

image

Note that a connection to the LDAP server is created as well.

Add a custom Partition

ApacheDS makes use of partitions: Each partition contains a complete entry tree, also referred to as a DIT. Multiple partitions may exist and the entry trees they contain are disconnected from each other, meaning that changes to entries in partition A would never affect entries in partition B. The entries in a particular partition are stored below some naming context called the partition suffix.  The ApacheDS default configuration contains a a data partition with the suffix “dc=example,dc=com”. It’s possible to add custom partition implementations (also see https://directory.apache.org/apacheds/basic-ug/1.4.3-adding-partition.html).

Right click on the LDAP connection, to open the configuration:

image

Open the Partitions tab:

image

And click on the Add button. Add a new partition – ID=saibot, Suffix= o:saibot.airport.

image

Press the Save icon (or File | Save) to save the changed configuration – to the server side config file.

Restart the LDAP server to process the changed configuration:

image

Now the tree is refreshed with the new partition:

image

In this partition, we can now create users, organization units and the likes.

The post Getting started with ApacheDS – LDAP Server and Directory Studio appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/10/22/getting-started-with-apacheds-ldap-server-and-directory-studio/feed/ 0
Oracle Service Bus: Obtaining a list of exposed SOAP HTTP endpoints http://technology.amis.nl/2014/10/20/oracle-service-bus-obtaining-list-exposed-soap-http-endpoints/ http://technology.amis.nl/2014/10/20/oracle-service-bus-obtaining-list-exposed-soap-http-endpoints/#comments Mon, 20 Oct 2014 11:07:33 +0000 http://technology.amis.nl/?p=32706 The Oracle Service Bus is often used for service virtualization. Endpoints are exposed on the Service Bus which proxy other services. Using such an abstraction layer can provide benefits such as (among many other things) monitoring/logging, dealing with different versions of services, throttling/error handling and result caching. In this blog I will provide a small [...]

The post Oracle Service Bus: Obtaining a list of exposed SOAP HTTP endpoints appeared first on AMIS Blog.

]]>
The Oracle Service Bus is often used for service virtualization. Endpoints are exposed on the Service Bus which proxy other services. Using such an abstraction layer can provide benefits such as (among many other things) monitoring/logging, dealing with different versions of services, throttling/error handling and result caching. In this blog I will provide a small (Java) script, which works for SOA Suite 11g and 12c, which determines exposed endpoints on the Service Bus.Exposed SOAP HTTP endpoints

How to determine endpoints?

In order to determine endpoints on the Service Bus, The Service Bus MBeans can be accessed. These MBeans can obtained from within a local context inside the Service Bus or remotely via JMX (when configured, see http://stackoverflow.com/questions/1013916/how-to-enable-jmx-on-weblogic-10-x). In this example I’ll use a remote connection to a Weblogic Server instance which runs on the same machine (JDeveloper IntegratedWeblogicServer). To browse MBeans, you can use jvisualvm (http://docs.oracle.com/javase/7/docs/technotes/guides/visualvm/) which is distributed as part of the Oracle JDK. JVisualVM has a plugin to browse MBeans.

Screenshot from 2014-10-20 10:04:14

Screenshot from 2014-10-20 10:06:01

When connected, the Service Bus MBeans are located under com.oracle.osb. The proxy services which define the exposed endpoints, can be recognized by the Proxy$ prefix. In order to determine the actual endpoint, you can look at the ResourceConfigurationMBean of the proxy service. Under configuration, transport-configuration you can find a property called url. The script also filters HTTP SOAP services since the url field is also used for other transports. A replace of // with / is done on the combination server:host/url since the url can start with a /. This causes no difference in functioning but provides better readable output. If you want WSDL’s, you can add ‘?wsdl’ to the obtained endpoint.

The script requires some libraries. For 11g, you can look at http://techrambler99.blogspot.nl/2013/11/oracle-service-bus-using-management.html. On that blog, more specific API calls are done which have more dependencies. This example requires less. For 12c, it was enough to add the Weblogic 12.1 remote client library in the project properties.

Screenshot from 2014-10-20 11:30:33

The script does not determine the hostname/port of the server the Service Bus is currently running on. This could lead to misinterpretation when for example a load-balancer or another proxy component (such as OHS) is used.

The script

[code]

package nl.amis.smeetsm.sb;

import java.io.IOException;

import java.net.MalformedURLException;

import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Set;

import javax.management.MBeanServer;
import javax.management.MBeanServerConnection;
import javax.management.ObjectName;
import javax.management.openmbean.CompositeDataSupport;
import javax.management.remote.JMXConnector;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import weblogic.management.mbeanservers.domainruntime.DomainRuntimeServiceMBean;

public class SBEndpointList {

private static MBeanServerConnection connection;
private static String HOST = “localhost”;
private static Integer PORT = 7101;
private static String USERNAME = “weblogic”;
private static String PASSWORD = “Welcome01″;

public SBEndpointList() throws IOException, MalformedURLException, NamingException {
this.connection = this.getMBeanServerConnection();
}

private ObjectName[] getObjectNames(ObjectName base, String child) throws Exception {
return (ObjectName[]) connection.getAttribute(base, child);
}

public ArrayList<String> getEndpoints() throws Exception {
ArrayList<String> result = new ArrayList<String>();

Set<ObjectName> osbconfigs =
connection.queryNames(new ObjectName(“com.oracle.osb:Type=ResourceConfigurationMBean,*”), null);

for (ObjectName config : osbconfigs) {
if (config.getKeyProperty(“Name”).startsWith(“ProxyService$”)) {
//System.out.println(config);
CompositeDataSupport cds = (CompositeDataSupport) connection.getAttribute(config, “Configuration”);
String servicetype = (String) cds.get(“service-type”);
if (servicetype.equals(“SOAP”)) {
CompositeDataSupport pstt = (CompositeDataSupport) cds.get(“transport-configuration”);
String url = (String) pstt.get(“url”);
String tt = (String) pstt.get(“transport-type”);
if (tt.equals(“http”)) {
result.add(“http://SERVER:PORT” +(“/” + url).replace(“//” ,”/”) );
}
}
}
}
return result;
}
private JMXConnector initRemoteConnection(String hostname, int port, String username,
String password) throws IOException, MalformedURLException {
JMXServiceURL serviceURL =
new JMXServiceURL(“t3″, hostname, port, “/jndi/” + DomainRuntimeServiceMBean.MBEANSERVER_JNDI_NAME);
Hashtable<String, String> h = new Hashtable<String, String>();
h.put(Context.SECURITY_PRINCIPAL, username);
h.put(Context.SECURITY_CREDENTIALS, password);
h.put(JMXConnectorFactory.PROTOCOL_PROVIDER_PACKAGES, “weblogic.management.remote”);
return JMXConnectorFactory.connect(serviceURL, h);
}

private MBeanServerConnection getMBeanServerConnection() throws IOException, MalformedURLException,
NamingException {
try {
InitialContext ctx = new InitialContext();
MBeanServer server = (MBeanServer) ctx.lookup(“java:comp/env/jmx/runtime”);
return server;
} catch (Exception e) {
JMXConnector jmxcon = initRemoteConnection(HOST, PORT, USERNAME, PASSWORD);
return jmxcon.getMBeanServerConnection();
}
}

public static void main(String[] args) throws IOException, MalformedURLException, Exception {
SBEndpointList me = new SBEndpointList();

ArrayList<String> result = me.getEndpoints();
System.out.println(“Endpoints:”);
for (String endpoint : result) {
System.out.println(endpoint);
}

}
}

[/code]

 

 

The post Oracle Service Bus: Obtaining a list of exposed SOAP HTTP endpoints appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/10/20/oracle-service-bus-obtaining-list-exposed-soap-http-endpoints/feed/ 0
SOA Suite 12c: Human Task and Escalation through the LDAP hierarchy http://technology.amis.nl/2014/10/17/soa-suite-12c-human-task-and-escalation-through-the-ldap-hierarchy/ http://technology.amis.nl/2014/10/17/soa-suite-12c-human-task-and-escalation-through-the-ldap-hierarchy/#comments Fri, 17 Oct 2014 20:51:10 +0000 http://technology.amis.nl/?p=32702 A Human Task in SOA Suite can be configured to automatically escalate when the task is not taken care of for a certain period of time. This escalation implies that the task is assigned to the person (or persons) one level higher up the organizational hierarchy than the people who had gotten the task assigned [...]

The post SOA Suite 12c: Human Task and Escalation through the LDAP hierarchy appeared first on AMIS Blog.

]]>
A Human Task in SOA Suite can be configured to automatically escalate when the task is not taken care of for a certain period of time. This escalation implies that the task is assigned to the person (or persons) one level higher up the organizational hierarchy than the people who had gotten the task assigned originally.

In this article I will show very briefly a setup for the task definition and and the user & groups in the embedded LDAP directory in WebLogic that together make this escalation work.

The task is defined with the following Assignment for a one participant of type “single participant”  in a single stage:image

So the task is set (radio button) to be be auto-assigned to a single user according to the Least Busy assignment pattern. The Group to which the task is assigned is selected from the identity store (which is just the embedded LDAP directory in WebLogic).

On the Deadlines tab of the task editor, we have specified that the assignees better be quick: after two minutes, the task will be escalated to the next level up the hierarchical food chain:

image

If we had 40 levels of hierarchy, that is how for the task could get escalated. We run out of hierarchy after about three levels – because that is the way how things are defined in the LDAP.

Through the WebLogic Admin console, I created several users (Dick, Tom, Harry, Matthew and Mark), groups (Account Manager, Sales Manager and CEO) and group memberships (Tom, Dick and Harry => Account Manager, Matthew to => Sales Manager and Mark => CEO). Using the JXplorer tool and the perfect instructions in this article: Creating an hierarchical user structure in embedded LDAP of weblogic , I ensured that Tom, Dick and Harry are peers that report to Matthew who reports to Mark:

image

The exact value for the manager attribute is:

uid=Matthew,ou=people,ou=myrealm,dc=soa_domain

in the case of Tom, Dick and Harry.

Deploy and Run

If the SOA composite that contains the task is deployed and its exposed service is invoked. the task gets instantiated – assigned to the role of Account Manager. If we do not touch it, it will be escalated: after two minutes to the manager(s) of the Account Managers and two minutes later to the manager of that/those manager(s) – Mark, the CEO. This is what the flow trace tells us after five minutes:

image

 

Right after calling the service, you could login to the BPM worklist application, as Tom. You should see the newly created task – available for Tom to work on. Logout and login as Dick. This user too should see the task, because of his membership of the Account Manager group to which the task was assigned. The same applies to Harry.

If Dick claims the task or even executes it, it is no longer available to Tom and Harry: only one of them has to complete the task. After initially claiming the task, Dick can also release the task if for some reason he cannot complete it after all. The task the reappears in the todo lists for all three account managers.

If no one touches the task for 2 minutes, an automatic escalation takes place. Login to the BPM worklist application as Matthew before the 2 minutes are up, and there should not be any tasks visible. However, when an AssessProposal task was unattended for 2 minutes, the manager of the original assignees – Matthew, who is the manager of Tom, Dick and Harry – gets the now escalated task assigned. And if he does not react within 2 minutes, the task is moved up the hierarchy once more, to Mark whom Matthew reports to.

Note: It seems that the setting of the radio button to be auto-assigned to a single user [according to the Least Busy assignment pattern]is crucial (without I did not get the escalation). I have not tried but suppose the users with the initial role (Account Manager) would have several managers among themselves, would then escalation take place to all of these managers? And would the next round of escalation involve multiple people as well – the managers of these first time managers?

Note: this article complements chapter 17 of the Oracle SOA Suite 12c Handbook.

The post SOA Suite 12c: Human Task and Escalation through the LDAP hierarchy appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/10/17/soa-suite-12c-human-task-and-escalation-through-the-ldap-hierarchy/feed/ 1
SOA Suite 12c: Actionable Emails with Human Task service http://technology.amis.nl/2014/10/17/soa-suite-12c-actionable-emails-with-human-task-service-2/ http://technology.amis.nl/2014/10/17/soa-suite-12c-actionable-emails-with-human-task-service-2/#comments Fri, 17 Oct 2014 10:34:26 +0000 http://technology.amis.nl/?p=32681 It is my assumption that inbound and outbound emailing has been configured – for example for a GMail account – as described in these two articles: GMail for inbound mail in SOA Suite 12c and GMail for outbound mail in SOA Suite 12c and that test mails can be sent and received. The steps are: [...]

The post SOA Suite 12c: Actionable Emails with Human Task service appeared first on AMIS Blog.

]]>
It is my assumption that inbound and outbound emailing has been configured – for example for a GMail account – as described in these two articles: GMail for inbound mail in SOA Suite 12c and GMail for outbound mail in SOA Suite 12c and that test mails can be sent and received.

The steps are:

  • configure an email driver for SOA Suite for outbound and inbound emails
  • configure an email address (one of the inbound email accounts set up on the email driver configuration) for actionable emails
  • create a Human Task definition for a task that is configured as actionable; assign this task to a user who has an email configured in the LDAP directory
  • deploy the Human Task as part of a SOA Composite; invoke the composite to have the task assigned to the user
  • the user should receive a notification mail message regarding the task assignment with the option to act on the task by clicking a link in the email; clicking such a link will trigger a response email to the actionable email account with appropriate meta-data for the SOA Suite to interpret the response; the user can even add attachments and comments to this task response mail.

We assume the first setp has been taken care of. Once the email driver for the managed server running SOA Suite has been configured for outbound and inbound email interaction, there is really not a lot to do.

Open the menu SOA Administration | Workflow Properties:

image

 

Ensure that the actionable email address is set:

image

This setting has to consequences (I believe): one is to configure the links for each of the task outcomes that will be included in the actionable emails sent to the users who have been assigned the task and the second one is to correctly poll this inbound email account for incoming emails that are in fact actions on a task.

Unfortunately, after making a change on this page, the managed server has to be restarted.

Configure a user with an email address in our LDAP

Once restarted, let’s make sure that we have at least one user in the embedded LDAP directory in our WebLogic domain with an email address configured.

Open the WebLogic Server Admin Console.  Click on Security Realms in the Domain Structure navigator. Click on the realm myrealm. Click on the tab Users and Groups:

image

Click on user weblogic.

Click on the tab Attributes

Locate atribute mail. Click on the value, define a valid email address and press enter.

image

When weblogic next would login to the BPM Worklist application, he would find a default notification channel configured based upon this email address:

image

Create a Human Task definition that is actionable (and assigned to a user with an email address configured)

We will not discuss all details around creating a SOA composite application, a HumanTask and a BPEL process from which to invoke the Human Task. These can be found in various other resources.

However, make sure that:

  • the task is assigned to user weblogic (or a group that weblogic is part of; or some other user with a configured email address)
  • the task is configured as actionable – and notifications are sent upon task assignment (the default setting)

The SOA Composite looks like this:

image

The task is assigned to user weblogic:

SNAGHTML8f0521

And it is actionable:

image

Additionally, notifications are sent for task assignment:

image

 

Deploy and Run

When the SOA composite is deployed and a test call is made, a new instance is created:

image

This instance is still running, waiting as it is for the task to be completed:

image

The task instance to act upon is visible to weblogic in the BPM Worklist application:

image

And if he fails to check over there, the Human Task has still reached out to him, via the actionable email:

image

The email does not contain a lot of useful details. It does have links for the two supported outcomes.

image

When we click the Approve link, the reply email is prepared:

image

it also allows weblogic to enter a comment. When we press Send, the mail is sent to the actionable email address that was configured for the Human Task engine.

image

When we check on the instance in the EM FMW Control – after we allow for the polling interval to pass:

image

The BPEL process audit trace provides insight in what happened in some more detail.

image

It is clear that mail was received and processed.

From the EM FMW Control’s overview page for the Human Workflow Engine that is opened using the SOA Infrastructure context menu Service Engines | Human Workflow

image

We can see an overview from all recent outbound and inbound email messages. Here we find the actionable email response that was received and we can inspect its contents:

image

Of course these emails can also be received on a mobile device – and the action can be taken on that device as well. While I as walking through our local DIY store, I received this mail on my iPhone:

image

After some time, I decided to act, by clicking the link to Approve:

image

I did not enter any comments or add any attachments. I merely pressed Send.

It turned out I had waited for too long and the task had already expired – or been handled by someone else; I received the following email from the Human Task service:

image

The post SOA Suite 12c: Actionable Emails with Human Task service appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/10/17/soa-suite-12c-actionable-emails-with-human-task-service-2/feed/ 0
Insight in the Roadmap for Oracle Cloud Platform Services http://technology.amis.nl/2014/10/16/roadmap-oracle-cloud-platform-services/ http://technology.amis.nl/2014/10/16/roadmap-oracle-cloud-platform-services/#comments Thu, 16 Oct 2014 06:39:13 +0000 http://technology.amis.nl/?p=32633 In my earlier blog posting  I listed the different Oracle Cloud Services.  Due to the massive introduction of all cloud based solutions it is difficult to have an overview of all cloud based solutions and their roadmap for launching. I have drafted an overview of these items on the image below and listed the products [...]

The post Insight in the Roadmap for Oracle Cloud Platform Services appeared first on AMIS Blog.

]]>
In my earlier blog posting  I listed the different Oracle Cloud Services.  Due to the massive introduction of all cloud based solutions it is difficult to have an overview of all cloud based solutions and their roadmap for launching. I have drafted an overview of these items on the image below and listed the products and links to more information.

PAAS oracle roadmap cloud

Oracle Cloud platform as a Service roadmap

 

Direct access to Oracle Cloud Services

Below you will find a list of the different Oracle IAAS and PAAS options.

Infrastructure as a Service (IAAS)

Platform as a Service (PAAS)

The post Insight in the Roadmap for Oracle Cloud Platform Services appeared first on AMIS Blog.

]]>
http://technology.amis.nl/2014/10/16/roadmap-oracle-cloud-platform-services/feed/ 0