AMIS Technology Blog http://technology.amis.nl Friends of Oracle and Java Thu, 23 Oct 2014 14:04:46 +0000 en-US hourly 1 http://wordpress.org/?v=4.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 Technology 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 Technology 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 Technology 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 Technology 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 Technology 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 Technology 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 Technology 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 Technology 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 Technology 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 Technology Blog.

]]>
http://technology.amis.nl/2014/10/17/soa-suite-12c-human-task-and-escalation-through-the-ldap-hierarchy/feed/ 0
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 Technology 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 Technology 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 Technology 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 Technology Blog.

]]>
http://technology.amis.nl/2014/10/16/roadmap-oracle-cloud-platform-services/feed/ 0
JavaOne 2014: Roadmaps for the near future of Java http://technology.amis.nl/2014/10/10/javaone-2014-roadmaps-for-the-near-future-of-java/ http://technology.amis.nl/2014/10/10/javaone-2014-roadmaps-for-the-near-future-of-java/#comments Fri, 10 Oct 2014 17:52:36 +0000 http://technology.amis.nl/?p=32622 JavaOne 2014 is first of all a community gathering – with over 500 sessions that discuss Java related topics in tantalizing details. A meeting of minds, of kindred spirits etc. It is also the place where the roadmap for the near future of the various constituents of the Java platform is unfolded. The slides in [...]

The post JavaOne 2014: Roadmaps for the near future of Java appeared first on AMIS Technology Blog.

]]>
JavaOne 2014 is first of all a community gathering – with over 500 sessions that discuss Java related topics in tantalizing details. A meeting of minds, of kindred spirits etc. It is also the place where the roadmap for the near future of the various constituents of the Java platform is unfolded. The slides in this article are taken from the Java Keynote on Sunday 28th September 2014.

Java SE:

image

Java SE Embedded/Java ME Embedded:

image

Java EE 8 :

image

image

image

The post JavaOne 2014: Roadmaps for the near future of Java appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/10/javaone-2014-roadmaps-for-the-near-future-of-java/feed/ 0
SOA Suite 12c: Getting started with the Spring Component http://technology.amis.nl/2014/10/10/soa-suite-12c-getting-started-spring-component/ http://technology.amis.nl/2014/10/10/soa-suite-12c-getting-started-spring-component/#comments Fri, 10 Oct 2014 15:16:32 +0000 http://technology.amis.nl/?p=32599 The Oracle SOA Suite Spring component has been present since SOA Suite 11.1.1.3 (11gR1 PS2). This component allows easy integration of Java code with other SOA Suite components such as (among others) BPEL, BPM and Business Rules. In SOA Suite 12c (12.1.3.0) this component is still present. In This blog post I will provide a [...]

The post SOA Suite 12c: Getting started with the Spring Component appeared first on AMIS Technology Blog.

]]>
The Oracle SOA Suite Spring component has been present since SOA Suite 11.1.1.3 (11gR1 PS2). This component allows easy integration of Java code with other SOA Suite components such as (among others) BPEL, BPM and Business Rules. In SOA Suite 12c (12.1.3.0) this component is still present. In This blog post I will provide a short example on how it can be used and how the first problem I encountered with this component can be avoided.

Oracle Spring

Implementation

First create a SOA Application and an empty project. Next create a Java class with a public method and extract an interface with the public method. You can also supply JARs in the SCA-INF/lib folder of the project with the class/interface.

Extract interface from Java class

The result in this example. The Java class extends the interface.

[code]

package nl.amis.smeetsm.springapp;
import org.eclipse.persistence.Version;
public class EclipselinkUtils implements IEclipselinkUtils {
public String getVersion() {
return Version.getVersion().toString();
}
}

[/code] [code]

package nl.amis.smeetsm.springapp;
public interface IEclipselinkUtils {
String getVersion();
}

[/code]

Next drag the Spring component from the component palette to the composite editor.

Add Spring Component

Give your new component an understandable name. Open the component. Paste the following (specific to this example);

[code]

<sca:service name="EclipselinkUtilsService" target="impl" type="nl.amis.smeetsm.springapp.IEclipselinkUtils">
<interface.java interface="nl.amis.smeetsm.springapp.IEclipselinkUtils"/>
</sca:service>
<bean name="impl" class="nl.amis.smeetsm.springapp.EclipselinkUtils"/>

[/code]

On the following page; http://www.oracle.com/technetwork/articles/soa/jellema-events-soasuite-1902429.html at ‘Implementing the Spring Bean’ you can find more explanation on how to provide services and references in a Spring Component.

Next in the composite editor, drag the service interface to the services lane and indicate you want a webservice.

Drag and drop

Compile and deploy.

To my own surprise (this was a simple example), the deployment failed.

[code]

