<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;AkUERXszeSp7ImA9WhRRFE4.&quot;"><id>tag:blogger.com,1999:blog-104964420920877951</id><updated>2011-11-27T15:56:44.581-08:00</updated><category term="System integration" /><title>Shayan's Weblog</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://shayan-m.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://shayan-m.blogspot.com/" /><author><name>Shayan Manoochehri</name><uri>http://www.blogger.com/profile/05594073851088379022</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="21" src="http://1.bp.blogspot.com/_vCpFSN0l6mo/S4NBmjiRwtI/AAAAAAAAG8c/oXNAlTc57EU/S220/me2.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/ThatsWhyshayansWeblog" /><feedburner:info uri="thatswhyshayansweblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CEUGRXc8fSp7ImA9Wx9TFEo.&quot;"><id>tag:blogger.com,1999:blog-104964420920877951.post-4654138276037205797</id><published>2010-03-22T12:28:00.000-07:00</published><updated>2010-11-22T16:30:24.975-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-22T16:30:24.975-08:00</app:edited><title>Batch Processing System - EAI</title><content type="html">&lt;script type="text/javascript"&gt;&lt;br /&gt;&lt;br /&gt;  var _gaq = _gaq || [];&lt;br /&gt;  _gaq.push(['_setAccount', 'UA-19853590-1']);&lt;br /&gt;  _gaq.push(['_trackPageview']);&lt;br /&gt;&lt;br /&gt;  (function() {&lt;br /&gt;    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;&lt;br /&gt;    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';&lt;br /&gt;    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);&lt;br /&gt;  })();&lt;br /&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Batch Processing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Batch Processing is execution of a series of programs ("jobs") on a computer without manual intervention.&lt;br /&gt;&lt;br /&gt;Batch jobs are set up so they can be run to completion without manual intervention, so all input data is preselected through scripts or command-line parameters. This is in contrast to "online" or interactive programs which prompt the user for such input. A program takes a set of data files as input, process the data, and produces a set of output data files. This operating environment is termed as "batch processing" because the input data are collected into batches on files and are processed in batches by the program.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Benefits&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Batch processing has these benefits:&lt;br /&gt;&lt;br /&gt;• It allows sharing of computer resources among many users and programs,&lt;br /&gt;• It shifts the time of job processing to when the computing resources are less busy,&lt;br /&gt;• It avoids idling the computing resources with minute-by-minute manual intervention and supervision,&lt;br /&gt;• By keeping high overall rate of utilization, it better amortizes the cost of a computer, especially an expensive one.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Modern Systems&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Despite their long history, batch applications are still critical in most organizations. While online systems are now used when manual intervention is not desired, they are not well suited to the high-volume, repetitive tasks. Therefore, even new systems usually contain a batch application for cases such as updating information at the end of the day, generating reports, and printing documents.&lt;br /&gt;Common batch processing usage&lt;br /&gt;Databases&lt;br /&gt;Batch processing is used for efficient bulk database updates and automated transaction processing, as contrasted to interactive online transaction processing (OLTP) applications.&lt;br /&gt;Converting&lt;br /&gt;Batch processing is also used for converting a number of computer files from one format to another. This is to make files portable and versatile especially for proprietary and legacy files where viewers are not easy to come by.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Job scheduling&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A job scheduler is an enterprise software application that is in charge of unattended background executions, commonly known for historical reasons as batch processing.&lt;br /&gt;Synonyms are batch system, Distributed Resource Management System (DRMS), and Distributed Resource Manager (DRM). Today's job schedulers typically provide a graphical user interface and a single point of control for definition and monitoring of background executions in a distributed network of computers. Increasingly job schedulers are required to orchestrate the integration of real-time business activities with traditional background IT processing, across different operating system platforms and business application environment&lt;br /&gt;Features&lt;br /&gt;Basic features expected of job scheduler software are:&lt;br /&gt;• Interfaces which helps to define workflows and/or job dependencies&lt;br /&gt;• Automatic submission of executions&lt;br /&gt;• Interfaces to monitor the executions&lt;br /&gt;• Priorities and/or queues to control the execution order of unrelated jobs&lt;br /&gt;Organizations needing to automate highly complex related and un-related IT workload will also be expecting more advanced features from a job scheduler, such as:&lt;br /&gt;• Real-time scheduling based on external, un-predictable events&lt;br /&gt;• Automatic restart and recovery in event of failures&lt;br /&gt;• Alerting and notification to operations personnel&lt;br /&gt;• Generation of incident reports&lt;br /&gt;• Audit trails for regulatory compliance purposes&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Main Concepts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are many concepts that are central to almost every job scheduler implementation and that are widely recognized with minimal variations:&lt;br /&gt;• Jobs&lt;br /&gt;• Dependencies&lt;br /&gt;• Job Streams&lt;br /&gt;• Users&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Workload Automation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The concept of Workload Automation is an evolution of traditional job schedulers which needed to react to the dynamic demands of IT. Workload automation needs to be able to coordinate—in real-time—a varied set of workload types with complex dependencies across a broad spectrum of operating systems and application platforms.&lt;br /&gt;A scheduling model based only upon calendar events is not sufficient to meet the demands of today’s automated data centers. The requirement for batch submission of workloads driven by date/time dependencies still exists, but on-demand IT processing requirements have expanded job submission triggers far beyond the time dimension.&lt;br /&gt;Workload Automation solutions should provide: a service-oriented architecture (SOA); integration capabilities at the application services level for web services and J2EE-based applications; a service-level orientation for managing workloads and finally, a critical path analysis and reporting capabilities.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cybermation ESP&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cybermation ESP is a good example of an event-driven, cross platform Enterprise Job Scheduling solution that provides the opportunity to use a single point of control across all environments, operating systems, applications and databases. By consolidating multiple scheduling tools and providing real-time automation, Data Center Managers benefit from these capabilities to mask the complexity of their heterogeneous environment, gain from increased agility, and also limit the number of resources needed to manage their systems.&lt;br /&gt;History&lt;br /&gt;&lt;br /&gt;Job Scheduling has a long history. Job Schedulers are one of the major components of the IT infrastructure since the early mainframe systems. At first, stacks of punch cards were processed one after the other, hence the term “batch processing.”&lt;br /&gt;From a historical point of view, we can distinguish two main eras about Job Schedulers:&lt;br /&gt;&lt;br /&gt;• The mainframe era - Job Control Language (JCL) on IBM mainframes: Initially based on JCL functionality to handle dependencies this era is typified by the development of sophisticated scheduling solutions forming part of the systems management and automation toolset on the mainframe.&lt;br /&gt;&lt;br /&gt;• The open systems era - Modern schedulers on a variety of architectures and operating systems: With standard scheduling tools limited to such as Cron, the need for mainframe standard job schedulers has grown with the increased adoption of distributed computing environments.&lt;br /&gt;&lt;br /&gt;In terms of the type of scheduling there are also distinct eras:&lt;br /&gt;&lt;br /&gt;• Batch processing - the traditional date and time based execution of background tasks based on a defined period during which resources were available for batch processing (the batch window). In effect the original mainframe approach transposed onto the open systems environment.&lt;br /&gt;&lt;br /&gt;• Event-driven process automation - where background processes cannot be simply run at a defined time, either because the nature of the business demands that workload is based on the occurrence of external events (such as the arrival of an order from a customer or a stock update from a store branch) or because there is no / insufficient batch window.&lt;br /&gt;&lt;br /&gt;• Service Oriented job scheduling - recent developments in Service Oriented Architecture (SOA) have seen a move towards deploying job scheduling.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Scheduling&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Various schemes are used to decide which particular job to run. Parameters that might be considered include:&lt;br /&gt;• Job priority&lt;br /&gt;• Compute resource availability&lt;br /&gt;• License key if job is using licensed software&lt;br /&gt;• Execution time allocated to user&lt;br /&gt;• Number of simultaneous jobs allowed for a user&lt;br /&gt;• Estimated execution time&lt;br /&gt;• Elapsed execution time&lt;br /&gt;• Availability of peripheral devices&lt;br /&gt;• Occurrence of prescribed events&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sample implemented Patch Processing System&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Following diagram illustrates different pieces of an EAI system implemented in a large scale enterprise application (CMS project at WorkSafeBC). The purpose of this system is to provide a reliable asynchronous data transformation between External systems: MSP/Emergis and newly implemented system:CMS which includes following components:&lt;br /&gt;• IBM z/OS Mainframe&lt;br /&gt;• FTP Location (for incoming/outgoing files)&lt;br /&gt;• Mainframe Jobs (written in JCL)&lt;br /&gt;• ESP Job Schedular&lt;br /&gt;• MS Windows BAT files&lt;br /&gt;• Java Script files&lt;br /&gt;• Curam Batch Launcher&lt;br /&gt;• CMS interfaces (Batch Processes)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vCpFSN0l6mo/S6fFcPz1WTI/AAAAAAAAG-A/k1H7BL1NsTU/s1600-h/BP.bmp"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="http://3.bp.blogspot.com/_vCpFSN0l6mo/S6fFcPz1WTI/AAAAAAAAG-A/k1H7BL1NsTU/s320/BP.bmp" alt="" id="BLOGGER_PHOTO_ID_5451542963026221362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;IBM z/OS Mainframe &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;z/OS is a 64-bit operating system for mainframe computers, created by IBM. It is the successor to OS/390, which in turn followed MVS and combined a number of formerly separate, related products. z/OS offers the attributes of modern operating systems but also retains much of the functionality originating in the 1960s and each subsequent decade that is still found in daily use. (Extreme backward compatibility is one of z/OS's central design philosophies.) It is derived from OS/390 and was introduced in October of 2000.&lt;br /&gt;z/OS supports mainframe staple technologies such as CICS, IMS, DB2, RACF, SNA, WebSphere MQ, record-oriented data access methods, REXX, CLIST, SMP/E, JCL, TSO/E, and ISPF. However, z/OS also supports 64-bit Java, C/C++, and UNIX (Single UNIX Specification) APIs and applications, with UNIX/Linux-style hierarchical HFS and zFS file systems. As a result, z/OS now can host Oracle database (RDBMS software) and SAP(ERP software). z/OS can communicate directly via TCP/IP, including IPv6, and includes a standard HTTP server along with other common services such as FTP, NFS, and CIFS/SMB. Another central design philosophy is support for extremely high quality of service (QoS), even with a single operating system instance, although z/OS has built-in support for Parallel Sysplex clustering.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;FTP Location&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is the location of the incoming/outgoing files as well as intermediate encoded files produced as the result of intermediate main frame jobs in different stages.&lt;br /&gt;&lt;br /&gt;MSP and Emergis Systems would FTP their data files such as transactions, reference data, providers information and etc to this location. These data would arrive on daily/weekly/Bi-weekly/monthly/on-demand basis to be processed by CMS.&lt;br /&gt;&lt;br /&gt;On the other hand, where WorkSafeBC needs to send the result of processes to External Systems, it would FTP the outgoing files from this location. These data includes: pharmacy drug profile confirmation file, invoice decision file and etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mainframe Jobs &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;These jobs are written in JCL and basically are similar to legacy code with some changes to be compatible with&lt;br /&gt;CMS system. The main purpose of these jobs are to encoding the file from EBCDIC to ASCII, Sorting and FTP the out put file to the location where CMS jobs would pick it up for further processing.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ESP Job Scheduler&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cybermation ESP is used as a facility to definition and monitoring the jobs based on the information given in design time through worksheets which mainly includes the description of the job for ESP users, timing of the jobs: daily/weekly/bi-weekly/monthly, events that would result in submission of the job, dependencies to other jobs and manual/automatic actions to be taken based on return codes from the jobs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MS Windows BAT files&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;BAT file are called by scheduler which subsequently would call java programs (CMS interfaces) through Curam Batch launcher. The main purpose of these BAT files are to located the input file or submit the output file, execute the batch launcher, eventually returning the result of batch process to ESP scheduler.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Java Script files&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In some circumstances, there is a need to pull the input file from the external system by java scripts and eventually making it ready for other jobs to further processing.&lt;br /&gt;Curam Batch Launcher&lt;br /&gt;Curam Batch Launcher is the starting point to run the CMS interfaces (batch processes). This utility is called by BAT files.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Interfaces (Batch Processes)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;These are the java programs to load the input files to CMS database after validation of the input file for inbound interfaces or generate output file in case of outbound interfaces such as invoice decision files. To avoid locking the Data Base tables for long period of time, checkpoint restart mechanism is used. I.e., after processing of certain number of records, transaction is committed to Data Base and check point is stored. Besides, in case job failure in middle of the process, the ESP Scheduler would restart the job from last check-point providing the job runtime id.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/104964420920877951-4654138276037205797?l=shayan-m.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ofhee5PsNeOvsJyLPXro49xEFDo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ofhee5PsNeOvsJyLPXro49xEFDo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ofhee5PsNeOvsJyLPXro49xEFDo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ofhee5PsNeOvsJyLPXro49xEFDo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThatsWhyshayansWeblog/~4/EKDh5V8pewc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shayan-m.blogspot.com/feeds/4654138276037205797/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://shayan-m.blogspot.com/2010/03/batch-processing-system-eai_22.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/104964420920877951/posts/default/4654138276037205797?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/104964420920877951/posts/default/4654138276037205797?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ThatsWhyshayansWeblog/~3/EKDh5V8pewc/batch-processing-system-eai_22.html" title="Batch Processing System - EAI" /><author><name>Shayan Manoochehri</name><uri>http://www.blogger.com/profile/05594073851088379022</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="21" src="http://1.bp.blogspot.com/_vCpFSN0l6mo/S4NBmjiRwtI/AAAAAAAAG8c/oXNAlTc57EU/S220/me2.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_vCpFSN0l6mo/S6fFcPz1WTI/AAAAAAAAG-A/k1H7BL1NsTU/s72-c/BP.bmp" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://shayan-m.blogspot.com/2010/03/batch-processing-system-eai_22.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQEQnk9cSp7ImA9Wx9TFEo.&quot;"><id>tag:blogger.com,1999:blog-104964420920877951.post-9165459007314082032</id><published>2010-02-18T10:15:00.000-08:00</published><updated>2010-11-22T16:31:43.769-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-22T16:31:43.769-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="System integration" /><title>Enterprise Application Integration</title><content type="html">&lt;script type="text/javascript"&gt;&lt;br /&gt;&lt;br /&gt;  var _gaq = _gaq || [];&lt;br /&gt;  _gaq.push(['_setAccount', 'UA-19853590-1']);&lt;br /&gt;  _gaq.push(['_trackPageview']);&lt;br /&gt;&lt;br /&gt;  (function() {&lt;br /&gt;    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;&lt;br /&gt;    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';&lt;br /&gt;    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);&lt;br /&gt;  })();&lt;br /&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EAS as System integration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In engineering, system integration is bringing together of the component subsystems into one system and ensuring that the subsystems function together as a system. In information technology, systems integration is the process of linking together different computing systems and software applications physically or functionally.&lt;br /&gt;&lt;br /&gt;The system integrator brings together discrete systems utilizing a variety of techniques such as&lt;br /&gt;A. computer networking&lt;br /&gt;B. enterprise application integration&lt;br /&gt;C. business process management&lt;br /&gt;D. Manual programming.&lt;br /&gt;In this document we are covering enterprise application integration.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EAI Concept&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vCpFSN0l6mo/S32GNMpiDrI/AAAAAAAAG68/3mXu2NP78OI/s1600-h/1.bmp"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 310px; height: 320px;" src="http://2.bp.blogspot.com/_vCpFSN0l6mo/S32GNMpiDrI/AAAAAAAAG68/3mXu2NP78OI/s320/1.bmp" alt="" id="BLOGGER_PHOTO_ID_5439651486225272498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enterprise Application Integration is an integration framework composed of a collection of technologies and services which form a middleware to enable integration of systems and applications across the enterprise. Enterprise Application Integration (EAI) is defined as the use of software and computer systems architectural principles to integrate a set of enterprise computer applications. One of the Purposes of EAI is Data (information) Integration, ensuring that information in multiple systems is kept consistent. This is also known as EII (Enterprise Information Integration).&lt;br /&gt;&lt;br /&gt;Enterprise Application Integration is related to middleware technologies such as message-oriented middleware (MOM), and data representation technologies such as XML. Other EAI technologies involve using web services as part of service-oriented architecture as a means of integration. Enterprise Application Integration tends to be data centric. In the near future, it will come to include content integration and business processes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EAI Mediation pattern&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here, the EAI system acts as the go-between or broker between (interface or communicating) multiple applications. Whenever an interesting event occurs in an application (e. g., new information created, new transaction completed, etc.) an integration module in the EAI system is notified. The module then propagates the changes to other relevant applications.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EAI Implementation Pitfalls&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In 2003 it was reported that 70% of all EAI projects fail. Most of these failures are not due to the software itself or technical difficulties, but due to management issues. Integration Consortium European Chairman Steve Craggs has outlined the seven main pitfalls undertaken by companies using EAI systems and explains solutions to these problems.&lt;br /&gt;• Constant change&lt;br /&gt;The very nature of EAI is dynamic and requires dynamic project managers to manage their implementation.&lt;br /&gt;• Shortage of EAI experts&lt;br /&gt;EAI requires knowledge of many issues and technical aspects.&lt;br /&gt;• Competing standards&lt;br /&gt;Within the EAI field, the paradox is that EAI standards themselves are not universal.&lt;br /&gt;• EAI is a tool paradigm&lt;br /&gt;EAI is not a tool, but rather a system and should be implemented as such.&lt;br /&gt;• Building interfaces is an art&lt;br /&gt;Engineering the solution is not sufficient. Solutions need to be negotiated with user departments to reach a common consensus on the final outcome. A lack of consensus on interface designs leads to excessive effort to map between various systems data requirements.&lt;br /&gt;• Loss of detail&lt;br /&gt;Information that seemed unimportant at an earlier stage may become crucial later.&lt;br /&gt;• Accountability&lt;br /&gt;Since so many departments have many conflicting requirements, there should be clear accountability for the system's final structure.&lt;br /&gt;Other potential problems may arise in these areas:&lt;br /&gt;• Emerging Requirements&lt;br /&gt;EAI implementations should be extensible and modular to allow for future changes.&lt;br /&gt;• Protectionism&lt;br /&gt;The applications whose data is being integrated often belong to different departments that have technical, cultural, and political reasons for not wanting to share their data with other departments&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Advantages and Disadvantages&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Advantages:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;o Real time information access among systems&lt;br /&gt;o Streamlines business processes and helps raise organizational efficiency&lt;br /&gt;o Maintains information integrity across multiple systems&lt;br /&gt;o Ease of development and maintenance&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Disadvantages:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;o High initial development costs, especially for small and mid-sized businesses (SMBs)&lt;br /&gt;o Require a fair amount of up front business design, which many managers are not able to envision or not willing to invest in. Most EAI projects usually start off as point-to-point efforts, very soon becoming unmanageable as the number of applications increase&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Middleware as EAI solution&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Middleware is computer software that connects software components or applications. The software consists of a set of services that allows multiple processes running on one or more machines to interact. This technology evolved to provide for interoperability in support of the move to coherent distributed architectures, which are used most often to support and simplify complex, distributed applications. It includes web servers, application servers, and similar tools that support application development and delivery. Middleware is especially essential to modern information technology based on XML, SOAP, Web services, and Service-Oriented Architecture (SOA).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Message-oriented middleware (MOM)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Message-oriented middleware (MOM) is infrastructure focused on sending and receiving messages that increases the interoperability, portability, and flexibility of an application by allowing the application to be distributed over heterogeneous platforms. It reduces the complexity of developing applications that span multiple operating systems and network protocols by insulating the application developer from the details of the various operating system and network interfaces. API's that extend across diverse platforms and networks are typically provided by MOM.&lt;br /&gt;&lt;br /&gt;MOM is software that resides in both portions of client/server architecture and typically supports asynchronous calls between the client and server applications. Message queues provide temporary storage when the destination program is busy or not connected. MOM reduces the involvement of application developers with the complexity of the master-slave nature of the client/server mechanism.&lt;br /&gt;MOM comprises a category of inter-application communication software that generally relies on asynchronous message-passing, as opposed to a request-response metaphor.&lt;br /&gt;Most message-oriented middleware depend on a message queue system, but there are some implementations that rely on broadcast or multicast messaging systems. Below is two different technologies to implement MOM.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Java Message Service (JMS)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Java Message Service (JMS) API is a Java Message Oriented Middleware (MOM) API for sending messages between two or more clients. JMS is a part of the Java Platform, Enterprise Edition. It is a messaging standard that allows application components based on the Java 2 Platform, Enterprise Edition (J2EE) to create, send, receive, and read messages. It enables distributed communication that is loosely coupled, reliable, and asynchronous.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Microsoft Message Queuing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;MSMQ is essentially a messaging protocol that allows applications running on separate servers/processes to communicate in a failsafe manner. A queue is a temporary storage location from which messages can be sent when conditions permit. This enables communication across heterogeneous networks and between computers which may not always be connected. By contrast, sockets and other network protocols assume that direct connections always exist.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sample implemented EAI System&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Following diagram illustrates different pieces of an EAI system implemented in a large scale enterprise application. The purpose of this system is to provide a reliable asynchronous data transformation between existing systems and newly implemented system. EAI Components are as below:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;o Data Base Replication&lt;br /&gt;o Triggers &amp;amp; Stored Procedures&lt;br /&gt;o Messaging Controller&lt;br /&gt;o Messaging DB (XML)&lt;br /&gt;o Messaging Service System which consists of&lt;br /&gt;o Message Producer&lt;br /&gt;o Message Consumer&lt;br /&gt;o Messaging Service Provider&lt;br /&gt;o Message Queue&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vCpFSN0l6mo/S32HMB2mTYI/AAAAAAAAG7E/QmYPewwgtgA/s1600-h/2.bmp"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 239px;" src="http://2.bp.blogspot.com/_vCpFSN0l6mo/S32HMB2mTYI/AAAAAAAAG7E/QmYPewwgtgA/s320/2.bmp" alt="" id="BLOGGER_PHOTO_ID_5439652565659045250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Database Replication&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vCpFSN0l6mo/S33Hc5VKscI/AAAAAAAAG7M/XQZ9KaZzkXU/s1600-h/3.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 135px;" src="http://1.bp.blogspot.com/_vCpFSN0l6mo/S33Hc5VKscI/AAAAAAAAG7M/XQZ9KaZzkXU/s320/3.jpg" alt="" id="BLOGGER_PHOTO_ID_5439723224173294018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Database replication is necessary to avoid lowering the performance of existing system due to overhead resulting from middleware. As the result of this replication, existing systems can operate without any system dependency to middleware which ensures reliable asynchronous messaging service.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Triggers &amp;amp; Stored Procedures&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vCpFSN0l6mo/S33J6ynqWEI/AAAAAAAAG7c/sAg3OvmLRZ0/s1600-h/4.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 155px;" src="http://1.bp.blogspot.com/_vCpFSN0l6mo/S33J6ynqWEI/AAAAAAAAG7c/sAg3OvmLRZ0/s320/4.jpg" alt="" id="BLOGGER_PHOTO_ID_5439725936791148610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When a transaction occurring in the existing system would need to be reflected in the new system then Triggers and Stored Procedures written on Replicated DB come to play. These integration modules are notified as the result of an event in existing system and would create XML messages to be stored in Message DB. E.g., the event of completing the registration of an Employer in Existing System would occur when all necessary information are present in the existing system. This event would cause a trigger on corresponding table on Replicated DB to invoke relevant stored procedure. The Stored Procedure subsequently would collect all required information such as head office address, legal and trade names, etc and format it in XML layout and eventually store in Message DB.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Messaging Service System&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vCpFSN0l6mo/S33KMYIYi7I/AAAAAAAAG7k/QggDtRzhfIA/s1600-h/5.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 316px;" src="http://1.bp.blogspot.com/_vCpFSN0l6mo/S33KMYIYi7I/AAAAAAAAG7k/QggDtRzhfIA/s320/5.jpg" alt="" id="BLOGGER_PHOTO_ID_5439726238918282162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This component could be implemented by either Java Message Service (JMS) or Microsoft Message Queuing solutions to send the XML messages between Existing and New applications. When a new message appears in Messaging DB, Message producer extracts the XML data and send it to Message Queue using Messaging Service Provider through established connection.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Web Services and Interfaces&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vCpFSN0l6mo/S33KbppS2jI/AAAAAAAAG7s/BF7HQTfRI0M/s1600-h/6.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 210px;" src="http://4.bp.blogspot.com/_vCpFSN0l6mo/S33KbppS2jI/AAAAAAAAG7s/BF7HQTfRI0M/s320/6.jpg" alt="" id="BLOGGER_PHOTO_ID_5439726501317761586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After Message Consumer successfully received the XML message, would create relevant SOAP message and calls the web services for further processing. Web services on the other hand would call interfaces to new System to populate relevant tables. Interfaces code basically would be parsing and validating the XML message before populating relevant tables to be used by new application. In case updates to pervious transferred data is required, mapping tables between Excising and New Systems are used to find the relevant data before any update happens.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Message Controller&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vCpFSN0l6mo/S33KpuxybTI/AAAAAAAAG70/uDFzdZ-H-TY/s1600-h/7.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 170px;" src="http://4.bp.blogspot.com/_vCpFSN0l6mo/S33KpuxybTI/AAAAAAAAG70/uDFzdZ-H-TY/s320/7.jpg" alt="" id="BLOGGER_PHOTO_ID_5439726743213731122" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If any error such as XML validation error or DB integrity happened in interfaces, Message Consumer&lt;br /&gt;Would receive the log and flag corresponding message as suspended in Message DB. At that time Messaging Controller would take necessary actions to resolve the issue to restart the message processing for awaiting messages in the queue.&lt;br /&gt;&lt;br /&gt;Shayan Manoochehri&lt;br /&gt;System Integration Architect&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;http://worldofasp.net/aspnet/Tutorials/Basic_Introduction_about_MSMQ_in_.NET_Framework_98.aspx&lt;br /&gt;http://en.wikipedia.org/wiki/Systems_integration&lt;br /&gt;http://en.wikipedia.org/wiki/Enterprise_application_integration&lt;br /&gt;http://en.wikipedia.org/wiki/Middleware&lt;br /&gt;http://en.wikipedia.org/wiki/Message-oriented_middleware&lt;br /&gt;http://en.wikipedia.org/wiki/Java_Message_Service&lt;br /&gt;http://en.wikipedia.org/wiki/Microsoft_Message_Queuing&lt;br /&gt;http://en.wikipedia.org/wiki/Message_queue&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/104964420920877951-9165459007314082032?l=shayan-m.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nDy7qS6Ye47ucOaG0CWPoQg-z_c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nDy7qS6Ye47ucOaG0CWPoQg-z_c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nDy7qS6Ye47ucOaG0CWPoQg-z_c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nDy7qS6Ye47ucOaG0CWPoQg-z_c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ThatsWhyshayansWeblog/~4/6Tfq0IUY6UU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://shayan-m.blogspot.com/feeds/9165459007314082032/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://shayan-m.blogspot.com/2010/02/enterprise-application-integration-by.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/104964420920877951/posts/default/9165459007314082032?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/104964420920877951/posts/default/9165459007314082032?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ThatsWhyshayansWeblog/~3/6Tfq0IUY6UU/enterprise-application-integration-by.html" title="Enterprise Application Integration" /><author><name>Shayan Manoochehri</name><uri>http://www.blogger.com/profile/05594073851088379022</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="21" src="http://1.bp.blogspot.com/_vCpFSN0l6mo/S4NBmjiRwtI/AAAAAAAAG8c/oXNAlTc57EU/S220/me2.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_vCpFSN0l6mo/S32GNMpiDrI/AAAAAAAAG68/3mXu2NP78OI/s72-c/1.bmp" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://shayan-m.blogspot.com/2010/02/enterprise-application-integration-by.html</feedburner:origLink></entry></feed>

