Common Service Caching Patterns

Caché implies to hide something. In a technology context this is “some service hides some data for a period of time (minutes to years)” A cache is a bit of information we stash away to better serve the clients using our service. Some of the questions cache implementers face are: Cache expiry and invalidation Mechanism…More

The difference between Open APIs and an Open API Specification

RESTful APIs can be internal (your company’s only) or public facing (Twitter). Thus internal APIs are called “Private APIs” and open to the public APIs are called “Open APIs” Now, while building an API accelerator for our clients I was asked by a well meaning colleague if this was an Open API; the intent was…More

A Pandemic, Open APIs and Citizen Science: Its 2020 baby!

Human societies have been hit by pandemics through the ages and relied on the central governing authorities to manage the crisis and disseminate information. I believe this time around with COVID-19, our societies have access to more information from our governments because we have the internet If this pandemic is an evolutionary challenge, then our…More

Tackling complexity: Using Process maps to improve visibility of integrated system features

“Entropy always increases “– second law of thermodynamics Enterprise systems are similar to isolated physical systems, where the entropy or hidden-information always increases. As the business grows, our technology footprint grows as new systems are implemented, new products and cross-functional features are imagined and an amazing network of integrations emerge Knowing how information flows and…More

Complex Form Evaluation with Drools

Introduction Complex business rules are best implemented using a ‘Rules Engine’. Drools is an open source Business Rules Management Product. See here   In this blog we will cover a few basics of using the Drools rule engine, specifically using a Domain Specific Language (DSL) which is a language that is more user focused. The…More

Why is this not an API contract?

Why is this … my Swagger UI, generated from code not a contract? It describes my service, therefore it must be a Service Provider Contract. No?  This was a common theme for a few of our clients with mobile/web teams as consumers of enterprise services.  Service providers generated contracts, and would sometimes create a contract…More

Lessons from API integration

A general transition has been happening with the nature of work that I do in the integration space … we have been doing less of SOAP/XML/RPC webservices and more RESTful APIs for “digital enablement” of enterprise services .  This brought a paradigm shift and valuable lessons were learnt (rightly or wrongly) … and of course the process of…More

Camunda BPM – Manual Retry

The Camunda BPM is a lightweight, opensource BPM platform (See here: https://camunda.com/bpm/features). The “Cockpit” application within Camunda is the admin dashboard where deployed processes can viewed at a glance and details of running processes are displayed by the process instance ids. Clicking on a process instance id reveals runtime details while the process is running – process variables,…More

Microservices with Docker and Spring Boot

This guide is for someone interesting in quickly building a micro-service using the Spring Boot framework. Works great if you have prior JAX-RS / Jersey experience Step-by-step guide Add the steps involved: Create a Maven Project Final Structure Pom ( Attached here ) Include Spring Boot Dependencies in your pom Parent Project <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>…More

Dockerized Java Application Performance Analysis

Using JMX to analyse a Java Virtual Machine (JVM) within a local or remote docker image. The example below explores how to analyse a Tomcat Server (version 7) running in a docker instance using Oracle JRockit Mission Control (JMC) Your JRockit Mission Control is here OSX : “/Library/Java/JavaVirtualMachines/{JDK}/Contents/Home/bin/” Windows: “JDK_HOME/bin/”   Step-by-step guide Add the…More

API Performance Testing with Gatling

The Problem “Our API Gateway is falling over and we expect a 6-fold increase in our client base and a 10-fold increase in requests, our backend service is scaling and performing well. Please help us understand and fix the API Gateway”  Tasks It was pretty clear we had to run a series of performance tests simulating…More

Groovy Grape Turns Sour – java.lang.RuntimeException: Error grabbing Grapes — [download failed:

Issue: Trying to run a Ratpack Groovy code [ @Grab(‘io.ratpack:ratpack-groovy:1.0.0’) ] groovy -Dgroovy.grape.report.downloads=true -Dratpack.port=8081 server.groovy The Error: General Error:   java.lang.RuntimeException: Error grabbing Grapes — [download failed: Specific Error: java.lang.RuntimeException: Error grabbing Grapes — [download failed: org.yaml#snakeyaml;1.12!snakeyaml.jar(bundle), download failed: com.google.guava#guava;18.0!guava.jar(bundle)] The fix: Delete the Repository folders in repo managers like Maven. Why? Because the ~/.groovy/grapes repo…More

Oracle AS Adapter for Peoplesoft: IWAY Error Resolution

ERROR com.ibi.bse.ConfigWorker:java.lang.NoClassDefFoundError: oracle/tip/adapter/api/exception/PCResourceException Solution: It appears that Oracle took the IWay Servlet and built a Java Swing application around it that allows you to create a Web service (BSE) or J2CA based connection to the Enterprise Applications (SEIBEL, JDE, Peoplesoft). This Swing application is launched in a Unix/Linux shell using the iwae.sh script and in…More

Define/Assign Custom Paylod for your BPEL Human Task

When you create a BPEL Human Task, the payload type is not specified by default. You can specify a simple type from the drop down on the “Data” menu item on the BPEL Task Editor page. By default if you have not assigned a menu item then your “payload” element is not defined in your…More

Optus’ Samsung Galaxy S – Kies Download mgr now has FROYO!!!

A couple of days back when I got the new phone from Optus – a shiny Samsung Galaxy S, it came with a Kies version that said “No Firmware Updates Available” and the firmware version was Android 2.1 …. …the quest for Froyo ended last night when I checked for updates on Kier (Settings ->…More