<Line 43, Column 57>: XML-24509: (Error) Duplicated definition for: 'identifiedType'
<Line 60, Column 28>: XML-24509: (Error) Duplicated definition for: 'beans'
<Line 157, Column 34>: XML-24509: (Error) Duplicated definition for: 'description'
<Line 169, Column 29>: XML-24509: (Error) Duplicated definition for: 'import'
<Line 191, Column 28>: XML-24509: (Error) Duplicated definition for: 'alias'
<Line 220, Column 33>: XML-24509: (Error) Duplicated definition for: 'beanElements'
<Line 235, Column 44>: XML-24509: (Error) Duplicated definition for: 'beanAttributes'
<Line 510, Column 43>: XML-24509: (Error) Duplicated definition for: 'meta'
<Line 518, Column 35>: XML-24509: (Error) Duplicated definition for: 'metaType'
<Line 535, Column 27>: XML-24509: (Error) Duplicated definition for: 'bean'
<Line 555, Column 38>: XML-24509: (Error) Duplicated definition for: 'constructor-arg'
<Line 623, Column 51>: XML-24509: (Error) Duplicated definition for: 'property'
<Line 634, Column 32>: XML-24509: (Error) Duplicated definition for: 'qualifier'
<Line 650, Column 48>: XML-24509: (Error) Duplicated definition for: 'attribute'
<Line 660, Column 36>: XML-24509: (Error) Duplicated definition for: 'lookup-method'
<Line 696, Column 38>: XML-24509: (Error) Duplicated definition for: 'replaced-method'
<Line 733, Column 31>: XML-24509: (Error) Duplicated definition for: 'arg-type'
<Line 760, Column 26>: XML-24509: (Error) Duplicated definition for: 'ref'
<Line 798, Column 28>: XML-24509: (Error) Duplicated definition for: 'idref'
<Line 832, Column 28>: XML-24509: (Error) Duplicated definition for: 'value'
<Line 860, Column 27>: XML-24509: (Error) Duplicated definition for: 'null'
<Line 874, Column 39>: XML-24509: (Error) Duplicated definition for: 'collectionElements'
<Line 892, Column 27>: XML-24509: (Error) Duplicated definition for: 'list'
<Line 915, Column 26>: XML-24509: (Error) Duplicated definition for: 'set'
<Line 936, Column 26>: XML-24509: (Error) Duplicated definition for: 'map'
<Line 957, Column 45>: XML-24509: (Error) Duplicated definition for: 'entry'
<Line 966, Column 28>: XML-24509: (Error) Duplicated definition for: 'props'
<Line 988, Column 26>: XML-24509: (Error) Duplicated definition for: 'key'
<Line 999, Column 27>: XML-24509: (Error) Duplicated definition for: 'prop'
<Line 1018, Column 39>: XML-24509: (Error) Duplicated definition for: 'propertyType'
<Line 1061, Column 41>: XML-24509: (Error) Duplicated definition for: 'collectionType'
<Line 1073, Column 40>: XML-24509: (Error) Duplicated definition for: 'listOrSetType'
<Line 1082, Column 34>: XML-24509: (Error) Duplicated definition for: 'mapType'
<Line 1104, Column 36>: XML-24509: (Error) Duplicated definition for: 'entryType'
<Line 1143, Column 36>: XML-24509: (Error) Duplicated definition for: 'propsType'
<Line 1156, Column 45>: XML-24509: (Error) Duplicated definition for: 'defaultable-boolean'
<Line 17, Column 33>: XML-24509: (Error) Duplicated definition for: 'annotation'
<Line 36, Column 45>: XML-24509: (Error) Duplicated definition for: 'typedParameterType'
<Line 40, Column 38>: XML-24509: (Error) Duplicated definition for: 'exportsType'
<Line 63, Column 45>: XML-24509: (Error) Duplicated definition for: 'registersScopeType'
<Oct 8, 2014 7:01:13 PM CEST> <Error> <ServletContext-/soa-infra> <BEA-000000> <Error during deployment
oracle.fabric.common.FabricException: Deployment Failed: Error occurred during deployment of component: EclipselinkUtilsSpring to service engine: implementation.spring, for composite: StringProject: SCA Engine deployment failure.: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 6 in XML document from URL [oramds:/deployed-composites/default/StringProject_rev1.0/Spring/EclipselinkUtilsSpring.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 1523; <Line 6, Column 1523>: XML-24500: (Error) Can not build schema 'http://www.springframework.org/schema/util' located at 'http://www.springframework.org/schema/util/spring-util.xsd'
at oracle.integration.platform.blocks.deploy.StandaloneCompositeDeploymentCoordinatorImpl.coordinateCompositeDeployment(StandaloneCompositeDeploymentCoordinatorImpl.java:109)
at oracle.integration.platform.blocks.deploy.StandaloneCompositeDeploymentCoordinatorImpl.coordinateCompositeDeployment(StandaloneCompositeDeploymentCoordinatorImpl.java:70)
at oracle.integration.platform.blocks.deploy.servlet.BaseDeployProcessor.deployNewComposite(BaseDeployProcessor.java:514)
at oracle.integration.platform.blocks.deploy.servlet.BaseDeployProcessor.deploySARs(BaseDeployProcessor.java:305)
at oracle.integration.platform.blocks.deploy.servlet.BaseDeployProcessor.deploySARs(BaseDeployProcessor.java:157)
Truncated. see log file for complete stacktrace

[/code]

To work around this you need to replace the line in the Spring XML file:

[code]

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms.xsd http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://xmlns.oracle.com/weblogic/weblogic-sca META-INF/weblogic-sca.xsd">

[/code]

with the much shorter line

[code]

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://xmlns.oracle.com/weblogic/weblogic-sca META-INF/weblogic-sca.xsd">

[/code]

Something with the XML parser supplied with Weblogic server 12.1.3 apparently… (see http://stackoverflow.com/questions/5005901/duplicated-definition-for-identifiedtype)

Confirm it works

After deployment you can test the service to confirm it works.

Conclusion

The Spring component allows for easy integration with other SOA components. In release 12c, the error in 11g when a Java class is not compiled yet (see http://javaoraclesoa.blogspot.nl/2012/03/file-processing-using-spring-component.html) does not occur anymore, which is nice. However we get a different error in return. Luckily it is easily solved and we can enjoy this nice feature.

I’ve not yet found a way to give preference to a local class over the application server classes. I could alter the classpath of the entire server or soainfra but that could have other less pleasant side-effects. Maybe I´ll figure this one out in a later blogpost.

The post SOA Suite 12c: Getting started with the Spring Component appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/10/soa-suite-12c-getting-started-spring-component/feed/ 0
Transformatie – Business done differently http://technology.amis.nl/2014/10/10/transformatie/ http://technology.amis.nl/2014/10/10/transformatie/#comments Fri, 10 Oct 2014 14:23:34 +0000 http://technology.amis.nl/?p=32587 AMIS is uit ruim 10.000 Oracle Specialized Partners verkozen tot Oracle EMEA Middleware partner van het jaar. Een geweldige bekroning van vele jaren hard werk. Gestart met een idee en via een veelheid aan activiteiten, tot optimale wasdom gekomen als Oracle specialist. Vergelijk het met de transformatie van eitje via rups naar vlinder. Iedereen herkent [...]

The post Transformatie – Business done differently appeared first on AMIS Technology Blog.

]]>
AMIS is uit ruim 10.000 Oracle Specialized Partners verkozen tot Oracle EMEA Middleware partner van het jaar. Een geweldige bekroning van vele jaren hard werk. Gestart met een idee en via een veelheid aan activiteiten, tot optimale wasdom gekomen als Oracle specialist.

Vergelijk het met de transformatie van eitje via rups naar vlinder. Iedereen herkent deze transformatie waarbij het geplante ‘idee’, via een energieverslindende veelvraat tot iets moois leidt. De belangrijkste les hiervan is dat je er niet bent met slechts een idee. Het begint pas met het in gang zetten van dat idee. Die beweging vreet energie. Energie, die ook volop beschikbaar is, omdat we een doel voor ogen hebben. We weten dus waar we het voor doen. En uiteindelijk groeit er een mooie gracieuze vlinder!

De transformatie van AMIS

Bij AMIS is het niet anders gegaan. AMIS is ontstaan door een idee van studenten die een gat in de markt zagen: software voor organisaties die onderhoud aan vliegtuigen uitvoeren. Aircraft Maintenance Information Systems (AMIS) werd geboren. De met Oracle technologie gebouwde applicatie werd ontwikkeld voor een launching customer. Dat is waar het vervolgens ook eindigde. Het gat in de markt bleek ergens anders te liggen. De kennis van toepassing van Oracle technologie bleek meer waarde te hebben dan de gebouwde software. En zo ontstond AMIS als IT-bedrijf.

De essentie

Zo stormachtig als IT zich ontwikkelde en steeds aanweziger werd in de wereld om ons heen, zo stormachtig groeide AMIS. Naast de Oracle kern werd er gestart met kantoorautomatisering: hardware zoals servers en netwerken, implementatie van standaard software, testen, enz. De rups leek er nooit genoeg van te kunnen krijgen. Zoals bij elk IT-bedrijf waren er projecten met wisselend succes. Om te overleven op lange(re) termijn was het daarom noodzakelijk om een goede zelfanalyse te uit te voeren. Dit leidde terug tot de kern: wij zijn specialisten in Oracle technologie. AMIS verliet zijn cocon en groeide uit tot een prachtige vlinder, bekroond met een geweldige award, die nooit eerder een Nederlandse Oracle partner ten deel viel.

Ware transformatie

“Know yourself, accept and love yourself for who you are, be confident, feel safe, be the change.” Dat is voor mij de basis van ware transformatie. Ken je kracht, en creëer van daaruit iets moois. Niet voor jezelf, maar met en voor anderen. De kennis die we als know-how bedrijf vergaren delen we graag met anderen, met collega’s, met klanten en met de hele Oracle community. We werken samen en versterken elkaar. En dat in de overtuiging dat iets nieuws maken veel meer waarde levert dan vervanging of meer van hetzelfde. We zijn niet bang om ingehaald te worden, omdat we zelf altijd op zoek zijn naar de grenzen van ons kunnen en elkaar uitdagen om samen de volgende stap of sprong te wagen. Be confident, feel safe. Robert Ingersoll lanceerde het concept ‘We rise by lifting others’. En dat is precies wat we willen en ook echt doen. Doing business differently. AMIS straalt door anderen te laten delen in onze kennis. Sinds jaar en dag is ons motto: voordoen, samen doen, zelf doen. Dat motiveert ons om altijd een stap voor te zijn, te helpen en daarna weer ruimte te maken voor een volgende stap vooruit.

Continue transformatie: je bereikt je doel en wilt weer verder

Voor AMIS is deze award een geweldige extra stimulans om door te gaan en de lat weer hoger te leggen. Onze relaties nemen we graag mee in dit proces. Ik zie transformatie als een voortdurend proces, eens begonnen, steeds gevoed, altijd uitdagend en met heel veel voldoening. In het begin kostte dit veel energie, nu geeft het veel energie. Het verhaal van de rups en de vlinder. Hoe mooi is dat?

The post Transformatie – Business done differently appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/10/transformatie/feed/ 0
Oracle OpenWorld 2014: Non-life altering observations (but still interesting and useful) http://technology.amis.nl/2014/10/08/oracle-openworld-2014-non-life-altering-observations-but-still-interesting-and-useful/ http://technology.amis.nl/2014/10/08/oracle-openworld-2014-non-life-altering-observations-but-still-interesting-and-useful/#comments Wed, 08 Oct 2014 05:20:26 +0000 http://technology.amis.nl/?p=32579 This article does not necessarily discuss the big themes and major stories of Oracle OpenWorld 2014. It does mention a number of facts that I discovered, overheard, observed or otherwise found out about during last week’s conference. They are not necessarily from formal Oracle sources, they have have been part of conversations on the demo [...]

The post Oracle OpenWorld 2014: Non-life altering observations (but still interesting and useful) appeared first on AMIS Technology Blog.

]]>
This article does not necessarily discuss the big themes and major stories of Oracle OpenWorld 2014. It does mention a number of facts that I discovered, overheard, observed or otherwise found out about during last week’s conference. They are not necessarily from formal Oracle sources, they have have been part of conversations on the demo grounds or sessions for which no slide evidence exists. Do not base major decisions on these notes – but perhaps look out for more evidence and/or quiz your local Oracle representative.

