Enterprise Integration: Choosing the Right ESB Solution

Nowadays, to use SOA-based architecture is the main option for enterprise application integration. There are quite a few handy open source candidates from Apache, MuleSoft and Talend, etc. Plus almost all major vendors’ ESB offerings, including IBM (Integration Bus), Oracle (OSB, SOA Suite), Software AG (webMethods), TIBCO (ActiveMatrix), Microsoft (BizTalk) and SAP (NetWeaver) etc.  Now the question is, among all of them, which one is the right one for your organization?

Before diving into following tools section, it’s worth to learn 65 enterprise integration patterns (EIP) to gain some knowledge about what and how in this area.

This article will mainly focus on open source solutions since they are more and more popular...

Read More

A Glance of BPMN 2.0 and Alfresco BPM Engine Activiti

Alfresco Activiti is a well-known open source BPM (Business Process Management) engine which may execute business processes depicted in BPMN 2.0. The authors of Alfresco Activiti developed jBPM for Red Hat previously, and after they left Alfresco in 2016, they forked Activiti code and created another open source workflow engine called Flowable. Later, Alfresco Activiti was re-branded as Alfresco Process Services (APS).

Before Activiti, the market of BPMN engines is already very crowded, Oracle, SAP, IBM and many others offer solutions. There are even more BPMN diagram tools, such as MS Visio,  LucidChart, MagicDraw, yEd and Sparx EA, etc...

Read More

PostgreSQL: Generating Generic Auditing Trigger

PostgreSQL, as one of the best open source object-relational DBMS, is quite popular today. However, it doesn’t provide built-in auditing function, which is required by most production systems.

Let’s see how we generate generic auditing function for a table in PostgreSQL schema. Then we should be able to generate auditing function for the entire schema easily.

Let’s assume we have an input parameter table name , and we have a pre-built auditing table, which contains all fields from source table, in line 5 below, plus all other auditing fields:

 CREATE TABLE schema_name.sample_audit
 (
 	audit_id bigint NOT NULL DEFAULT nextval('schema_name.sample_audit_id_seq'::regclass),
 	id bigint NOT NULL,
 	source table columns ........
Read More