The acronyms of last week are probably API, REST, JSON and JS – in addition of course to IaaS, PaaS and SaaS. NoSQL (Larry said it himself, it is Not Only SQL!) made some appearances of course. An important technology – Server Side JavaScript and Node.JS (a JavaScript application server). When it comes to authentication, OAuth 2.0 was the talk of the town.

Live SQL is a soon to be released feature on OTN where database developers will be able to live run SQL statements. SQL Code samples that before would have required a local database to run can now easily be tested. Blog articles can refer to LiveSQL to have their sample code tried out. Oracle Documentation is said to refer to LiveSQL for its SQL statements to have them live executable.

image

image

Oracle Rest Data Services (formerly known as Oracle APEX Listener) provides several key capabilities for the Oracle Database. REST Data Services accepts RESTful Web Service call URIs and directs them to the appropriate SQL statement or PL/SQL block. REST Data Services marshals data returned from SQL statements into JSON or .csv format. Oracle REST Data Services is a Jave EE-based provides flexibility by supporting deployments using Oracle Web Logic Server (WLS), Oracle Glassfish Server and Apache Tomcat. (see: http://www.oracle.com/technetwork/developer-tools/rest-data-services/overview/index.html)

image

Oracle SODA: Simple Oracle Data API – an API from Java, C and C# and perhaps others to more easily work with JSON documents in the Oracle Database. Working through (JSON aware) SODA promises to be much more convenient than for example having to go through the JDBC API in order to retrieve [data from]or manipulate JSON documents. The SODA API is organized like REST services – with Collection Management, CRUD operations, Query by Example on JSON documents.  (thank you Marco Gralike for this information)sodaOracleDB

APEX 5.0 will soon have a formal Beta program. The production release may take until deep into Spring 2015.

Oracle Enterprise Manager now also for managing MySQL: http://www.oracle.com/us/corporate/press/2301492 …

WebLogic 12.1.3 has been certified against JDK 8 – it is has been declared fit for use with Java VM 8.

The Oracle Cloud Marketplace is going to be tremendously important for partners such as AMIS to publish and sell extensions, integrations and add-ons to Oracle SaaS products as well as PaaS Services. Unfortunately, the marketplace is still in its infancy, as became clear on the demo grounds. We can publish and show case our products – to generate leads. However, there is not yet a mechanism to sell or monetize (subscription based) through this marketplace. The one key feature I would really expect and desire a marketplace to have.

image

The one cloud service I do not believe Oracle wants us to buy:

image

Stream Explorer is one of quite a few tools show cased by Oracle targeted at the Line of Business User (the non-technical IT consumer). This tool provides a visual, declarative, browser based wrapper around Oracle Event Processor and Oracle BAM. With Stream Explorer (whispered to be available within a few months) it is every easy to create explorations and dashboard on live [streams of]data – reporting in real time on patterns, correlations, aggregations and deviations.

image

Another Line of Business User tool is the Visual Analyzer in the BI Cloud. This cloud service allows anyone to upload data from for example Excel sheets and quickly create dashboards and reports on top of those. Currently you can upload up to 15 GB of data and once the BI Cloud fully integrates with the Database Cloud Service you can go way beyond that number. After the initial upload – which will create tables ‘under water’ – you can continue with additional uploads that will append data to these tables. Thus you can step by step create a Data Warehouse in the cloud.
Embedded image permalink

The Oracle SOA Suite Cloud Service will provide the full (or almost full) functionality of the SOA Suite (including Service Bus) as part of the Oracle PaaS platform.

image

Before this service is launched, we will first see the ICS (Integration Cloud Service) – to be launched in the next six months or so. This service is targeted at not-very-technical-users, to allow them to create fairly straightforward integrations between SaaS products.

imageimage

After creating the mapping (visually, declaratively using the Oracle Recommends TM mechanism for suggesting mappings) between the messages, the integration can be activated and invoked from the upstream system. The service offers facilities for monitoring and tracing the interactions. This image shows a failed interaction, for which some form of recovery should be performed.

image

Cloud Adapters have been and will be released for integration between SOA Suite on premise and various SaaS applications. Additionally, a Cloud Adapters SDK has been released to create additional custom adapters, not just for Cloud integration with SaaS products but also for on premise integrations. The Cloud Adapters SDK could easily have been called the [general purpose]adapters SDK. Oracle uses the Adapters SDK itself for creating the new SaaS adapters (for SalesForce, Eloqua, RightNow and others).

Oracle is working on two products in the area of API management and governance, in addition to the 12c version of the Oracle Enterprise Repository (which seems slated for Summer 2015). The next few months should see the release of API Catalog – a fairly light weight browser based tool that presents APIs (services) to potential consumers of these services. In the API Catalog UI, developers can find meta data about the services and their usage. API Catalog uses harvesting to discover services from various directions including – but not limited to – Service Bus and SOA Suite. API Catalog is targeted at the design time. At run time, the API Manager also presents information about APIs in a browser based UI. This API Manager sits on top of Service Bus and – as its name suggests – is more than just a reporter on the APIs that are available. The API Manager is also used for collecting and analyzing metrics on the usage of the API.

SOA Suite will have end-to-end REST support: in 12.2.1, Service Bus pipelines can operate directly on JSON variables – using JavaScript for JSON manipulation directly, without requiring JSON to XML conversion. In BPEL, a similar option will be available with variables of JSON type and an activity that manipulates JSON (and can if necessary for invoke actions to XML based partner links) convert between JSON and XML. Note that the Mobile Cloud Service – based on Service Bus technology – uses JSON and JavaScript as primary format and data shaping language in its v1 release.

ADF 12.2.1 (Summer 2015) will also have more REST support: the ability to publish an ADF BC Application Module as REST service.

The @adf_emg XML Data Control 1.0.0 available through JDeveloper Help -> Check for Updates.

Some recent ADF DVT features – released in ADF 12.1.3 and MAF 2.0 – were demonstrated

 

imageand some new ones as well (probably for 12.2.1?): The very cool Thematic Map Mashups:

image

And the N-box (already available in MAF) (here shown poorly visible as a mashup wit thematic map).

image

 

The new company wide user experience based on the Alta theme is documented and available for our own usage at: bit.ly/oraclealta .

image

And a picture of the Oracle UX lab at HQ in Redwood Shores – with UX VP Jeremy Ashley proudly keeping watch:

Embedded image permalink

The Oracle Developer Cloud will be extended with Coding in the Cloud: in browser editors for various types of code. JavaScript applications are explicitly targeted- with support inside the Developer Cloud for tools such as Bower, Gulp, Yeoman, Grunt and npm – on par with similar tooling in the Java EE domain. The code editors will be library aware – with syntax highlighting and code completion.

image

 

The Oracle Application Builder Cloud Service – not in the near future – is to be an in browser, visual, declarative drag and drop development environment for rich client applications. It seems to be something like the webapp alternative to MAX (the Mobile Application Accelerator for MAF apps)

image

The demo grounds had a pod for Oracle Forms. Really. Here is the proof:

image

 

I liked the animations where the cloud services are presented as the elements in the periodic table:

image

and solutions are created like molecules:

image

Is a yellow elephant in the sky similar to the pink elephant in the room?

imageimage

And the finally, the statue of the triple-limbed Oracle salesman who can shake your hands and shake you out simultaneously, just off Moscone North (and of course a spare foot for to put in your door):

image

The post Oracle OpenWorld 2014: Non-life altering observations (but still interesting and useful) appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/08/oracle-openworld-2014-non-life-altering-observations-but-still-interesting-and-useful/feed/ 0
Oracle Cloud demystified: Open World 2014 Overview of Cloud offerings http://technology.amis.nl/2014/10/07/oracle-cloud-demystified-overview-oracle-cloud-offerings-based-open-world-2014/ http://technology.amis.nl/2014/10/07/oracle-cloud-demystified-overview-oracle-cloud-offerings-based-open-world-2014/#comments Tue, 07 Oct 2014 10:18:14 +0000 http://technology.amis.nl/?p=32518 The central theme of Oracle Open World 2014 has certainly been the Cloud. Downtown San Francisco was laced with banners about Oracle and Cloud. The difference compared to last year is that now there is a huge amount of real cloud products available (or soon to be launched). Where the Oracle cloud offering till this [...]

The post Oracle Cloud demystified: Open World 2014 Overview of Cloud offerings appeared first on AMIS Technology Blog.

]]>
The central theme of Oracle Open World 2014 has certainly been the Cloud. Downtown San Francisco was laced with banners about Oracle and Cloud. The difference compared to last year is that now there is a huge amount of real cloud products available (or soon to be launched). Where the Oracle cloud offering till this summer was limited to Database and Java (WebLogic) and some applications the current stack ranges from infrastructure till a range of SAAS offerings. The amount of cloud related announcements was really huge and somewhat overwhelming. Get things in perspectives I have drafted below a list of the concrete cloud offerings with a short description. If you want to try this in practice you are welcome to visit https://cloud.oracle.com/home (choose the platform tab to see what’s currently available).

The major theme of all Oracle cloud based solutions is REST support for all commands. So you can use either Cloud Control / Enterprise Manager to manage your cloud infrastructure or you can directly tap into the specific systems and manage them yourself. In this way you can customize the management of your infrastructure for specific services without having to use the Cloud Control.

Overview of all cloud offerings Oracle has introduced last week at Oracle Open World 2014

Oracle Managed Cloud Services (OMCS) (IAAS)

This is the basis of the complete cloud services. The aclip_image002ctual infrastructure behind the cloud offerings in the form of networking, virtual servers and security. The beg announcement on this field it Oracle’s full support for Open Stack infrastructure (http://www.oracle.com/us/corporate/press/2321794). This is based upon the OpenStack Icehouse release and enables you to use OpenStack for provisioning all of your Oracle Software Defined Networking. And also enables a self-service console for Oracle Linux and Oracle VM.

Within the Oracle Cloud Managed Services you can use the Oracle Virtual Compute Appliance to offer the basics of services within your virtual network. This is the cloud version of the On Premise Compute Appliance.

When building new infrastructure in the Oracle IAAS Cloud you can choose the location of the datacenter you want to use. This is important if you want to run your applications in a datacenter close to your major customers (US, Ireland, Australia). The underlying technology building the cloud services will make sure the components of your cloud infrastructure will be stored as closely as possible within the datacenter to ensure minimum of networking latency. Via the security keys you install on your own services you able to create a secure connection to you IAAS infrastructure or even make it a part of your local network.

Oracle Platform as Service in the Cloud (PAAS)
2014-10-07 06_37_07-Leverage Infrastructure _ Oracle Cloud

On top of the IAAS solution Oracle is currently offering a large range of Platforms As A Service (PAAS)form the cloud. This is an addition on the already available Java Cloud and Database Cloud.

 

Database Cloud (DBAAS)

The database cloud now offers the ability to seamlessly upgrade and maintain Oracle Database software as a Service. In the managed model you are able toclip_image004 create and upgrade your Oracle Database on the Datacenters of Oracle. And with the introduction of Oracle 12.1.0.2 you are also able to offer the Database In Memory option from the cloud database. The database cloud offers root access to administrators and delivers direct access to the data source in the way you are used to when using a local database (port 1521). Via the Oracle Cloud Managed Services you are also able to define a database connection via port 80 or 443 to prevent networking issues while connecting to a data source outside your company’s internal datacenter.

Next to the self-managed database you can choose for a managed Cloud Database. When you are opting for the Managed Cloud Database Service Oracle offers 5 sizes in database cloud, 5 different service levels and 4 security levels.

On the Database Cloud Service you can choose for a block storage backup or to use the Cloud Backup Service from Oracle via RMAN. At this time the Database Cloud offers versions 11c release 2 and 12c release 1.

 

Java Cloud

The Java Cloud offering, also called WebLogic Cloud, is a full version of WebLogic Server as a cloud instance. Including the usage of Coherence as a data grid within the WebLogic Server to share data and transactions between several applications without using the round-trip to the database. At this time Oracle is offering WebLogic 11c and 12c as a cloud service. Within the cloud dashboard you are able to create and scale your Java cloud service as you like (scale up and scale out).

Security cloud Services

Oracle has made security a high priority within the cloud services offering. This is essential for the complete cloud offering. The the security cloud service offers firewall, intrusion detection and anti-virus to protect the system from treats from outside the infrastructure and prevent systems being attacked by systems within the cloud infrastructure. This offering enables you to configure your cloud system to be compliant with a lot of regulatory frameworks (http://www.oracle.com/us/media1/service-cloud-security-overview-2030360.pdf)

Developer Cloud

New announcement is the developer cloud is a new offering consisting of tools for software repository, wiki, issue / task tracking and build engine. The developer cloud will be released in the upcoming moth. A trial version is already available. According to my information the Developer Cloud is free together with the Java Cloud.  With thclip_image006e developer cloud you are able to create a GIT repository (or multiple) and invite your team to participate. You can connect your own IDE (Eclipse, JDeveloper etc.) to this repository and work just as you were used to work. The developer cloud offers an issue tracking system based upon the schema of Bugzilla with an integrated interface and REST interfaces to create and tasks from your own IDE. The build engine in the developer cloud is based upon Mave3 and Hudson. And finally you can use a wiki in the developer cloud to enrich your documentation. The developer cloud is aimed on working in agile projects and supports easy and fast review, collaboration and quick integration. The developer cloud offers to create and use templates. This enables you to create a template of a specific type of project and use this as a basis for following similar project while copying a pre format setup of the source repository, build engine and wiki.

 

Integration Cloud (SOA / Service Bus )

This service enables the SOA and OSB users to leverage the advantages of integration with Service Bus and SOA and the scalability and availability of cloud systems. This product is announced on Open World and it looks like it is being launched introduced in the upcoming months. Before this service is launched, we will first see the ICS (Integration Cloud Service) – to be launched in the next six months or so. This service is targeted at not-very-technical-users, to allow them to create fairly straightforward integrations between SaaS products. A very interesting part of this is the Cloud Adapter SDK. Integration Cloud Services (ICS) offers a lot of new SaaS adapters to integrate with SaaS applications like SalesForce for example. The cloud adapters are built in the Cloud Adapter SDK and written in Java. So you are able to create your own adapter an share this adapter with your users. http://www.oracle.com/technetwork/middleware/adapters/documentation/index.html

Process cloud

Another new service is the Process Cloud. This is the cloud implementation of BPM with the goal of offering a simplified and comprehensive way of modeling and executing your processes. The goal is to migrate the BPM creation activities from the developer to the business analyst. The process cloud is being launched soon. Examples are available here : https://cloud.oracle.com/process

Analytics Cloud / BI Cloud

This is the Business Intelligence offering as a cloud service. This service is being made available as a separate offering and as an BI Engine on other Oracle applications like Oracle Eauola and Oracle RightNow. (https://cloud.oracle.com/business_intelligence).

Mobile Cloud and Mobile Application Accelerator (MAX)

Oracle Mobile cloud is an extensive way to make your own services available as a mobile backend. The mobile could offers services to create data providers within for your mobile developer without bothering them with the complexity of your enterprise backend. Including shielding the security of your connection from your mobile developers. The mobile cloud offers several features for reporting and analytics such as usage statistics and engagement. This service will probably be launched in a few months (https://cloud.oracle.com/mobile) . A second interesting announcement was the introduction of MAX ( Mobile Application Accelerator). The Oracle Mobile Application Accelerator feature allows users with no coding experience to rapidly and intuitively produce mobile applications. This feature is only announced and it is not clear when it will be available for usage.

 

Big Data Cloud

The Big Data Cloud offers you the ability to store and analyze your big data as a service. This Big Data cloud is based on Hadoop. The cloud service offers fully serviced and elastic capabilities. The advantage of this platform is that it is able to store petabytes of data and enables you to connect to your local and on premise systems.

 

Oracle Documents Cloud

The next-gen cloud-based file sharing and collaboration solution. Built for the enterprise with robust security, application integration and support for on-premise ECM integration.

Software as a Service SAAS

And finally Oracle applications: Social, Finance, HCM, Logistics, Marketing..etc. These are all available as cloud service. This makes Oracle form this standpoint the biggest SAAS provider at this moment (according to Larry Ellison).

 

This article is based upon the findings during my visit to Open World 2014. I cannot assure the list is complete and I will add more information or correct as new offerings are introduced. And please share your feedback below.

The post Oracle Cloud demystified: Open World 2014 Overview of Cloud offerings appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/07/oracle-cloud-demystified-overview-oracle-cloud-offerings-based-open-world-2014/feed/ 3
Automatic error handling in AngularJS http://technology.amis.nl/2014/10/06/automatic-error-handling-in-angularjs/ http://technology.amis.nl/2014/10/06/automatic-error-handling-in-angularjs/#comments Mon, 06 Oct 2014 10:00:13 +0000 http://technology.amis.nl/?p=32453 In demos and tutorials we only care about the happy-flow of our applications. That is ok, because we only run that code in our own little predictable environment and leaving everything else out makes any framework look nice and easy. Often in blog posts “error handling and such is left as an exercise to the reader” [...]

The post Automatic error handling in AngularJS appeared first on AMIS Technology Blog.

]]>
In demos and tutorials we only care about the happy-flow of our applications. That is ok, because we only run that code in our own little predictable environment and leaving everything else out makes any framework look nice and easy. Often in blog posts “error handling and such is left as an exercise to the reader” (which of course is an exercise nobody needs). A problem with good error handling code is that it clutters your “happy-flow code”, which then becomes harder to read, and is quite a lot of work to get right. Wouldn’t it be great if we could just write our happy code and get user friendly error messages for free? Is it possible to have some kind of automatic error handling in AngularJS?

The AngularJS project I worked on recently already had a component in place to show good-looking error messages to the user, all in accordance with their corporate identity and UX/UI design (comparable to toastr). That component didn’t do very much without having actual error messages to show, but being a lazy developer (who isn’t?) I did not like the prospect of having to go through all our code and add handling code all over the place. So I started looking for a super easy, automatic, generic, pragmatic, intelligent, lazy solution.

$exceptionHandler

A seemingly obvious thing to do is to replace the built-in $exceptionHandler service to catch any uncaught Error, extract the message and send that to the error messages component. I was happy with that solution for about 2 seconds, until I realised it had two obvious flaws:

  1. The error messages it produced were “not really user friendly”
  2. A lot of errors never get to the $exceptionHandler!

Flaw 1: Error messages should ideally provide three pieces of information to the user: what went wrong, what was the application trying to do at that time and what can the user do to fix it (if possible)? For example, the message: “An unknown error occurred at the server” doesn’t say much. It would be better to say: “Unable to get the list of documents. An unknown error occurred at the server. Please try again in a few minutes“. With the $exceptionHandler we get a message that says “what went wrong”, but all context is missing (actually, we get a stack-trace, but that is not something an ordinary user is interested in)

Flaw 2: Most of the more interesting operations in data-intensive web applications are asynchronous, including all HTTP calls to the server. In AngularJS asynchronous operations work with promises. With promises errors are not thrown and caught. You need to attach callback functions that handle errors (for more information on this mechanism read this).

OK, so that didn’t work out. Let’s take a step back and first implement good error messages manually. Look at the companion page for demos of all scenarios.

The hard way

In our case the manual error handling has to be done in the controller, because we don’t want the services to have any knowledge of the error-messages component (especially in case of built-in or third-party services). So what does that look like? Say, we have the following happy-flow code:

angular.module('ExampleModule', [])
  // ExampleController is a controller that enables to load some additional data after the press of a button.
  // This data is then accessible on $scope.data.
  .controller('ExampleController', function ($scope, someService) {

    $scope.loadAdditionalData = function () {
      someService.loadIt().then(function (data) {
        $scope.data = data;
      });
    };

  });

(ExampleController without error handling)

We want to:

  1. Catch exceptions
  2. Catch asynchronous errors
  3. Provide a user-friendly error message to the user including meaningful context.

We get something like this:

angular.module('ExampleModule', [])
  // ExampleController is a controller that enables to load some additional data after the press of a button.
  // This data is then accessible on $scope.data.
  .controller('ExampleController', function ($scope, someService, showErrorMessage) {

    $scope.loadAdditionalData = function () {

      var context = 'load additional data';

      try {

        someService.loadIt()
          .then(function (data) {
            $scope.data = data;
          })
          .catch(function (err) {
            // Catch promise rejections (e.g. problems with HTTP call)
            showErrorMessage(err, context);
          });

      catch (err) {
      	// Problems in our loadIt() synchronous code.
      	showErrorMessage(err, context);
      }
    };

  });

(ExampleController with error handling)

As you can see, we now have more error handling code than “happy code”, but we do have all bases covered (assuming we have a slightly intelligent showErrorMessage service that extracts error messages from Errors and uses the context for better messages, etc). So how do we go from here? We could put the error handling code in our service to unclutter the controller, but that just moves the problem to a different place, it doesn’t solve anything. Besides, some services are built-in or third-party, we cannot change those. So we have to do something else. Let’s start by putting the boilerplate in a separate service.

Step 1: Remove boilerplate

The first step is to take all this boilerplate code, put it in a service and handle all error cases automatically with one call. So we need a service (errorHandler) that can do the following:

angular.module('ExampleModule', [])
  // ExampleController is a controller that enables to load some additional data after the press of a button.
  // This data is then accessible on $scope.data.
  .controller('ExampleController', function ($scope, someService, errorHandler) {

    $scope.loadAdditionalData = function () {

      // The method [errorhandler.call(method, self, context, args...)] handles all error cases
      // and returns whatever the method returns.
      errorHandler.call(someService.loadIt, someService, 'load additional data')
        .then(function (data) {
          $scope.data = data;
        });

    };

  });

(ExampleController with less boilerplate)

This removes a lot of boilerplate. It doesn’t do much for readability and we still need to provide the context (‘load additional data’) everywhere we use any service, but it is a start. Look at the companion page for a working demo.

Step 2: Decorate your services

The next step is to completely remove all boilerplate and return to our “happy code” (the first code fragment). How do we do that? AngularJS provides a way to decorate services with your own code (using: $provide.decorator()). We can use that to automatically wrap all function-calls in an errorHandler.call call. Our complete example code now looks like this (including the someService):

angular.module('ExampleModule', ['OurErrorHandlerModule'])

  // Our [someService] does a simple HTTP call
  .factory('someService', function ($http) {
    
    // The code is simple, but a lot can go wrong here...
    function loadIt() {
      return $http.get('somefile.json')
        .then(function (result) {
          return result.data;
        });
    }

    // We can provide the context inside the service if it is our own service, it serves as documentation as well,
    // you can also provide the context seperately in a .run(...) block. This is the only extra thing we have to do
    // for our services.
    loadIt.description = 'load additional data';

    // The actual service:
    return {
      loadIt: loadIt
    }
  })

  // Decorate the service. Because we can do this outside of the service, we can also use this for built-in or third-party services.
  .config(function (errorHandlerProvider, $provide) {
    errorHandlerProvider.decorate($provide, ['someService']);
  })

  // ExampleController is simple again... but this time with complete error handling.
  .controller('ExampleController', function ($scope, someService) {

    $scope.loadAdditionalData = function () {
      someService.loadIt()
        .then(function (data) {
          $scope.data = data;
        });
    };

  });

(Example code using the complete errorHandler service)

The source code of this errorHandler service is available in this GitHub repository. As you see, the only step we need to take for complete error handling is the .config(…) block above. If you want to provide extra context for the user, you can simply provide a description on your functions and voila, you’re done. For a demo and more information you can look at the sourcecode and the demo page.

PS: Zones

In the future https://github.com/btford/zone.js/ might just provide a better way (or at least way cooler) to get a context for your messages (already available in Dart: https://www.dartlang.org/articles/zones/).

The post Automatic error handling in AngularJS appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/06/automatic-error-handling-in-angularjs/feed/ 0
Major take-aways from Oracle OpenWorld 2014 – some relevant conclusions http://technology.amis.nl/2014/10/05/major-take-aways-from-oracle-openworld-2014-some-relevant-conclusions/ http://technology.amis.nl/2014/10/05/major-take-aways-from-oracle-openworld-2014-some-relevant-conclusions/#comments Sun, 05 Oct 2014 11:57:40 +0000 http://technology.amis.nl/?p=32481 Oracle OpenWorld 2014 is over. Just under a week, full to the brim with information, events, people, energy, plans, hopes and expectations. I have learned many, many things. Small things, important facts, huge insights and many great people. In this article, I will attempt to sum up the largest themes of the conference as I [...]

The post Major take-aways from Oracle OpenWorld 2014 – some relevant conclusions appeared first on AMIS Technology Blog.

]]>
image

Oracle OpenWorld 2014 is over. Just under a week, full to the brim with information, events, people, energy, plans, hopes and expectations. I have learned many, many things. Small things, important facts, huge insights and many great people. In this article, I will attempt to sum up the largest themes of the conference as I have interpreted them. In subsequent publications, I will focus on some of them as well as discuss less grand but equally interesting findings.

Note: my insights are derived from keynote sessions, press releases, general sessiteons and other conference sessions, discussions in the hall way etc. However, they are my personal interpretation and a safe harbor statement should be in order: don’t take my word for anything – use my comments as a lead to start doing your own explorations.

What I have learned at Oracle OpenWorld 2014

Oracle is working very hard to roll out an extensive set of PaaS services. This concerted effort takes precedence over virtually anything else. New functionality in any platform product is developed first for the cloud and only then for on-premises application. Only few of these services are fully available today – per direct, to anyone, according to well defined conditions. However, many will be made available in the near future – say the next six months.

image

The availability of Oracle’s PaaS services will have the potential of bringing the Oracle Platform within reach (again) of smaller and midsize organizations that currently cannot afford the on-prem licenses. Without substantial investment or long term commitment, it should be possible for the Oracle platform to be flexibly entered, and left as well.

The fact that Oracle’s SaaS products – a very substantial catalog these days with over 20k customers, thanks to a large degree to many recent acquisitions – run on Oracle’s PaaS services and are explicitly designed to be customized, extended and integrated with using these PaaS technologies creates a lot of opportunities for partners (such as AMIS). For example through the Oracle Cloud Marketplace, partners can offer reusable extensions and integrations that are deployed and run on the Oracle PaaS environment, integrating with the customer’s SaaS instance. Note: 19 out of the 20 largest SaaS products run on the Oracle platform, Workdays being the exception.

The Marketing Cloud is serious business at Oracle, claiming to be the largest player in this space. The new Data as a Service fits into this area (a new service that makes marketing data available from countless sources, based on the BlueKai acquisition), as does the announcement of the integration of Box.com in the marketing cloud: Box’s content collaboration platform, which allows marketers to make assets available to designers and other stakeholders, will seamlessly mingle with Oracle’s Marketing Cloud. The integration will allow Marketing Cloud customers to develop content with tools such as Microsoft Office products and PDFs, and then instantly convert them into HTML5. Additionally, the integration will enable folders in Box to automatically sync with Marketing Cloud’s content store, making them available for campaign usage on Oracle’s cross-channel marketing platform.

Longer term, Oracle strives for Private and Public Cloud parity: the same facilities and functionality is offered in the cloud and on prem. The same technology stack is used for implementing and administering the cloud and on prem environments. The same components can be deployed on the PaaS services as on the on prem platform. Eventually, we will be able to move deployed applications from on premises to cloud and vice versa. Beyond that, complete environments – first shutdown and later on even running, live environments – can be moved between the local private cloud and the remote cloud environment.

image

This is potentially an important edge Oracle’s PaaS cloud will have over competitors: it offers the same platform on premises as in the cloud and allows therefore hybrid topologies with mix and mash between environments. Even when on prem is desirable, yet a new environment cannot be provisioned very rapidly, a project may start out in the cloud, then seamlessly move to on prem when the provisioning is complete.

Some of the more recently acquired  SaaS offerings from Oracle will soon be migrated to ADF: Right Now (ServiceCloud), Taleo and CPQ (Configure, Price , Quota – aka Big Machines). This is an important boost for ADF and its continued importance to Oracle as its enterprise development framework.

Oracle Social Network

One of the first cloud services ever offered by Oracle was the Oracle Social Network. This Facebook-like facility- targeted at the enterprise environment – has been available with all SaaS offerings from Oracle. It offers the option to co-workers to engage in ‘social conversations’ – threads around common activities, cases or objectives. A conversation can include business objects – such as orders, customers, projects or general ledger entries – and documents (integration with the Document Cloud Service). The conversation can be accessed from the context of the business object – and vice versa. One organization that is using this Social Network avidly is Oracle itself.

In the very near future, Oracle is opening up this Social Network: partners creating extensions to SaaS applications and (probably) anyone creating and deploying applications on the Oracle PaaS can integrate with the Social Network and can expose their own business objects as objects in conversations. If I understand correctly, it will be possible to sign up for the Social Network for customers who to not work with any of the SaaS offerings from Oracle.

OpenStack

Oracle is – still somewhat tentatively perhaps – embracing OpenStack. Both with Oracle Linux and Oracle Solaris it offers a full distribution of OpenStack. For example: the combination of OpenStack and Oracle Solaris has been engineered for private cloud deployments, providing a secure, reliable, and scalable platform for agile application provisioning and self-service virtual environments. The Oracle OpenStack for Oracle Linux distribution allows users to control Oracle Linux and Oracle VM through OpenStack in production environments (Oracle OpenStack for Oracle Linux is available as part of Oracle Linux Premier Support and Oracle VM Premier Support offerings at no additional cost; Oracle OpenStack for Oracle Linux is available as a free download from the Oracle Public Yum Server and Unbreakable Linux Network (ULN). An Oracle VM VirtualBox image of the product is also available on Oracle Technology Network, providing an easy way to get started with OpenStack.).

Canonical – the company behind Ubuntu – will support Ubuntu as a guest OS on Oracle Linux OpenStack, and Oracle will support Oracle Linux as a guest OS on Ubuntu OpenStack. Canonical will test Oracle Linux as a guest OS in its OpenStack Interoperability Lab (OIL) program.

Oracle Virtual Networking now also supports OpenStack. The Oracle Virtual Networking OpenStack Neutron plug-in, announced at Oracle OpenWorld, is based on the OpenStack Icehouse release and enables all of Oracle’s software-defined networking (SDN) and network fabric capabilities to be created, provisioned and managed by the OpenStack framework.

Software in Silicon

Oracle has embarked on “Software in Silicon” – a program to achieve 5-10 times performance improvement for core database operations by baking some database specific operations into the CPU itself. For example: the Oracle NUMBER type is a software implementation on top of every platform specific’s native types. When NUMBER is embedded in the processor, enormous performance gains can be achieved. Additionally, the lowest level filtering operations can be performed “in silicon” (similar at a very different level to the smart scan running on the storage cells in Exadata). At that same level, in line level decompression allows much more data to be placed in memory and still be accessible at very high speed levels. More database specific implementation aspects can be brought into silicon – starting with Sparc M7 processor (is due to launch sometime next year) and potentially offered to/by other vendors (such as Intel) as well.

image

Big Data

Even though Big Data (and even more so last year’s big thema of IoT) was a somewhat less pervasive theme at the conference, Oracle is certainly making important steps towards making Big Data more accessible to organizations in a pragmatic way. Through Big Data SQL, non-relational data on an Hadoop HDFS can be accessed from within an Oracle Database using standard Oracle SQL. To developers and tools alike – many of whom are pretty fluent in SQL but much less so in the technologies used to access data on Hadoop – this makes big data very accessible. When Big Data SQL is leveraged with the Oracle Big Data Appliance, the BDA will employ smart scan – a clever form of preprocessing of data on the Hadoop cluster which ensures that far less data – and only the relevant bits – are moved from the Big Data world to the memory and CPUs doing the Oracle Database SQL processing. This mechanism is similar to the smart scan facility in Exadata Storage Cells. Other advances around Big Data are Big Data Discovery – an Endeca based in-browser visualizer of meaningful data patterns – and the Analytics Cloud with the Oracle BI Service. These services make it very easy to make sense of Big Data and figure out the ways in which meaningful reporting and insight-extraction can be set up on top of Big Data gathering.

Line of Business User or: the citizen developer

In many sessions, Oracle staff discussed the Line of Business (LoB) user who has to be empowered. Gartner speaks about the citizen developer – and Oracle means about the same thing. The idea is that with no or only limited intervention or preparation by IT staff, business users can do meaningful things themselves, such as get insights from (big) data, configure simple dashboards, create straightforward data entry and data explorations apps for mobile devices etc. Who can work with Excel should be able to do many useful things in the world of Oracle (and Oracle Cloud) as well. Some tangible examples for products (in the making) under this theme include StreamExplorer – for real time data analysis -, MAX – the mobile application accelerator-, Big Data Discoverer, BI Cloud Service and even the Process and Integration Cloud Services.

User Experience

Having already made big strides in the user experience of SaaS applications such as Sales Cloud and HCM Cloud, Oracle is next taking an enormous step in the user experience with virtually all of its products. At the conference, the Alta User Interface (and user experience) as launched – to be applied across all SaaS applications as well as all Cloud User Interfaces for the PaaS services. Additionally, this user experience will permeate all on premise products as well (or at least the browser based ones). Alta is supported by Oracle’s development tools and frameworks for mobile, cloud, and web-based applications – such as ADF en MAF – to allow anyone building custom applications with Oracle technology to create a similar user experience. The Oracle Alta UI system is based on four design principles:

  • Design for mobile first
  • Keep layouts simple and uncluttered
  • Provide a clear information hierarchy
  • Engage users with more visual content

Oracle Alta UI console

Important themes in the area of User Experience are context (as in Gartner’s context aware computing) and capture. The form refers to how a user experience should be enriched based on everything the system knows about the user and her (current) circumstances. Do not make the user enter data or make choices that can already be arrived or at least reasonably guessed at. Capture refers to the stage before data is handed over to ‘the system’ in a form that the system knows how to process. Data that is ‘out there’ or that lives in the heads of human actors have to transferred and converted into the application. A process that is typically time consuming, cumbersome error prone and interruptive. Any improvements in this stage make life a lot easier for users and have the potential of dramatically improving speed and accuracy. Oracle (through the Applications User Experiences team) is making very interesting steps to create a much better capture stage. Apart from mind reading (that is probably the next phase), any means of capturing data is investigated and explored – including wearables, beacons, OCR, speech recognition etc.

Mobile

Oracle’s Mobile story is becoming quite clear. All SaaS applications have (or very soon will have) mobile apps to provide access to quick “glance and scan” activities – relevant insights and alerts, straightforward decisions and manipulations. These mobile applications are or will be created using Oracle’s own Mobile Application Framework (MAF), using the Alta user experience theme. MAF is available to anyone who wants to create mobile apps. MAF allows cross platform (iOS, Android and soon Windows as well) development of native applications that interact with device features (GPS, phone, camera, contacts, email, etc), can use local database storage and run a local, on device JVM. Development with MAF is more declarative than native ObjectiveC or Android app creation. Many higher level components – as well as a tailored IDE – are available for productive development. Especially noteworthy are the rich data visualizations available out of the box with MAF. The Mobile Application Accelerator (MAX), a browser based tool that allows very visual and declarative development of fairly simple, straightforward mobile applications, helps ‘citizen developers’ create MAF apps – that could subsequently be refined and extended by (real) developers.

image

Oracle recognizes that most developers will probably not use MAF for their app-development. However, they still need access to data services and would be served well by a rich backend that takes care of common concerns such as cross platform push notification, user management and access control, data enrichment and caching of (lookup) data, management of cross device personal cloud and long running conversations and more. The perhaps most important new PaaS cloud service to be launched by Oracle is the Mobile Cloud Service. This service provides the capabilities mentioned above to back any number of mobile applications with shared (mobile) services as well as controlled access to SaaS APIs and on premises enterprise systems. The Mobile Cloud Service is as an end-to-end infrastructure for building apps connected to Oracle’s software portfolio and third party SaaS and on prem applications.

With MCS – APIs are composed as mash-ups of other APIs and of services exposed by SaaS products and on premise enterprise systems. These APIs – typically published as REST-services – can be consumed by subscribed apps. Oracle is first targeting mobile apps with the MCS, but any application or integration platform requiring access to REST-services could leverage the MCS. MCS offers many other capabilities in addition to the creation and management of these APIs, including identity and access management, caching, push notifications (interacting with Apple’s and Google’s push notification services), analytics on usage, monitoring. With MCS – enterprises can be mobile enabled with very limited effort, investment and risk. No new users access the enterprise, no additional load from potentially thousands or more devices has to be catered for, no extreme availability constraints have to be put on the backend systems, no outsider developers need access to various systems etc. MCS can turn out to be a big mobile enabler.

Multidensity and Density

A term used in several sessions was density – for example on the PaaS platform. This basically means: do more with less IaaS resources (such as memory, CPU and even disk). It turns out that for example class loading on JVMs can be done a lot smarter, with far more reuse instead of duplication of objects. In order for Oracle to create a truly scalable, lean (affordable) cloud environment, it is important that PaaS components use IaaS services and other PaaS components in a sustainable way. The work Oracle is doing for example on WebLogic will benefit organizations creating a Private Cloud based on Oracle’s PaaS platform. Note that the Oracle Database 12c multitenant database architecture has in part a very similar goal:reduce over all resource consumption by sharing the resources across multiple tenants (pluggable databases). It seems likely that the work being done by the WebLogic team will benefit not just the Oracle public PaaS Cloud and the Exalogic private cloud, but the core Hotspot JVM as well. The initial Note: multitenancy is an important theme for the core Java EE 8 as well as Java SE 9 platforms.

Multitenancy will be an important feature (or even architecture) for WebLogic in the near future. It will subsequently also become engrained in other PaaS components, such as SOA Suite and presumably WebCenter Content.

Security

As Larry Ellison mentioned in both his keynote sessions, the new job at Oracle is SECURITY. It is of course crucial for the Oracle Public Cloud to be very secure. Enticing organizations to entrust their data and business process execution to the Oracle Cloud will not be easy. Any security breach or even a whiff of suspicion of lack of security will make that task virtually impossible. Security at every level – between Oracle and the multiple tenants as well as at the level of all users within a tenants realm (coordinated by the tenant himself) has to absolute. The attention for security measures at every level in the stack – from software in silicon to anti-social-engineering – will be large. And again, this focus in the public cloud will improve the platform and as a result help users of the same stack in their private cloud as well. When Oracle fixes things at their PaaS Public Cloud level in the same stack used on premises, the solutions are probably good enough for most on premise use cases too.

Oracle and the Community – the future of the past

Oracle is not wildly popular with the young crowds. At university, it does not seem as if Oracle technology is a prime topic on the curriculum (with the possible exception of Java). The average age at Oracle user group gatherings in many countries is still increasing. The influx of young Oracle developers and DBAs is not large. The push from below at enterprises to further invest in Oracle technology may as a result not be overwhelming. Additionally, this ‘legacy’ community, while loyal, is not always as forward looking as it probably should be. It is not uncommon for veteran Oracle developers to create code – SQL, PL/SQL – that is impressively backward compatible with milestone releases like Oracle7. Think about that for a moment: Oracle has invested long years and large amounts of money to advance the database from where it stood in the mid-90s to where it is today. And organizations have to pay licenses that reflect the value of all these functional and non-functional enhancements. Yet because of lack of up to date knowledge on the part of administrators and developers, much of this potential remains untapped. The perceived value of the investments in the Oracle platform could substantially be lowered because of this – threatening the longer term adoption of Oracle’s technology at an organization.

At the very highest echelons within Oracle – Thomas Kurian, Andy Mendelsohn to name but two important crusader – the above has been recognized and identified as a priority. Steven Feuerstein (PL/SQL community leader and Oracle Database development evangelist) has been hired and tasked with both increasing the popularity of Oracle outside the current community as well as improving the usage of modern facilities and features in the Oracle platform by existing members of the community. Steven is putting together a team to assist him in that challenge, as well as reaching out to the community to support him. Watch for terms such as YesSQL and LiveSQL as well as new ones yet to be developed to learn more about this initiative.

Hardware

Some new hardware announcements at OOW 2014: Zero Data Loss Recovery appliance (the world’s first and only engineered system designed specifically for Oracle Database protection), Exalytics X4-4 (with up to 3TB of memory) leveraging the Oracle Database 12c In Memory option (instead of TimesTen in memory database). All Flash Storage Array SAN machine: the Oracle FS1 Series Flash Storage System scales to petabytes of all-flash capacity while delivering a multitude of innovations designed to take flash technology to new extremes – getting the benefits from hard disks as well as predictable speed delivery by an all-flash-array. The still fairly new Exadata (X4-8, July) with focus on Database In Memory (12 TB DRAM together with transparent data tiering to flash and disk for less performance-critical data). No new releases of Exalogic and Virtual Compute Appliance.

Real Time

One of the frequently heard themes was ‘real time’. Information or better yet Insight (and recommended or even automated Action) in near real time. Some information is yesterday’s news even before it is tomorrow. Some conclusions have to be reached from data and events within minutes. This requires the capacity to gather the data, analyze it and present findings to human actors in near real time – seconds to minutes. And typically there is a lot of source data involved as well.

The slow factor – apart from network latency and the sheer volume of this fast data – is typically us: how to engage a human quickly enough in such a way that insight is nearly instantaneous and the requires action can be performed nearly as quickly. Oracle is working on all pieces of this puzzle – with data visualization at the human end of the chain, event processing in the second step and a variety of technologies at the data gathering beginning of the story (from physical devices – sensors, beacons) to software probes and sensors baked into applications and platform infrastructure. Here we see another type of LoB user enablement: the insight provided by the system has to be interpreted by a business user – not an IT person. Data is not good enough, and even information that still requires considerable analytical and technical skills for proper and quick interpretation will not do. The visualization has to support the LoB user in direct understanding – at least of the need to drill down further (again the glance (see the alert), scan (drill down to understand the importance and perhaps take quick, straightforward action) and commit (look into the details and embark on a more complex response action).

DevOps and BusOp

We see a meeting coming up between business and technical operations: IT operational staff – system administrators, DBAs, Middleware and infrastructure specialists – monitor in real time, using various types of technical logging to observe, analyze and resolve technical issues. At a more function, business oriented level, they will have counterparts who monitor in real time the execution of the business processes.

Disruptions at technical level may very well have consequences at the business level, and if so typically require collaboration between the two groups to resolve. Furthermore, issues in the functional execution of processes may not be visible at all at technical level. It is increasingly important for business representatives to have real time insight in such issues, even before they occur (for example by spotting trends that without action may result in thresholds being crossed). SLA – service level agreements – on both technical metrics as well as business indicators – with corresponding metrics and dashboards are becoming more and more important as longer chains and more extensive business processes are linked and automated. Additionally, with sections of these chains running on a (partly) externally managed infrastructure and platform, deriving business operational insight directly is also more important because using technical logging to indirectly derive business insight no longer be meaningful or even possible.

It seems that the DevOps movement – previously more associated with all interaction between infrastructure and platform specialists on the one hand and development teams on the other before a system is taken into production, will have a parallel in the interaction between business operations and IT operations at run time.

Common Goal, Drive and Energy

Oracle is a big place. It offers over 4200 different products, created by a large number of development teams that historically have not always worked together in very close collaboration or even communication. It is my observation that more than ever before, the teams at Oracle are now working together, brought together by a common goal – the cloud – and unified by the common user experience (Alta for short). Almost every team needs to work with other teams because it works on top of (cloud) services provided by other teams. In the world of the Oracle Cloud, there is no room for any product team to create its own incarnation of something that is offered as a generic cloud service. All of a sudden, all across the board teams are actually teaming with each other. I believe that as a result, everyone benefits. Product teams will focus more on their core added value than on generic facilities that they will now simply consume. The functionality and non-functionality of the underlying platform services will improve too, because of the early collaboration and testing that is the result of the internal consumption of these services. The common user experience also results in a feeling of joint responsibility, in addition to aligning the design activities. It seems that this grand mission of bringing Oracle to the cloud is energizing the company – now, more than in many years, there seems to be a spark back at Oracle. A belief in the mission. I liked witnessing this enthusiasm and self confidence.

Resources

Mobile

MAX: http://www.oracle.com/us/corporate/press/2313779

MAF and Mobile Security Suite – http://www.nasdaq.com/press-release/enhanced-integration-between-oracle-mobile-application-framework-and-oracle-mobile-security-suite-20140930-00886

Cloud

New and Existing PaaS Cloud Services from Oracle – https://www.oracle.com/corporate/pressrelease/cloud-portfolio-092914.html

DaaS for Marketing – https://www.oracle.com/cloud/daas.html

Solaris and IaaS plus OpenStack: https://blogs.oracle.com/markusflierl/entry/oracle_solaris_and_openstack_at

Oracle Linux and Ubuntu/OpenStack http://www.zdnet.com/oracle-linux-is-coming-to-ubuntus-openstack-cloud-7000034106/ ; Oracle OpenStack for Oracle Linux Now Generally Available – http://www.oracle.com/us/corporate/press/2298602

Alta User Experience

https://www.oracle.com/corporate/pressrelease/oracle-alta-093014.html

http://www.oracle.com/us/corporate/features/ui-design/index.html

http://www.oracle.com/webfolder/ux/middleware/alta/index.html

Big Data

http://www.informationweek.com/big-data/big-data-analytics/oracle-unveils-hadoop-data-exploration-tool/d/d-id/1316198

http://www.oracle.com/us/corporate/press/2313734

Software in Silicon

http://www.theregister.co.uk/2014/09/29/ellison_sparc_m7/

http://www.oracle.com/us/corporate/features/sparc-m7/index.html

https://blogs.oracle.com/emeapartnerhardware/entry/in_memory_query_acceleration_of

http://www.oracle.com/us/corporate/press/2317676

http://www.nasdaq.com/press-release/oracle-announces-oracle-software-in-silicon-cloud-20140930-00842

Hardware

Oracle FS1 Series Flash Storage System  https://www.oracle.com/corporate/pressrelease/fs1-flash-storage-system-092914.html

Zero Data Loss Recovery Appliance – http://www.oracle.com/us/corporate/press/2313883

Exadata: http://www.oracle.com/us/corporate/press/2244663

Analysis, Reports, Reviews

InfoTech Lead http://www.infotechlead.com/2014/09/29/oracle-openworld-2014-key-announcements-25572

ZD Net http://www.zdnet.com/oracle-speeds-up-software-portfolio-with-big-data-mobile-in-mind-7000034205/

Mark Rittman: http://www.rittmanmead.com/2014/10/news-and-updates-from-oracle-openworld-2014/

Analytics Cloud – http://www.informationweek.com/big-data/big-data-analytics/oracle-unveils-hadoop-data-exploration-tool/d/d-id/1316198

Analysts break down Oracle Cloud business model: http://siliconangle.com/blog/2014/10/01/oracles-new-business-model-is-based-on-cloud-and-converged-infrastructure-oow14/

http://www.enterpriseirregulars.com/78293/oracles-approach-makes-sense-sucks/

Diginomica – http://siliconangle.com/blog/2014/10/01/oracles-new-business-model-is-based-on-cloud-and-converged-infrastructure-oow14/

The post Major take-aways from Oracle OpenWorld 2014 – some relevant conclusions appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/05/major-take-aways-from-oracle-openworld-2014-some-relevant-conclusions/feed/ 0
Web- and Mobile-Oriented Architectures with Oracle Fusion Middleware – Oracle OpenWorld 2014 http://technology.amis.nl/2014/10/03/web-and-mobile-oriented-architectures-with-oracle-fusion-middleware-oracle-openworld-2014/ http://technology.amis.nl/2014/10/03/web-and-mobile-oriented-architectures-with-oracle-fusion-middleware-oracle-openworld-2014/#comments Fri, 03 Oct 2014 13:39:11 +0000 http://technology.amis.nl/?p=32450 Mobile applications as well as a large class of modern HTML5 web applications are built on top of an architecture with special provisions, such as RESTful services; the personal cloud, to provide a cross-device experience; push; cache; localization; scalability; and secure interaction with the enterprise back end. Gartner refers to this as the web-oriented architecture. [...]

The post Web- and Mobile-Oriented Architectures with Oracle Fusion Middleware – Oracle OpenWorld 2014 appeared first on AMIS Technology Blog.

]]>
Mobile applications as well as a large class of modern HTML5 web applications are built on top of an architecture with special provisions, such as RESTful services; the personal cloud, to provide a cross-device experience; push; cache; localization; scalability; and secure interaction with the enterprise back end. Gartner refers to this as the web-oriented architecture. Oracle Fusion Middleware offers key products (Oracle SOA Suite, Oracle Identity Management, and Oracle API Gateway) to implement this architecture, possibly in combination with cloud services such as Oracle Mobile Cloud Service, Oracle Messaging Cloud Service, and Oracle Storage Cloud Service. This session discusses the architecture itself and what it entails.

This is the abstract for my first session at Oracle OpenWorld 2014. The slides for this session can be downloaded from the Content Catalog as well as from SlideShare: http://www.slideshare.net/lucasjellema/weband-mobileorientedarchitectureswithoraclefusionmiddlewareforxml-oow2014.

The sources for the demonstration I showed are available from GitHub: https://github.com/lucasjellema/SampleIssueTrackerAngularJSwithSOASuite12cRESTbackend.

The post Web- and Mobile-Oriented Architectures with Oracle Fusion Middleware – Oracle OpenWorld 2014 appeared first on AMIS Technology Blog.

]]>
http://technology.amis.nl/2014/10/03/web-and-mobile-oriented-architectures-with-oracle-fusion-middleware-oracle-openworld-2014/feed/ 0