<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2enclosuresfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Advanced Software Development</title><link>http://dsoft-tech.blogspot.com/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/DsoftTechnologiesBlog" /><description>DSOFT provides information and technical solutions in health care, telecommunication and finance domains.
We will be publishing some technical solutions that many Software Engineers faced or will face at one time. 
The solutions are based mostly on EAI, J2EE, .Net and SOA.</description><language>en</language><managingEditor>noreply@blogger.com (Sadi Melbouci)</managingEditor><lastBuildDate>Mon, 06 Feb 2012 10:08:54 PST</lastBuildDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">9</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/">25</openSearch:itemsPerPage><feedburner:info uri="dsofttechnologiesblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><media:copyright>DSOFT SYSTEMS Inc.</media:copyright><media:thumbnail url="http://www.dsoftsystems.com/images/medical-office-appointment-scheduler.png" /><media:keywords>medical,practice,software,medical,management,software,medical,office,software,Office,appointment,scheduler,medical,billing,software,Electronic,medical,records</media:keywords><media:category scheme="http://www.itunes.com/dtds/podcast-1.0.dtd">Business/Management &amp; Marketing</media:category><itunes:owner><itunes:email>sadi@dsofttechnologies.com</itunes:email><itunes:name>DSOFT Systems</itunes:name></itunes:owner><itunes:author>DSOFT Systems</itunes:author><itunes:explicit>no</itunes:explicit><itunes:image href="http://www.dsoftsystems.com/images/medical-office-appointment-scheduler.png" /><itunes:keywords>medical,practice,software,medical,management,software,medical,office,software,Office,appointment,scheduler,medical,billing,software,Electronic,medical,records</itunes:keywords><itunes:subtitle>Medical Office Management Software</itunes:subtitle><itunes:summary>Case Management, Scheduling, Billing, Electronic Health Records, Reporting at your fingerprint. Improve your productivity and increase your cash flow.</itunes:summary><itunes:category text="Business"><itunes:category text="Management &amp; Marketing" /></itunes:category><item><title>Methodology to Deliver Service Oriented Architecture</title><link>http://feedproxy.google.com/~r/DsoftTechnologiesBlog/~3/iyXG0jXeres/methodology-to-deliver-service-oriented.html</link><author>sadi@dsofttechnologies.com (DSOFT Systems)</author><pubDate>Fri, 27 Nov 2009 09:25:27 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-35677346.post-8900788802756364819</guid><description>&lt;span style="font-weight: bold;"&gt;By Sadi Melbouci&lt;br /&gt;
&lt;/span&gt;From&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;
&lt;/span&gt;DSOFT Technologies&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A- Introduction&lt;br /&gt;
&lt;/span&gt;The technology has become an essential basic capabilities to create value proposition that distinguish the business in the marketplace.&amp;nbsp; Enterprises need to be able to bridge between the business and the technical world.&amp;nbsp; IT infrastructure should be aligned with business structure so that it can easily adapt to meet the business needs. One way of achieving this objective is through Service Oriented Architecture, SOA. &lt;br /&gt;
In Order to effectively deliver standardized services, it is recommended that organizations adopt methodology and processes specific to SOA consisting of structured analysis and design. &lt;br /&gt;
This article outlines a methodology to deliver service oriented architecture&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;by applying service orientation principles to shape a solution in certain way with certain goals in mind to produce a blueprint of individually distributed unit.&lt;br /&gt;
&lt;br /&gt;
Let's start with some definitions on SOA.&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;
B- SOA Definitions&lt;br /&gt;
&lt;br /&gt;
- What is Service-Oriented Architecture&lt;/span&gt;&lt;br /&gt;
SOA represents an architectural model that aims to enhance the agility and cost effectiveness of an enterprise while reducing the burden on IT and on the overall organization. It accomplishes this by positioning services as the primary mean by which the solution is represented.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt; - What is a Service&lt;br /&gt;
&lt;/span&gt;A service&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;is unit of solution to which service orientation principle has been applied to a meaningful extent. It is the application of service-orientation principles that distinguishes a unit as a service compared to logic that may exist as an object or component.&lt;br /&gt;
A Service is comprised of  a set of functions and capabilities related to its context.&lt;br /&gt;
Service Inventory is an independent standardized and governed collection of services.&lt;br /&gt;
A collection of inventories create a Domain Inventory.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt; - What are the Characteristics of SOA&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Business Driven&lt;/li&gt;
&lt;li&gt;Vendor Neutral&lt;/li&gt;
&lt;li&gt;Enterprise Centric&lt;/li&gt;
&lt;li&gt;Composition Centric&lt;/li&gt;
&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt; - Goals Of Service-Oriented Architecture&lt;/span&gt;&lt;br /&gt;
stating the common goals and benefits of SOA and these goals must be viewed within strategic context  of the organization.&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Increase Interoperability&lt;/li&gt;
&lt;li&gt;Increased federation&lt;/li&gt;
&lt;li&gt;Increase Vendor Diversification&lt;/li&gt;
&lt;li&gt;Increase Business and technology Domain Alignment&lt;/li&gt;
&lt;li style="color: black;"&gt;Increased ROI&lt;/li&gt;
&lt;li style="color: black;"&gt;Increased Organizational Agility&lt;/li&gt;
&lt;li style="color: black;"&gt;Reduce IT burden&lt;/li&gt;
&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt; - Principles of Service Oriented Design&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Standard Service Contract&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Service Loose Coupling&lt;/li&gt;
&lt;li&gt;Service Abstraction&lt;/li&gt;
&lt;li&gt;Service Re-Usability&lt;/li&gt;
&lt;li&gt;Service Autonomy&lt;/li&gt;
&lt;li&gt;Service Statelessness&lt;/li&gt;
&lt;li&gt;Service Discoverability&lt;/li&gt;
&lt;li&gt;Service Composition&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;C- How to deliver SOA&lt;/span&gt;&lt;br /&gt;
Service Oriented Architecture is an architectural style. One of the methods to deliver SOA is explained in details by Thomas Erl in [1]. we will try to summarize this methodology that is simple and can also be integrated with TOGAF, FEA or any other Enterprise Architecture Framework. &lt;i&gt;However, TOGAF failed to address SOA as an architecture style, some adjustments to TOGAF first four phases are required to deliver SOA.&lt;/i&gt;&lt;br /&gt;
We will explain the delivery of SOA through two main phases:&lt;br /&gt;
- Service Oriented Analysis&lt;br /&gt;
- Service Oriented Design&lt;br /&gt;
&lt;br /&gt;
Before we start on the details of the analysis and design, let's address what approach to use:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;-Delivery Approach&lt;/span&gt;&lt;br /&gt;
There are two delivery approaches, top down and bottom up. When starting&amp;nbsp; SOA within an organization with an objective of business - IT alignment, we recommend Top-Down approach.&lt;br /&gt;
We will list the pros and cons for each method. &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Top- Down&lt;/li&gt;
&lt;/ul&gt;&lt;u&gt;&lt;span style="font-style: italic;"&gt;PROS&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
- Advocates the completion of an inventory analysis prior to the physical design, development, and delivery of services.&lt;br /&gt;
- Define blueprint Service Inventory&lt;br /&gt;
- Reduce the burden of governance&lt;br /&gt;
&lt;u&gt;&lt;span style="font-style: italic;"&gt;CONS&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
- Increase Of cost and Effort&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Bottom Up&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;u&gt;&lt;span style="font-style: italic;"&gt;PROS&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
- Tactically focused in that it makes the fulfilment of immediate business requirements a priority and the prime objective of the project&lt;br /&gt;
&lt;u&gt;&lt;span style="font-style: italic;"&gt;CONS&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;
- Increase Cost of Maintenance, Refactoring and versioning&lt;br /&gt;
- Increase Effort of Governance&lt;br /&gt;
- Shorter life span&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;- Service-Oriented Analysis&lt;/span&gt;&lt;br /&gt;
Service Oriented Analysis represents the early stage in SOA and the first phase in service delivery cycle. It is a process that often begins with information gathering. This is accomplished &lt;span style="font-style: italic; font-weight: bold;"&gt;iteratively&lt;/span&gt; and usually once for each business process.&lt;br /&gt;
This phase is accomplished jointly by business architects and technology architects to guarantee a higher degree of business-IT alignment. Iterations through analysis and modelling result in service candidates.&lt;br /&gt;
These Services are classified into Service Layers:&lt;br /&gt;
&lt;br /&gt;
Service Entity (Product, Customer, Service, Invoice ...)&lt;br /&gt;
Service Task (Order Management, Business processing)&lt;br /&gt;
Service Utility (Non Business Centric, )&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Analysis&lt;/span&gt;&lt;br /&gt;
&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;Perform Service Oriented Analysis  &lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;                    Define Analysis Scope  to establish the boundary of the analysis&lt;/li&gt;
&lt;li&gt;                    Identify Affected Systems&lt;/li&gt;
&lt;li&gt;            &lt;span style="font-style: italic;"&gt;Perform Service Modelling&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;ul style="font-weight: bold; text-align: left;"&gt;&lt;li&gt;Define Enterprise Business Model: &lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;Define the scope&lt;/li&gt;
&lt;li&gt;Accurately express the functions to be implemented&lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Define Technology Architecture&lt;/span&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;            Define initial architecture platform&lt;/li&gt;
&lt;li&gt;            Identify Architecture Constraints&lt;/li&gt;
&lt;li&gt;Refine the architecture for each iteration&lt;br /&gt;
&lt;/li&gt;
&lt;/ol&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;Define Service Inventory BluePrint&lt;/li&gt;
&lt;/ul&gt;&lt;ol&gt;&lt;li&gt;           Identify service inventory boundaries&lt;/li&gt;
&lt;li&gt;           Produce service candidates for this inventory&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
Within this step, the service conceptualization starts. It identifies service capability candidates. This phase also identifies service assembled into composed services. Basically, a business process is decomposed into granular functions and then services are assessed into groups of services that are specific or agnostic to the current business process. Below are the steps to perform this phase. This phase results with final version of capabilities of service candidates.&lt;br /&gt;
&lt;ol&gt;&lt;ol&gt;&lt;li&gt;              Decompose Business Process&lt;/li&gt;
&lt;li&gt;              Filter Unsuitable Steps&lt;/li&gt;
&lt;li&gt;              Identify Agnostic Service Candidates&lt;/li&gt;
&lt;li&gt;              Identify Process Specific Logic&lt;/li&gt;
&lt;li&gt;              Apply Service Orientation Principles&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;              Identify Candidate for Service Composition&lt;/li&gt;
&lt;li&gt;              Analyze Processing Requirements&lt;/li&gt;
&lt;li&gt;              Identify Utility Service Capability Candidates&lt;/li&gt;
&lt;li&gt;              Define Utility Service Candidates&lt;/li&gt;
&lt;li&gt;              Apply Service Orientation&lt;/li&gt;
&lt;li&gt;              Revise Candidate Service Composition&lt;/li&gt;
&lt;li&gt;              Revise Capability Candidate Grouping&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;After applying the above steps, the service capability candidates will results in the following groupings.&lt;br /&gt;
&lt;ol&gt;&lt;li style="font-style: italic;"&gt;           Entity Services&lt;/li&gt;
&lt;li style="font-style: italic;"&gt;           Utility Services&lt;/li&gt;
&lt;li style="font-style: italic;"&gt;           Task Services&lt;/li&gt;
&lt;li style="font-style: italic;"&gt;           Orchestrated Task Services&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Service Oriented Design&lt;/span&gt;&lt;br /&gt;
All the work put into the analysis phase resulted in set of service candidates that the design phase will take as input. Every service candidate is considered as starting point for service oriented design.  It is recommended that  the sequence of the design goes from the most independent service to the least independent:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Design Entity Services&lt;/li&gt;
&lt;li&gt;Design Utility Services&lt;/li&gt;
&lt;li&gt;Design Task Services&lt;/li&gt;
&lt;li&gt;Design Orchestrated Services&lt;/li&gt;
&lt;/ul&gt;During this phase, many considerations are taken into consideration to output a service contract in support to standards, principles and constraints. It is important to remember that a single service can provide a collection of capabilities. They are grouped together because they relate to a functional context established by the service.&lt;br /&gt;
When building the services as Web Services, this will require a definition of an XML schema to support the data type and structures to be exchanged. A WSDL is then built around the XML schema adjusted by the application of SOA principles and design patterns.&lt;br /&gt;
For Orchestrated services, it involves a composition of services and outputs WS-PBEL process definition.&lt;br /&gt;
Service-orientation places an unprecedented emphasis on reuse.  I would like to quote &lt;a href="http://www.amazon.com/Principles-Service-Prentice-Service-Oriented-Computing/dp/0132344823"&gt;Thomas Erl [1]&lt;/a&gt;  book "&lt;span style="font-style: italic;"&gt;By establishing a service inventory with a high percentage of reusable and agnostic services, we are now positioning those services as the primary means by which the solution logic they represent can and should be accessed. we make a very deliberate move away from the silos in which applications previously existed. Because we want to share reusable logic whenever possible, we automate existing, new, and augmented business processes through service composition. This results in a shift where more and more business requirements are fulfilled not by building or extending applications, but by simply composing existing services into new composition configurations&lt;/span&gt;. When compositions become more common, the traditional concept of an application or a system or a solution actually begins to fade, along with the silos that contain them".&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;- Design Challenges&lt;/span&gt;&lt;br /&gt;
Significant amount of services within the inventory can ultimately be comprised of agnostic services capable of fulfilling requirements for multiple potential service consumers.  Although this can establish a highly normalized and streamlined architecture, it can also introduce an increased level of complexity for both the architecture as well as individual service designs. We will list few challenges that the design shall address and there are many other things that should be addressed but we will not address them in this article.&lt;br /&gt;
- Performance requirements &amp;amp; scalability&lt;br /&gt;
- Single point of failure resulting from excessive use of a service&lt;br /&gt;
- Service Contract Versioning&lt;br /&gt;
- Authentication&lt;br /&gt;
- How can service logic be positioned as enterprise resource&lt;br /&gt;
- Service Normalization / denormalization&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;It is important&amp;nbsp; to position SOA as an architecture model that is Vendor neutral or even Technology neutral. By doing, we position the enterprise to pursue and leverage on-going technology advancements. Many&amp;nbsp; &lt;a href="http://www.soapatterns.com/"&gt;SOA design patterns&lt;/a&gt; help address these common issues and for each SOA design principle there are set of patterns that can be applied to successfully achieve the objectives of each principle.&lt;br /&gt;
In the beginning of this article we listed&amp;nbsp; a list of &lt;b&gt;Service Orientation Principles&lt;/b&gt;, that should be applied to a business capability to shape it as &lt;b&gt;Service&lt;/b&gt;. For each of these principles, we will apply a set of SOA design patterns to satisfy it.&lt;br /&gt;
We will list a set of design patterns that can be applied to satisfy each principle and produce individual logic units that can be qualified as services. The design pattern are shown in &lt;i&gt;ITALIC&lt;/i&gt;. There are off course more design patterns and each project is different, I will list the design patterns we applied in our project at &lt;a href="http://www.dsoftsystems.com/"&gt;DSOFT SYSTEMS&lt;/a&gt;.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Standard Service Contract:&lt;/b&gt; Services within the same inventory are in compliance with the same contract design standards. The following design patterns needs to be applied to get a Standard Service Contract: &lt;i&gt;Canonical Protocol, Canonical Schema, Canonical Versioning, Concurrent Contract, Contract Centralization, Contract Normalization, Contract De normalization, Composition Autonomy, Agnostic capability, Proxy Capability&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Service Loose Coupling&lt;/b&gt;: Service Contract requires a low consumer coupling and themselves decoupled from their surrounding environment. The following dessign pattern help achieve this objective: &lt;i&gt;Asynchronous queuing, Decoupled Contract, Data Format Transformation, Event Driven Messaging, Service Facade, Proxy Capability&lt;br /&gt;
&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Service Abstraction&lt;/b&gt;: Information about service is published in the contract. The contract only contains essential information about the service. Utility Abstraction, Service Perimeter Guard, Service Refactoring,&amp;nbsp; Validation Abstraction.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Service Re-Usability:&lt;/b&gt; Services contain agnostic logic and are positioned to be re-usable enterprise resources. These design patterns help achieve this requirement: &lt;i&gt;Agnostic Capability and context, Capability Composition, Consurrent Contract, Logic and Rules Centralization,&amp;nbsp; Service Layers. &lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Service Autonomy&lt;/b&gt;: Services shall run in their own environment and exercise a control over the underlying runtime execution environment. Canonical Resource, &lt;i&gt;Distributed Capability, Service Normalization, Capability Recomposition&lt;/i&gt;.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Service Statelessness&lt;/b&gt;: Services shall optimize resource consumption by deferring the management of state information.&amp;nbsp; &lt;i&gt;Asynchronous queuing,&amp;nbsp; Atomic Service Transaction,Service Grid, Service Instance Routing. &lt;br /&gt;
&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Service Discoverability&lt;/b&gt;: Services comes with metadata by which they are be discovered and interpreted. &lt;i&gt;Canonical Expression&lt;/i&gt;, &lt;i&gt;Metadata Centralization.&lt;/i&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Service Composition&lt;/b&gt;: Service composed of sequence of other service to form a new service. The following design patterns help to guide how to achieve this objective. &lt;i&gt;Decomposed capability, Agnostic capability, Brokered Authentication, Capability Composition, Data Confidentiality, Dual Protocol, Reliable Messaging. &lt;br /&gt;
&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Standardization&lt;/span&gt;&lt;br /&gt;
It can be a straight-forward process to create these standards to support SOA, incorporating them into an IT culture already set in its ways can be demanding to say the least. The introduction of design standards implies a need to enforce them, &lt;a href="http://dsoft-tech.blogspot.com/2009/05/soa-governance-and-its-challenges.html"&gt;SOA governance and its challenges&lt;/a&gt; addresses how governance of SOA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;How to choose the Technology&lt;/b&gt;&lt;br /&gt;
As we apply these design patterns to achieve SOA goals expressed in the beginning of this article, we started with a list of technologies that included weblogic/Aqualogic, Mule, Spring, JBoss Enterprises Suite ...etc. We proceeded by elimination and narrowed the choice of tools and technologies to a small set that can help us achieve our objective in optimized and timely manner. For instance, for service composition, there are many vendors offering what we wanted at different costs and we narrowed it to two: Mule ESB and JBOSS ESB. We did choose JBoss ESB because it is well integrated with JBPM and JBoss rules to implement the rules centralization and achieve a higher level of orchestration.&lt;br /&gt;
In conlusion, I would like to insist that the choice of technology should be based on the goals that must be achieved and dictated by the business which are:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Increase Interoperability&lt;/li&gt;
&lt;li&gt;Increased federation&lt;/li&gt;
&lt;li&gt;Increase Vendor Diversification&lt;/li&gt;
&lt;li&gt;Increase Business and technology Domain Alignment&lt;/li&gt;
&lt;li style="color: black;"&gt;Increased ROI&lt;/li&gt;
&lt;li style="color: black;"&gt;Increased Organizational Agility&lt;/li&gt;
&lt;li style="color: black;"&gt;Reduce IT burden&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;References:&lt;/span&gt;&lt;br /&gt;
[1] &lt;a href="http://www.amazon.com/Principles-Service-Prentice-Service-Oriented-Computing/dp/0132344823"&gt;Thomas Erl, SOA Principles of Service Design&lt;/a&gt;,&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35677346-8900788802756364819?l=dsoft-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DsoftTechnologiesBlog/~4/iyXG0jXeres" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-27T10:25:27.703-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://dsoft-tech.blogspot.com/2009/11/methodology-to-deliver-service-oriented.html</feedburner:origLink></item><item><title>SOA Governance and its challenges</title><link>http://feedproxy.google.com/~r/DsoftTechnologiesBlog/~3/oamV09SUS0A/soa-governance-and-its-challenges.html</link><category>SOA governance</category><category>SOA</category><category>service orientation</category><author>sadi@dsofttechnologies.com (DSOFT Systems)</author><pubDate>Sat, 14 Nov 2009 09:34:51 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-35677346.post-6535069048193850684</guid><description>&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;By &lt;span id="SPELLING_ERROR_0"&gt;Sadi&lt;/span&gt; R &lt;span id="SPELLING_ERROR_1"&gt;Melbouci&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style="font-size: 85%; font-style: italic;"&gt;From &lt;span id="SPELLING_ERROR_2"&gt;DSOFT&lt;/span&gt; Technologies&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;
&lt;br /&gt;
Introduction&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;Service Oriented Architecture enables enterprises to pursue business and technical strategies that promote the exposure of business functionality within and between enterprises in consistent, published, secure and contractual fashion.&lt;br /&gt;
However, Service Oriented Architecture is not a solution that comes in tidy box. It is more about new way of design, it is more about culture then it is about technology.&lt;br /&gt;
To ensure success of any SOA implementation, it is necessary to include some type of governance that define the policies and practices all services should follow.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Why some &lt;span id="SPELLING_ERROR_3"&gt;SOA&lt;/span&gt; implementations failed?&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span id="SPELLING_ERROR_4"&gt;SOA&lt;/span&gt; Governance is probably  the most talked and most delicate topics in &lt;span id="SPELLING_ERROR_5"&gt;SOA&lt;/span&gt; nowadays. About 5 to 6 years ago, many organizations approached &lt;span id="SPELLING_ERROR_6"&gt;SOA&lt;/span&gt; as implementing a web service. There was no attention to &lt;span id="SPELLING_ERROR_7"&gt;SOA&lt;/span&gt; Governance. This may be explained differently, but the situation reminds me of a practice of some IT managers – just get it to work and take a look at the design later. As we all know, any temporal fix becomes a permanent solution with  consequences dealt with later at higher cost.&lt;br /&gt;
In one of the my consulting jobs, the organization thought that &lt;span id="SPELLING_ERROR_8"&gt;SOA&lt;/span&gt; was a new integration technology that will &lt;span style="font-style: italic;"&gt;magically&lt;/span&gt; integrate all their existing assets. One of the managers asked me to start looking at the code to perform this funny integration. When I told him what &lt;span id="SPELLING_ERROR_9"&gt;SOA&lt;/span&gt; meant, he got a chock of his life. Without going into details, many organizations built hundreds of services/components and run into scalability, performance, manageability and integration problems.&lt;br /&gt;
One of the main reasons of this type of difficulties is that service-oriented, design, implementation was not governed at all or governed with traditional software development without any clues on service orientation [1] methodologies.&lt;br /&gt;
In this article, we will present &lt;span id="SPELLING_ERROR_10"&gt;SOA&lt;/span&gt; and its Governance policies to address these problems.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;What is &lt;span id="SPELLING_ERROR_11"&gt;SOA&lt;/span&gt;?&lt;/span&gt;&lt;br /&gt;
Multiple definitions of &lt;span id="SPELLING_ERROR_12"&gt;SOA&lt;/span&gt; were presented in the &lt;span id="SPELLING_ERROR_13"&gt;literature&lt;/span&gt;, I will summarize some of them in here. &lt;span id="SPELLING_ERROR_14"&gt;SOA&lt;/span&gt; is architectural style who's goal is to achieve re-usability and loosely coupling paradigm among interacting agents. Within &lt;span id="SPELLING_ERROR_15"&gt;SOA&lt;/span&gt;,  services are mechanisms by which needs and capabilities are brought together.&lt;br /&gt;
&lt;span id="SPELLING_ERROR_16"&gt;SOA&lt;/span&gt; operates in an integrated business-technical &lt;span style="font-weight: bold;"&gt;context&lt;/span&gt; as opposed to traditional business-IT separation.&lt;br /&gt;
Anne Thomas Manes from Burton Group said, “&lt;i&gt;&lt;span id="SPELLING_ERROR_17"&gt;SOA&lt;/span&gt; is a style of systems architecture, not integration architecture. It’s about refactoring capabilities into services, not about integrating application silos&lt;/i&gt;”.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;What is &lt;span id="SPELLING_ERROR_18"&gt;SOA&lt;/span&gt; Governance&lt;/span&gt;?&lt;br /&gt;
Governance is set of rules, policies and regulations under which an organization functions as well as the processes that ensure compliance. &lt;span id="SPELLING_ERROR_19"&gt;SOA&lt;/span&gt; governance refers to processes that ensures that services and applications are developed so that they are aligned with :&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Best practices&lt;/li&gt;
&lt;li&gt;Business requirements&lt;/li&gt;
&lt;li&gt;Laws&lt;/li&gt;
&lt;li&gt;&lt;span id="SPELLING_ERROR_20"&gt;SLAs&lt;/span&gt;&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;span id="SPELLING_ERROR_21"&gt;SOA&lt;/span&gt; Governance has two main component:&lt;br /&gt;
&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Design Time Governance&lt;/span&gt; also called "&lt;span id="SPELLING_ERROR_22"&gt;SOA&lt;/span&gt; governance framework", captures information about the services and policies.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style="font-weight: bold;"&gt;&lt;span id="SPELLING_ERROR_23"&gt;Runtime&lt;/span&gt; Governance&lt;/span&gt; or sometimes called as "Service life cycle management", enforces the policies during the execution, management and service discovery.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;The need for enterprise governance is business oriented to integrate business initiatives (supply chain, order management,...) with IT initiatives (&lt;span id="SPELLING_ERROR_24"&gt;EAI&lt;/span&gt;, Web service, ...). The companies needs to move from "develop now and integrate later" to "develop for integration". To ensure business continuity, reduce cost and complexity and limit corporate liability, the companies shall  define the policies and procedures early in project life cycle to allow:&lt;br /&gt;
&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Prevention of service proliferation and promote reuse&lt;/li&gt;
&lt;li&gt;Define Services with the right granularity&lt;/li&gt;
&lt;li&gt;Utilize a formal service description model with appropriate &lt;span id="SPELLING_ERROR_25"&gt;metadata&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Develop and implement best practices for interoperability&lt;/li&gt;
&lt;li&gt;Approach &lt;span id="SPELLING_ERROR_26"&gt;SOA&lt;/span&gt; on how it will be deployed and consumed&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Manage and monitor service health, performance and Quality of service&lt;/li&gt;
&lt;li&gt;Audit and measure compliance&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Define and manage Policies and contracts centrally&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Central registry-repository to describe all services and associated &lt;span id="SPELLING_ERROR_27"&gt;metadata&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Service mediation and discovery&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Design Time Governance&lt;/span&gt; (Governance Framework)&lt;br /&gt;
There are mainly four phases to &lt;span id="SPELLING_ERROR_28"&gt;SOA&lt;/span&gt; governance framework: Plan, define, Enable and Measure.&lt;br /&gt;
&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Plan Phase,&lt;span style="font-size: 100%;"&gt; &lt;/span&gt;&lt;span style="font-size: 100%;"&gt;the overall  business and IT requirements are understood and documented&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: 100%;"&gt;Define Phase, &lt;/span&gt;&lt;span style="font-size: 100%;"&gt;the &lt;span id="SPELLING_ERROR_29"&gt;SOA&lt;/span&gt;  governance approach is established based on corporate, enterprise  and IT governance environments&lt;/span&gt;    &lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: 100%;"&gt;Deploy Phase, &lt;/span&gt;&lt;span style="font-size: 100%;"&gt;governance  mechanisms are put into place, the organization is educated, and  governance policies are deployed.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="font-size: 100%;"&gt;Measure Phase, &lt;/span&gt;&lt;span style="font-size: 100%;"&gt;policy compliance and effectiveness are  monitored and audited.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;div style="text-align: justify;"&gt;&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;&lt;span id="SPELLING_ERROR_30"&gt;Runtime&lt;/span&gt; Governance Compliance&lt;/span&gt; (Service Lifecyle management)&lt;br /&gt;
The &lt;span id="SPELLING_ERROR_31"&gt;runtime&lt;/span&gt; governance encapsulate the phases to model, assemble and deploy.  These 3 phases are broken into two separate facets:&lt;br /&gt;
&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Service Development and Delivery Management&lt;/li&gt;
&lt;li&gt;Support Infrastructure and Management&lt;/li&gt;
&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;Service Development and Delivery Management&lt;/span&gt;&lt;br /&gt;
Service Development and Delivery addresses the essential needs to govern the services development through the established governance framework. The areas of focus are mostly:&lt;br /&gt;
&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Change and release management - What, When and by whom a service can be changed&lt;/li&gt;
&lt;li&gt;Requirements and Quality Management - Ensure services are developed in &lt;span id="SPELLING_ERROR_32"&gt;compliances&lt;/span&gt; with business requirements and compliance.&lt;/li&gt;
&lt;li&gt;Design and Construction - Ensure the best practices and design principles are &lt;span id="SPELLING_ERROR_33"&gt;appied&lt;/span&gt; for maximum.&lt;/li&gt;
&lt;li&gt;Asset reuse.&lt;/li&gt;
&lt;li&gt;Service &lt;span id="SPELLING_ERROR_34"&gt;Versioning&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Service Retirement&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Process Management - Continual auditing to make sure that the process is followed &lt;/li&gt;
&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;Support Infrastructure and Management&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-style: italic; font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-style: italic; font-weight: bold;"&gt;Environment&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Distributed, cross-boundary services and access present security risks&lt;/li&gt;
&lt;li&gt;Rapid deployment and loose coupling of services&lt;/li&gt;
&lt;li&gt;Performance and prioritization of services &lt;/li&gt;
&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Service Security&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Need to manage identities and access control cross multiple platform, applications, business partners and entities&lt;/li&gt;
&lt;li&gt;Need for E2E security architecture that can be deployed and integrated with existing and disparate security models&lt;/li&gt;
&lt;li&gt;Need to define encryption policies&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;Need to consistently enforce security policies&lt;/li&gt;
&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Service Management&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Federate identity and access control&lt;/li&gt;
&lt;li&gt;Secure services and applications&lt;/li&gt;
&lt;li&gt;Consistently enforce security policy &lt;/li&gt;
&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Service &lt;span id="SPELLING_ERROR_35"&gt;Virtualization&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Support scaling infrastructure resources&lt;/li&gt;
&lt;li&gt;Prioritize infrastructure across multiple services and/or business processes (composite/dynamic applications)&lt;/li&gt;
&lt;li&gt;Accelerate application performance by distributing the composites across multiple infrastructure resources.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;Service Registry and Repository&lt;/span&gt;&lt;br /&gt;
Service Registry contains the policies, description and &lt;span id="SPELLING_ERROR_36"&gt;metadata&lt;/span&gt; for each service present in the enterprise. It provides a mechanism to find services and their &lt;span id="SPELLING_ERROR_37"&gt;metadata&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;
&lt;span id="SPELLING_ERROR_38"&gt;SOA&lt;/span&gt; governance requires policy control and audit framework that spans the security, service definition, identity domain, service consumption and people. A &lt;span id="SPELLING_ERROR_39"&gt;SOA&lt;/span&gt; governance framework requires some means to consistently define some policy and managing it through its &lt;span id="SPELLING_ERROR_40"&gt;lifecycle&lt;/span&gt; and provisioning from central accessible policy registry and enforcing its execution across distributed systems.&lt;br /&gt;
Enterprises will only benefit and further improve their competitive advantage and quality of service by utilizing an automated policy governance. By doing so, the organizations will be able to leverage both their IT assets and human capital.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-weight: bold;"&gt;References:&lt;/span&gt;&lt;br /&gt;
[1] &lt;span id="SPELLING_ERROR_41"&gt;SOA&lt;/span&gt; Design Patterns, Thomas Erl, 2009&lt;br /&gt;
[2] &lt;a href="http://docs.oasis-open.org/soa-rm/soa-ra/v1.0/soa-ra-pr-01.pdf"&gt;&lt;span id="SPELLING_ERROR_42"&gt;SOA&lt;/span&gt;-RA public Review &lt;/a&gt;&lt;br /&gt;
[3] &lt;a href="http://www.oasis-open.org/committees/download.php/19679/soa-rm-cs.pdf"&gt;Reference Model Service Oriented Architecture &lt;/a&gt;&lt;br /&gt;
[4] &lt;a href="http://soa.sys-con.com/node/219016"&gt;Does web service make a service for &lt;span id="SPELLING_ERROR_43"&gt;SOA&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35677346-6535069048193850684?l=dsoft-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DsoftTechnologiesBlog/~4/oamV09SUS0A" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-14T10:34:51.946-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><enclosure url="http://docs.oasis-open.org/soa-rm/soa-ra/v1.0/soa-ra-pr-01.pdf" length="1703396" type="application/pdf" /><media:content url="http://docs.oasis-open.org/soa-rm/soa-ra/v1.0/soa-ra-pr-01.pdf" fileSize="1703396" type="application/pdf" /><itunes:explicit>no</itunes:explicit><itunes:subtitle>By Sadi R Melbouci From DSOFT Technologies Introduction Service Oriented Architecture enables enterprises to pursue business and technical strategies that promote the exposure of business functionality within and between enterprises in consistent, publish</itunes:subtitle><itunes:author>DSOFT Systems</itunes:author><itunes:summary>By Sadi R Melbouci From DSOFT Technologies Introduction Service Oriented Architecture enables enterprises to pursue business and technical strategies that promote the exposure of business functionality within and between enterprises in consistent, published, secure and contractual fashion. However, Service Oriented Architecture is not a solution that comes in tidy box. It is more about new way of design, it is more about culture then it is about technology. To ensure success of any SOA implementation, it is necessary to include some type of governance that define the policies and practices all services should follow. Why some SOA implementations failed? SOA Governance is probably the most talked and most delicate topics in SOA nowadays. About 5 to 6 years ago, many organizations approached SOA as implementing a web service. There was no attention to SOA Governance. This may be explained differently, but the situation reminds me of a practice of some IT managers – just get it to work and take a look at the design later. As we all know, any temporal fix becomes a permanent solution with consequences dealt with later at higher cost. In one of the my consulting jobs, the organization thought that SOA was a new integration technology that will magically integrate all their existing assets. One of the managers asked me to start looking at the code to perform this funny integration. When I told him what SOA meant, he got a chock of his life. Without going into details, many organizations built hundreds of services/components and run into scalability, performance, manageability and integration problems. One of the main reasons of this type of difficulties is that service-oriented, design, implementation was not governed at all or governed with traditional software development without any clues on service orientation [1] methodologies. In this article, we will present SOA and its Governance policies to address these problems. What is SOA? Multiple definitions of SOA were presented in the literature, I will summarize some of them in here. SOA is architectural style who's goal is to achieve re-usability and loosely coupling paradigm among interacting agents. Within SOA, services are mechanisms by which needs and capabilities are brought together. SOA operates in an integrated business-technical context as opposed to traditional business-IT separation. Anne Thomas Manes from Burton Group said, “SOA is a style of systems architecture, not integration architecture. It’s about refactoring capabilities into services, not about integrating application silos”. What is SOA Governance? Governance is set of rules, policies and regulations under which an organization functions as well as the processes that ensure compliance. SOA governance refers to processes that ensures that services and applications are developed so that they are aligned with : Best practices Business requirements Laws SLAs SOA Governance has two main component: Design Time Governance also called "SOA governance framework", captures information about the services and policies. Runtime Governance or sometimes called as "Service life cycle management", enforces the policies during the execution, management and service discovery. The need for enterprise governance is business oriented to integrate business initiatives (supply chain, order management,...) with IT initiatives (EAI, Web service, ...). The companies needs to move from "develop now and integrate later" to "develop for integration". To ensure business continuity, reduce cost and complexity and limit corporate liability, the companies shall define the policies and procedures early in project life cycle to allow: Prevention of service proliferation and promote reuse Define Services with the right granularity Utilize a formal service description model with appropriate metadata Develop and implement best practices for interoperability Approach SOA on how it will be deployed and consumed Manage and monitor service health, per</itunes:summary><itunes:keywords>medical,practice,software,medical,management,software,medical,office,software,Office,appointment,scheduler,medical,billing,software,Electronic,medical,records</itunes:keywords><feedburner:origLink>http://dsoft-tech.blogspot.com/2009/05/soa-governance-and-its-challenges.html</feedburner:origLink></item><item><title>Page Rank 4 in 60 days</title><link>http://feedproxy.google.com/~r/DsoftTechnologiesBlog/~3/Lqilt4Ph50s/page-rank-4-in-60-days.html</link><category>Medical Practice Software</category><category>Site Rank 4</category><author>sadi@dsofttechnologies.com (DSOFT Systems)</author><pubDate>Sun, 04 Jan 2009 00:07:53 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-35677346.post-2764408994410590136</guid><description>&lt;div&gt;How to accomplish google page rank 4 in 60 days?&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;By Sadi Melbouci&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;At the end of this year - 2008, I got a nice christmas surprise. My site went from google rank 0 "zero" to 4 in 60 days.&lt;div&gt;My web site, &lt;a href="http://www.dsoftsystems.com/"&gt;Practice Management Software,&lt;/a&gt; was first crawled sometime in the end of October. I decided to increase the rank of my site and traffic with a minimum budget. I laid out a plan and below, I will discuss the tasks that I executed in the sequence that they appear.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Page Header Elements&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Designed the pages to be SEO friendly with modern web page build design. Paid attention to the following:&lt;/div&gt;&lt;div&gt;- &lt;span style="font-style: italic;"&gt;Page title&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;The name of web page has the name of  the title&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- &lt;span style="font-style: italic;"&gt;Page header&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;The title  has the first H1 header in the page&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- &lt;span style="font-style: italic;"&gt;Meta descriptio&lt;/span&gt;n&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;The page description has the title in it as the first sentence.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- &lt;span style="font-style: italic;"&gt;Meta tag keyword&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;3 to 4 keywords per page.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Page Design&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- &lt;span style="font-style: italic;"&gt;Usage of CSS&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;font-family:georgia;" &gt; &lt;/span&gt;&lt;span style="font-family:georgia;"&gt;Tak&lt;/span&gt;&lt;span style=";font-family:georgia;font-size:medium;" class="Apple-style-span"  &gt;e advant&lt;/span&gt;&lt;span style="font-family:georgia;"&gt;age of modern web page design. &lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 24px;font-family:helvetica;" &gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Styles should be defined in a CSS document that references the elements, IDs, and classes in the XHTML document.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-&lt;span style="font-style: italic;"&gt; Page size&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Google only crawls the first 100k. Kept the page to less then 50k&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-&lt;span style="font-style: italic;"&gt; Eliminate Obsolete or deprecated HTML&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;Use modern design techniques and used proper combination of XHTML and CSS&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Link popularity&lt;/span&gt;&lt;/div&gt;&lt;div&gt;- Submitted the site to the major search engines including Yahoo, Google, Altavista,  ...etc&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Submitted the site to web directories: Yahoo, DMOZ, Allweb, BOTW ...etc, submitted the site to the correct caegories. This will provide one way link to your site.&lt;/div&gt;&lt;div&gt;- Started a blog and wrote articles on the subject related to my site.&lt;/div&gt;&lt;div&gt;- I commented on other blogs related to my site&lt;/div&gt;&lt;div&gt;- Added an RSS feed to my site&lt;/div&gt;&lt;div&gt;- Made the keywords as the anchors&lt;/div&gt;&lt;div&gt;- Finally, I have exchanged links with other sites on the same subject domain as my site.  Making sure that the anchor in the link  is one of my keywords.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Keyword Density &lt;/span&gt;&lt;/div&gt;&lt;div&gt;- I focused on 3 to 4 keywords per page that were defined in the keyword meta data header element.&lt;/div&gt;&lt;div&gt;- I wrote the text in the body for the potential customers describing my product without repeating too much the same keywords and used bold where needed.&lt;/div&gt;&lt;div&gt;- Put one keyword in alt image attribute and title&lt;/div&gt;&lt;div&gt;- Put one keyword in name and title of the link attribute&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Advertising&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have noticed that some of the ads from Google and Yahoo advertised as content (This type of ad appear on some articles related to subject described in the ad). When these sites get crawled, The search engine counted it as one way link. &lt;/div&gt;&lt;div&gt;I guess this might be a temporal link but counts to increase both the organic and advertised traffic.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's all. It worked like charm.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.dsoftsystems.com/"&gt;Medical Practice Software&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.dsoftsystems.com/pages/download.seam"&gt;Download Medical Practice Software&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35677346-2764408994410590136?l=dsoft-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DsoftTechnologiesBlog/~4/Lqilt4Ph50s" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-04T01:07:53.321-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://dsoft-tech.blogspot.com/2009/01/page-rank-4-in-60-days.html</feedburner:origLink></item><item><title>HIPAA Compliance</title><link>http://feedproxy.google.com/~r/DsoftTechnologiesBlog/~3/EGigh3m6E-U/hipaa-compliance.html</link><category>Medical practice management</category><author>sadi@dsofttechnologies.com (DSOFT Systems)</author><pubDate>Wed, 14 Jan 2009 22:28:21 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-35677346.post-3157067667023109779</guid><description>&lt;span style="font-family:arial;"&gt;In this article, I will address HIPAA as it relates to the software and tools used by clinicians to manage their practice. The congress has put a set of rules under the HIPAA law, we will explain what's this law is about and how it applies to medical software. &lt;/span&gt;  &lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What is HIPAA?&lt;/span&gt; &lt;p  style="font-family:arial;"&gt;The Administrative Simplification provisions of the Health Insurance Portability and Accountability Act of 1996 (HIPAA, Title II) required the Department of Health and Human Services (HHS) to establish national standards for electronic health care transactions and national identifiers for providers, health plans, and employers.&lt;span style="font-weight: bold;"&gt; It also addressed the security and privacy of health data&lt;/span&gt;. As the industry adopts these standards for the efficiency and effectiveness of the nation's health care system&lt;span style="font-weight: bold;"&gt; will improve the use of electronic data interchange. &lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: arial;"&gt;The Entities covered by HIPAA law are:&lt;br /&gt;&lt;/p&gt;           &lt;ul  style="font-family:arial;"&gt;&lt;li&gt;             &lt;p class="MsoBodyText" style="text-indent: -0.2in; margin-left: 0.4in;"&gt;             &lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: normal; color: rgb(0, 0, 0);"&gt;             Health Plans&lt;/span&gt;&lt;/span&gt;             &lt;/p&gt;&lt;/li&gt;&lt;li&gt;             &lt;p class="MsoBodyText" style="text-indent: -0.2in; margin-left: 0.4in;"&gt;             &lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: normal; color: rgb(0, 0, 0);"&gt;             Health Care Providers who use certain              electronic transactions&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p class="MsoBodyText" style="text-indent: -0.2in; margin-left: 0.4in;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: normal; color: rgb(0, 0, 0);"&gt;Health Care Clearinghouses &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:arial;"&gt;The HIPAA provisions are summarized as:&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;ul  style="font-family:arial;"&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Transaction Standards and Code Sets&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Privacy&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Security&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;National Standard Identifiers for the Provider, Employer, Health Plan and Individual&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;HIPAA in Practical terms&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;Administrative            Simplification is a method of making medical practice (the billing,            claims, computer systems and communication) uniform in order for providers and payers to             interact with each other through each other's proprietary systems.             The changes will affect such activities as:&lt;/span&gt;&lt;blockquote  style="font-family:arial;"&gt;           &lt;ul&gt;&lt;li&gt;             &lt;p class="MsoNormal" style="text-indent: -0.2in; margin-left: 0.4in;"&gt;             &lt;span style="font-size:100%;"&gt;Enrolling an individual in a health plan&lt;/span&gt;             &lt;/p&gt;&lt;/li&gt;&lt;li&gt;             &lt;p class="MsoNormal" style="text-indent: -0.2in; margin-left: 0.4in;"&gt;             &lt;span style="font-size:100%;"&gt;Paying health insurance premiums&lt;/span&gt;             &lt;/p&gt;&lt;/li&gt;&lt;li&gt;             &lt;p class="MsoNormal" style="text-indent: -0.2in; margin-left: 0.4in;"&gt;             &lt;span style="font-size:100%;"&gt;Checking eligibility&lt;/span&gt;             &lt;/p&gt;&lt;/li&gt;&lt;li&gt;             &lt;p class="MsoNormal" style="text-indent: -0.2in; margin-left: 0.4in;"&gt;             &lt;span style="font-size:100%;"&gt;Obtaining authorization to refer a              patient to a specialist&lt;/span&gt;             &lt;/p&gt;&lt;/li&gt;&lt;li&gt;             &lt;p class="MsoNormal" style="text-indent: -0.2in; margin-left: 0.4in;"&gt;             &lt;span style="font-size:100%;"&gt;Processing claims&lt;/span&gt;             &lt;/p&gt;&lt;/li&gt;&lt;li&gt;             &lt;p class="MsoNormal" style="text-indent: -0.2in; margin-left: 0.4in;"&gt;             &lt;span style="font-size:100%;"&gt;Notifying a provider about the payment              of a claim&lt;/span&gt;           &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;         &lt;/blockquote&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;HIPAA Privacy Right and Security&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;HIPAA contains a provision that is related to Electronic Data Transactions to standardize the exchange of the data between trading partners&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;.&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;These            transactions are mandated to be in the ANSI ASC X12 version 4010            format.&lt;br /&gt;In Addition to the transactions, Software industry has introduced Electronic Medical Records. To guarantee the privacy rights and secure the access to the medical records, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;HIPAA&lt;/span&gt;&lt;span style="font-family:arial;"&gt; provided guidlines to protect the patient's privacy.&lt;/span&gt;&lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;&lt;br /&gt;Privacy rights&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;The HIPAA regulations            establish standards for protecting individually identifiable health            information and for guaranteeing the rights of individuals to have            more control over such information. Here is the summary of these regulations:&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;1- Right to ask and see a copy of your records&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;2- Have Correction made to you records&lt;/span&gt; &lt;span style="font-family:arial;"&gt;&lt;br /&gt;3- Receive a notice that your information will be shared&lt;/span&gt; &lt;span style="font-family:arial;"&gt;&lt;br /&gt;4- Decide whether to accept that your information can be shared&lt;/span&gt; &lt;span style="font-family:arial;"&gt;&lt;br /&gt;5- Get a report of when and why your record is shared&lt;/span&gt; &lt;span style="font-family:arial;"&gt;&lt;br /&gt;6- Ask that your information shall not be shared&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;7- File a complaint&lt;/span&gt;  &lt;span style="font-weight: bold;font-family:arial;" &gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Security&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt; 101&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;The HIPAA regulations have            establish standards for all health plans, clearing houses, and storage            of health care information to ensure the integrity, confidentially,            and availability of electronic protected health information.&lt;br /&gt;The Security Rule covers only protected health information that is in electronic form and we can summarize the security standard into the following requirements.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Administrative Safeguard&lt;/span&gt;&lt;br /&gt;These are administrative functions that should be implemented to meet the security standards. These include assignment or delegation of security responsibility to an individual and security&lt;br /&gt;training requirements.&lt;br /&gt;&lt;br /&gt;More details on &lt;a href="http://www.cms.hhs.gov/EducationMaterials/Downloads/SecurityStandardsAdministrativeSafeguards.pdf"&gt;Administrative Safeguard Reference&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Physical Safeguard&lt;/span&gt;&lt;br /&gt;These are the mechanisms required to protect electronic systems, equipment and the data they hold, from threats, environmental hazards and unauthorized intrusion.&lt;br /&gt;&lt;a href="http://www.cms.hhs.gov/EducationMaterials/Downloads/SecurityStandardsPhysicalSafeguards.pdf"&gt;&lt;br /&gt;More details on Physical Safeguard and recovery &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;- Technical Safeguard&lt;/span&gt;&lt;br /&gt;These are primarily the automated processesused to protect data and control access to data. They include using authentication controls to verify that the person signing onto a computer is authorized to access that.&lt;br /&gt;&lt;a href="http://www.cms.hhs.gov/EducationMaterials/Downloads/SecurityStandardsTechnicalSafeguards.pdf"&gt;&lt;br /&gt;More details on on Technical Safeguard who has accesses what information?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dignow.org/"&gt;&lt;img alt="DigNow.org" src="http://www.dignow.org/gen.aspx?idc=17872" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35677346-3157067667023109779?l=dsoft-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DsoftTechnologiesBlog/~4/EGigh3m6E-U" height="1" width="1"/&gt;</description><enclosure url="http://www.hhs.gov/ocr/hipaa/" length="0" /><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-14T23:28:21.489-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><itunes:explicit>no</itunes:explicit><itunes:subtitle>In this article, I will address HIPAA as it relates to the software and tools used by clinicians to manage their practice. The congress has put a set of rules under the HIPAA law, we will explain what's this law is about and how it applies to medical soft</itunes:subtitle><itunes:author>DSOFT Systems</itunes:author><itunes:summary>In this article, I will address HIPAA as it relates to the software and tools used by clinicians to manage their practice. The congress has put a set of rules under the HIPAA law, we will explain what's this law is about and how it applies to medical software. What is HIPAA? The Administrative Simplification provisions of the Health Insurance Portability and Accountability Act of 1996 (HIPAA, Title II) required the Department of Health and Human Services (HHS) to establish national standards for electronic health care transactions and national identifiers for providers, health plans, and employers. It also addressed the security and privacy of health data. As the industry adopts these standards for the efficiency and effectiveness of the nation's health care system will improve the use of electronic data interchange. The Entities covered by HIPAA law are: Health Plans Health Care Providers who use certain electronic transactionsHealth Care Clearinghouses The HIPAA provisions are summarized as: Transaction Standards and Code SetsPrivacySecurityNational Standard Identifiers for the Provider, Employer, Health Plan and Individual HIPAA in Practical terms Administrative Simplification is a method of making medical practice (the billing, claims, computer systems and communication) uniform in order for providers and payers to interact with each other through each other's proprietary systems. The changes will affect such activities as: Enrolling an individual in a health plan Paying health insurance premiums Checking eligibility Obtaining authorization to refer a patient to a specialist Processing claims Notifying a provider about the payment of a claim HIPAA Privacy Right and Security HIPAA contains a provision that is related to Electronic Data Transactions to standardize the exchange of the data between trading partners. These transactions are mandated to be in the ANSI ASC X12 version 4010 format. In Addition to the transactions, Software industry has introduced Electronic Medical Records. To guarantee the privacy rights and secure the access to the medical records, HIPAA provided guidlines to protect the patient's privacy. Privacy rights The HIPAA regulations establish standards for protecting individually identifiable health information and for guaranteeing the rights of individuals to have more control over such information. Here is the summary of these regulations: 1- Right to ask and see a copy of your records 2- Have Correction made to you records 3- Receive a notice that your information will be shared 4- Decide whether to accept that your information can be shared 5- Get a report of when and why your record is shared 6- Ask that your information shall not be shared 7- File a complaint Security 101 The HIPAA regulations have establish standards for all health plans, clearing houses, and storage of health care information to ensure the integrity, confidentially, and availability of electronic protected health information. The Security Rule covers only protected health information that is in electronic form and we can summarize the security standard into the following requirements. - Administrative Safeguard These are administrative functions that should be implemented to meet the security standards. These include assignment or delegation of security responsibility to an individual and security training requirements. More details on Administrative Safeguard Reference - Physical Safeguard These are the mechanisms required to protect electronic systems, equipment and the data they hold, from threats, environmental hazards and unauthorized intrusion. More details on Physical Safeguard and recovery - Technical Safeguard These are primarily the automated processesused to protect data and control access to data. They include using authentication controls to verify that the person signing onto a computer is authorized to access that. More details on on Technical Safeguard who has accesses what information? </itunes:summary><itunes:keywords>medical,practice,software,medical,management,software,medical,office,software,Office,appointment,scheduler,medical,billing,software,Electronic,medical,records</itunes:keywords><feedburner:origLink>http://dsoft-tech.blogspot.com/2008/12/hipaa-compliance.html</feedburner:origLink></item><item><title>Is X12 technology right for healthcare</title><link>http://feedproxy.google.com/~r/DsoftTechnologiesBlog/~3/W9r0Y9Xo2Q4/is-edi-right-to-healthcare.html</link><category>HIPAA Claims Processing</category><author>sadi@dsofttechnologies.com (DSOFT Systems)</author><pubDate>Wed, 14 Jan 2009 19:37:53 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-35677346.post-2579304514968731379</guid><description>&lt;span style="font-weight: bold;font-family:times new roman;" &gt;Is X12 Format right for Healthcare.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;In every corner, we hear about the rise of healthcare costs and how to reduce them. I would like to add one area where the cost can be reduced significantly.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;We all agree that the cost can be reduced by automating certain procedures, such as the medical billing, electronic medical records, scheduling, reporting and so on. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;The first question I asked was, what if the cost of automation is so huge that it will raise even more the costs of healthcare.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;So, how can we reduce the cost of the automation. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;The scheduling, automation can be accomplished at very minimal cost. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;The Electronic Medical Records is specialty dependent, but there is some common data that can be defined as "standard" for each practice.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;The medical billing is the big elephant in the room. The cost of its automation is significant and its implementation is complex. We will look at two aspects:&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: arial;"&gt;&lt;li&gt;Medical Coding&lt;/li&gt;&lt;li&gt;Claim Processing&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:times new roman;"&gt;Medical Coding specialists are in high demand &lt;/span&gt;&lt;span class="text"  style="font-family:times new roman;"&gt;because of rapid growth in the number of medical tests, treatments, and procedures that will be increasingly scrutinized by health insurance companies, regulators, courts, and consumers." (See &lt;a href="http://www.bls.gov/"&gt;U.S. Department of Labor, Bureau of Labor Statistics&lt;/a&gt;.) &lt;/span&gt;&lt;span style="font-family:times new roman;"&gt; ,  It is probably the fastest growing profession withing the healthcare industry. &lt;/span&gt;&lt;span class="text"  style="font-family:times new roman;"&gt;The 2005 statistics from the United States Department of Labor and Bureau of Statistics, showed the healthcare information industry is expected to grow faster than normal through 2014. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;In practical terms, the medical coder adds cost to the clinician and that cost will be transferred to the patient. But this is required position that we may not be able to cut. So, where can we cut costs ?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;We will look at how to reduce the cost HIPAA transactions processing.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:times new roman;" &gt;HIPAA Transactions.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;HIPAA defined a set of transactions  to support Electronic data exchange:&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: arial;"&gt;&lt;li&gt;Health Care                        Claims or equivalent encounter information (837);&lt;/li&gt;&lt;li&gt;Eligibility                        for a Health Plan (270/271);&lt;/li&gt;&lt;li&gt;Referral Certification                        and Authorization (278 or NCPDP for retail pharmacy);&lt;/li&gt;&lt;li&gt;Health Care                        Claim Status (276/277);&lt;/li&gt;&lt;li&gt;Enrollment and                        Disenrollment in a Health Plan (834);&lt;/li&gt;&lt;li&gt;Health Care                        Payment and Remittance Advice (835);&lt;/li&gt;&lt;li&gt;Health Plan                        Premium Payments (20); and&lt;/li&gt;&lt;li&gt;Coordination                        of Benefits (837 or NCPDP for retail pharmacy).                      &lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:Arial,Helvetica,sans-serif;"&gt;While many entities                      in the health sector have developed, or are in the process                      of developing, electronic data interchange (EDI) format standards,                      the lack of common, industry-wide                      standards is a major obstacle to realizing potential efficiency                      and savings&lt;/span&gt;&lt;span style="font-family:times new roman;"&gt;. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;The problem starts with the choice of EDI format, X12. For those who had some experience with X12, they know what I'm talking about. It is a complex format that is very hard to maintain and terribly complex to implement.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:times new roman;"&gt;Today, the software industry offers other technologies that can actually reduce the cost of the implementation of the HIPAA transactions and HIPAA specifications. One of these technologies is XML Web services (Dont confuse it with a web site) that operates under SOAP (Simple Object Adapter Protocol) or REST.&lt;br /&gt;The data for each transaction can be defined with an interface called WSDL (Web Service Definition Language) and the companies can implement the business behind each transaction independently.&lt;br /&gt;This protocol is  platform independent (Windows, Mac, Unix, Linux, MVS ...etc) and it can reduce the implementation costs by 500% and increase efficiency at every level of claim processing because this technology provides hooks to validate, secure, transport data. This reduction of cost in claim processing will imply reduction in insurance premiums as well as the reduction of the cost of billing systems.&lt;br /&gt;Compared to EDI where the claims are submitted in batch format, the Web Service technology can submit the claims in realtime or immediate send or in batch mode. The number of errors will be reduced to under 1%.&lt;br /&gt;&lt;br /&gt;The combination of efficient medical coding along with web services technology as the protocol of choice for HIPAA transactions will reduce the cost of claim processing by at 200%.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The ultimate goal is to take care of the patient at reduced cost. Many things need to come together in order to accomplish this goal. One of them is &lt;a href="http://www.dsoftsystems.com/"&gt;Medical Practice Management&lt;/a&gt; Systems implemented at reasonable cost that offers the functions that will optimize the provider time and costs. I believe that it start by applying the right technology that can help the business.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35677346-2579304514968731379?l=dsoft-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DsoftTechnologiesBlog/~4/W9r0Y9Xo2Q4" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-14T20:37:53.414-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://dsoft-tech.blogspot.com/2008/12/is-edi-right-to-healthcare.html</feedburner:origLink></item><item><title>Medical Practice Management Software - EzMedPro</title><link>http://feedproxy.google.com/~r/DsoftTechnologiesBlog/~3/BYfo3Pj7TBI/medical-practice-management-software.html</link><category>medical practice management software</category><author>sadi@dsofttechnologies.com (DSOFT Systems)</author><pubDate>Tue, 14 Apr 2009 19:31:33 PDT</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-35677346.post-8769777601816223867</guid><description>&lt;span style="font-weight: bold;"&gt;Introduction&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With today's rising healthcare costs and the baby boomers needing care, it is important to automate medical records, billing, ...etc in the everyday provider's tasks. For  patients, they want the best care. They want to get an appointment with a doctor when they are not feeling well and not wait few days for a possible care. And when they show up at the doctor's office, they want the best care.&lt;br /&gt;The best care comes when the provider knows our medical history and can be accessed quickly on each visit.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;How do we make the provider more efficient?&lt;br /&gt;Well, we need to look at how to optimize the time the provider spends in tasks other then seeing patients.&lt;br /&gt;I will try to list some that every patient may have seen:&lt;br /&gt;&lt;br /&gt;1- &lt;a href="https://www.dsoftsystems.com/medical_management.seam"&gt;&lt;span style="font-weight: bold;"&gt;Medical Records&lt;/span&gt;&lt;/a&gt; are on paper and hard to find, the doctor does not go through every pages of our record. He looks at the last visit. We need to have a way to show the medical history summary of the patient that can be seen by the provider without going through 30 pages.&lt;br /&gt;2-&lt;span style="font-weight: bold;"&gt; Medical Coding&lt;/span&gt; is another area of headache. To put it in simple words, a visit to doctor has a code (that's a CPT code) and diagnosis is another code (that's the ICD code).  These codes are used to submit the claim to the insurance company.&lt;br /&gt;3- &lt;span style="font-weight: bold;"&gt;Billing &lt;/span&gt;is critical to raise revenue for a practice. Having a system that generates a bill for each visit and manage the receivable accounts will help the providers save time. However, I have seen that these two functions are usually managed by two different systems. &lt;a href="http://www.dsoftsystems.com/"&gt;EzMedPro&lt;br /&gt;&lt;/a&gt;is a software that integrates these 2 functions.&lt;br /&gt;4- &lt;span style="font-weight: bold;"&gt;Insurance Claims&lt;/span&gt; , this is an area I believe needs the most improvement. The Insurance companies make it hard for both the provider and the patient when it comes to pay a claim. Today there are two way to get a claim processed:&lt;br /&gt;- HCFA form and send it by mail&lt;br /&gt;- Electronic Claims&lt;br /&gt;5- &lt;span style="font-weight: bold;"&gt;Scheduling &lt;/span&gt;is not really an issue but need to be mentioned for large practices to run reports and send reminders to the patients prior to their appointment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The potential solution&lt;/span&gt;&lt;br /&gt;The solution is to automate the daily tasks as much as possible. Basically we need to automate at the least the 5 tasks I listed above: Scheduling, billing, insurance claims, medical coding and medical records.&lt;br /&gt;Not only do these task need automation but they need to be integrated within one system in compliance with HIPAA.&lt;br /&gt;&lt;br /&gt;There are certain number of systems that provide some type of solution. However, for most of the providers, affordability is an issue, until now. &lt;a href="http://www.dsoftsystems.com/medical_management.seam"&gt;EzMedPro &lt;/a&gt; is a &lt;a href="http://www.dsoftsystems.com/medical_management.seam"&gt;Medical Practice Management Software&lt;/a&gt; that integrates all the tasks I listed above and is available for a price under $300.&lt;br /&gt;&lt;br /&gt;The Objective is to make the provider focus on the patient. EzMedPro Software from DSOFT Systems provides the lead way for affordable software with efficiency for providers.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://technorati.com/faves?sub=addfavbtn&amp;amp;add=http://dsoft-tech.blogspot.com"&gt;Add to Technorati Favorites&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35677346-8769777601816223867?l=dsoft-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DsoftTechnologiesBlog/~4/BYfo3Pj7TBI" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-14T20:31:33.388-06:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://dsoft-tech.blogspot.com/2008/12/medical-practice-management-software.html</feedburner:origLink></item><item><title>JCA Connector for SSH and SFTP</title><link>http://feedproxy.google.com/~r/DsoftTechnologiesBlog/~3/SQ0V2413uns/jca-connector-for-ssh-and-sftp.html</link><author>sadi@dsofttechnologies.com (DSOFT Systems)</author><pubDate>Sun, 07 Dec 2008 17:21:05 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-35677346.post-116251378572556596</guid><description>&lt;span style="font-weight: bold;"&gt;By Sadi Melbouci&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Enterprise Architecture Integration (EAI) provides a common framework for integrating incompatible systems running on different platforms. Many legacy applications and custom databases are still being used and run well that there is no need to re-invent the wheel. The aim of EAI is to reduce the complexity of the IT infrastructure and improve reliability, scalability and flexibility.&lt;br /&gt;&lt;br /&gt;This article provide a brief description of a technology that is a key in integrating the databases and legacy systems with J2EE technology. Java 1.4 came with JCA 1.5 (Java Connector Architecture) that provide the standard mechanism to store, retrieve data from EIS (Enterprise Information System). To understand how JCA fits into EAI, refer to &lt;a href="http://www.javaworld.com/javaworld/jw-11-2001/jw-1121-jca.html"&gt;Connect the Enterprise with JCA&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why JCA?&lt;/span&gt;&lt;br /&gt;J2EE container is responsible for managing the security, threading, resource pooling and so on. In order to ensure the control over their functions, the container put some restrictions on components it manages such as EJB and servlets.&lt;br /&gt;One of the restrictions is on EJB and IOs in general. An EJB should not manage a file descriptors (Sockets or Files). The communication with EIS is done through Sockets. Sockets are the standard low level communication primitives that appeared in early 1970's for Unix systems. The Sockets are not serializable therefore, EJB cannot passivate them neither the servlet can put them in session. In distributed environment, EJB are distributed at runtime running on separate JVM or machines. More information about EJB restrictions may be found at &lt;a href="http://java.sun.com/blueprints/qanda/ejb_tier/restrictions.html#static_fields"&gt;EJB Restrictions&lt;/a&gt; .&lt;br /&gt;But EJB should find a way to communicate with databases and other EIS system. JCA provides the solution where the JCA handles the low level connections with EIS and return a Handle for the connection to the J2EE middle tier components.&lt;br /&gt;&lt;br /&gt;Before we start the implementation of a Resource Adapter to provide SSH and Secure FTP functionalities, let's list the main JCA components:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;System contracts&lt;/li&gt;&lt;li&gt;Client API&lt;/li&gt;&lt;li&gt;Resource adapter module&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;System contracts                                                                    &lt;/span&gt;&lt;br /&gt;System contracts define the connection between the application server and the EIS. The EIS side of the system contract is implemented by a resource adapter&lt;br /&gt;-- a system-level software driver specific to the EIS. The application server and the resource adapter collaborate by means of the system contract to provide secure, robust, scalable access to the EIS.&lt;br /&gt;Three types of system contracts are defined:&lt;br /&gt;The &lt;i&gt;connection management&lt;/i&gt; contract enables physical connections to the EIS and provides a mechanism for the application server to pool those connections.&lt;br /&gt;&lt;br /&gt;The &lt;i&gt;transaction management&lt;/i&gt; contract supports access to an EIS in a transactional context. Transactions can be managed by the application server, providing transactions that incorporate other resources besides the EIS, or they can be internal to the EIS resource manager, in which case no transaction manager is required.&lt;br /&gt;&lt;br /&gt;The &lt;i&gt;security&lt;/i&gt; contract supports secure access to the EIS. How system contracts are implemented on each side (application server and resource adapter) is not specified by JCA; they can be implemented as each vendor sees fit.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Client API&lt;/span&gt;                                                   &lt;p&gt;The second element of JCA is the &lt;i&gt;client API&lt;/i&gt;. The API can be specific to the resource adapter or it can be the standard &lt;i&gt;Common Client Interface&lt;/i&gt; (CCI) as defined by JCA. The CCI is meant to be used by vendors to provide integration tools and frameworks, making it easier for developers to access enterprise systems. It is recommended (but not mandated) that the resource adapter make use of the CCI.&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;Resource adapter module&lt;/span&gt;&lt;br /&gt;The resource adapter module contains all of the elements necessary to provide EIS connectivity to applications. Specifically, the resource adapter module includes the following components:&lt;br /&gt;- The Java classes and interfaces that implement the resource adapter&lt;br /&gt;- Any utility Java classes required by the resource adapter&lt;br /&gt;- Any EIS-specific platform-dependent native libraries&lt;br /&gt;- The deployment descriptor&lt;br /&gt;Application servers make use of the &lt;i&gt;deployment descriptor&lt;/i&gt; supplied with a resource adapter to configure it to a specific operational environment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Handling of Connections&lt;/span&gt;&lt;br /&gt;An application component accesses the resource adapter through &lt;i&gt;ConnectionFactory&lt;/i&gt; and &lt;i&gt;Connection&lt;/i&gt; interfaces, which are provided by the resource adapter implementer. These interfaces can be CCI interfaces (&lt;code&gt;javax.resource.cci.ConnectionFactory&lt;/code&gt; and &lt;code&gt;javax.resource.cci.Connection&lt;/code&gt;) or they can be specific to the resource adapter. The classes that implement these interfaces are also provided with the resource adapter.&lt;br /&gt;The connection factory is obtained through the Java Naming and Directory Interface (JNDI) so that the application need have no knowledge of the underlying implementation class. Once the connection factory is retrieved, a connection is obtained from the connection factory through the &lt;code&gt;getConnection()&lt;/code&gt; method. At least one &lt;code&gt;getConnection()&lt;/code&gt; method must be provided by the connection factory, though more may be provided. It is important to note that a &lt;code&gt;Connection&lt;/code&gt; is an application-level handle to an underlying physical connection to the EIS, represented by a &lt;code&gt;ManagedConnection&lt;/code&gt;. Once the application component is finished with the connection, it calls the &lt;code&gt;close()&lt;/code&gt; method on the connection. A resource adapter is required to provide a method on the connection to close the connection. This method must delegate the &lt;i&gt;close&lt;/i&gt; to the &lt;i&gt;ManagedConnect ion&lt;/i&gt; that created the connection handle. Closing a connection handle should not close the physical connection to the EIS.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Managing Connections&lt;/span&gt;&lt;br /&gt;The getConnection() method in the connection factory does not actually create a connection;&lt;br /&gt;it calls the allocateConnection() method on its associated ConnectionManager.&lt;br /&gt;The ConnectionManager interface is implemented by the application server.&lt;br /&gt;It is associated with a connection factory in an implementation-specific manner when the&lt;br /&gt;connection factory is instantiated. The call to the ConnectionManager allows the application&lt;br /&gt;server to "hook in" to the resource adapter functionality to provide pooling, transaction,&lt;br /&gt;and security services. A ConnectionRequestInfo object may be passed to allocateConnection()&lt;br /&gt;to pass connection request-specific information.&lt;br /&gt;&lt;br /&gt;The ConnectionManager, in turn, calls on a ManagedConnection to obtain the connection&lt;br /&gt;handle. The connection handle is passed back through the ConnectionManager to the connection&lt;br /&gt;factory and on to the application component.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Connection Pooling&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The resource adapter provides a class that implements the &lt;span style="font-style: italic;"&gt;ManagedConnectionFactory &lt;/span&gt;interface. The &lt;span style="font-style: italic;"&gt;ManagedConnectionFactory &lt;/span&gt;class acts as a factory for both connection factory instances and &lt;span style="font-style: italic;"&gt;ManagedConnection &lt;/span&gt;instances. When the application server needs to create a connection factory, it calls the &lt;span style="font-style: italic;"&gt;createConnectionFactory()&lt;/span&gt; method, passing in an instance of &lt;span style="font-style: italic;"&gt;ConnectionManager&lt;/span&gt;; this is the instance that is called when the application component calls &lt;span style="font-style: italic;"&gt;getConnection()&lt;/span&gt; on the connection factory, as discussed previously.&lt;br /&gt;&lt;br /&gt;The application server uses one of two &lt;span style="font-style: italic;"&gt;ManagedConnectionFactory &lt;/span&gt;methods to create or request managed connections. When the server requires a new instance of &lt;span style="font-style: italic;"&gt;ManagedConnection&lt;/span&gt;, it calls the &lt;span style="font-style: italic;"&gt;createManagedConnection() &lt;/span&gt;method. When the server wants to re-use an existing &lt;span style="font-style: italic;"&gt;ManagedConnection&lt;/span&gt;, it calls the matchManagedConnections() method. To find the right match, the server passes in a set of &lt;span style="font-style: italic;"&gt;ManagedConnections &lt;/span&gt;that could possibly meet the criteria of the requested connection, along with information about the desired connection type. Internally, the &lt;span style="font-style: italic;"&gt;matchManagedConnection()&lt;/span&gt; method compares this information with the candidate set to determine if a match can be made. If so, it returns the matching ManagedConnection; if not, it returns null.&lt;br /&gt;&lt;br /&gt;So far we have talked about the outbound. JCA also supports the inflow and is implemented using ActivationSpec and Inbound Message Driven Bean.&lt;br /&gt;&lt;br /&gt;The following depicts the design of the SSH adapter.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The code can be found at &lt;a href="http://sourceforge.net/projects/jca-for-ssh"&gt;http://txconnect.sf.net&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;References:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Connect the Enterprise with JCA&lt;/span&gt;: &lt;a href="http://http//www.javaworld.com/javaworld/jw-11-2001/jw-1121-jca.html"&gt;http://www.javaworld.com/javaworld/jw-11-2001/jw-1121-jca.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35677346-116251378572556596?l=dsoft-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DsoftTechnologiesBlog/~4/SQ0V2413uns" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-07T18:21:05.672-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://dsoft-tech.blogspot.com/2006/11/jca-connector-for-ssh-and-sftp.html</feedburner:origLink></item><item><title>JBOSS LDAP Integration</title><link>http://feedproxy.google.com/~r/DsoftTechnologiesBlog/~3/aFsdFkIYj_c/jboss-ldap-integration.html</link><author>sadi@dsofttechnologies.com (DSOFT Systems)</author><pubDate>Sun, 07 Dec 2008 17:20:40 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-35677346.post-116118498712816280</guid><description>&lt;span style="font-weight: bold;"&gt;By Sadi Melbouci&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This article provide a prototype of integration of J2EE applications such as Servlets/JSPs, EJBs, MDBs with LDAP (Lightweight Directory Access Protocol) for application authorization and authentication. This article identifies some key interfaces within JBoss and any J2EE container compliant application server that can be configured to provide a secured access. We will provide a declarative LDAP security model in such a way you can configure it at runtime.&lt;br /&gt;&lt;br /&gt;Few things to take in consideration:&lt;br /&gt;- J2EE uses the same authorization model for both web-based components (servlets and JSPs) and enterprise components (EJBs). The specification requires transparent propagation of security credentials within the J2EE environment, so that once a user has authenticated to any J2EE component, the same security information is used by all other components.&lt;br /&gt;- J2EE application programming model insulates developers from mechanism-specific implementation details of application security. J2EE provides this insulation in a way that enhances the portability of applications, allowing them to be deployed in diverse security environments.&lt;br /&gt;- In order to integrate authorization into an unknown authentication mechanism, J2EE specifications define a simple role-based security model for EJBs and Web components. the specification defines a number of terms about security:&lt;br /&gt;- A &lt;i&gt;realm&lt;/i&gt; is the J2EE term for the security policy domain that is a definition of the way in which a user is authenticated. In its simplest form, a realm is a list of users and a mechanism for authenticating those users. Basic HTTP authentication is known as the HTTP realm; a public key certificate (PKC) authentication such as SSL is a different realm.&lt;br /&gt;- A &lt;i&gt;principal&lt;/i&gt; is the name of a user within the authentication realm. Although the J2EE specification does not require the principal name to be the same as the user's login name, most (if not all) J2EE implementations use the username as the principal name.&lt;br /&gt;- A &lt;i&gt;role&lt;/i&gt; is a definition of the way a user will use the system. Typical roles will be user, administrator, manager, developer, researcher, and so on. Outside the J2EE domain, a role is usually implemented by assigning users to one or more authentication groups or granting privileges to user accounts.&lt;br /&gt;- A &lt;i&gt;role&lt;/i&gt; &lt;i&gt;reference&lt;/i&gt; is the name of a role used within the code of a J2EE application. As part of the J2EE application environment definition (known as the deployment descriptor), every role reference must be mapped onto a real role. The decoupling of the coded role reference from the actual role helps improve portability of a J2EE component.&lt;br /&gt;&lt;br /&gt;Before we define the LDAP schema (LDIF file), the following are the LDAP common terms you need to know in order to understand this configuration.&lt;br /&gt;To configure LDAP, refer to &lt;a href="http://www.openldap.org/doc/admin23/"&gt;LDAP Admin guide&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;DN: Distinguished Name&lt;/span&gt;&lt;br /&gt;A distinguished name uniquely identifies an entry in the directory. A DN is made up of “relative” distinguished names of the entry and each of the entry's parent entries, up to the root of the directory tree. These names are usually separated by commas and optional spaces. For example: 'uid=JohnDoe, ou=People, dc=company, dc=com'.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ObjectClass&lt;/span&gt;&lt;br /&gt;An objectclass is a formal definition of a specific kind of objects that can be stored in the directory. An objectclass is a distinct, named set of attributes that represents something concrete, such as a user, a computer, or an application.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LDAP URL&lt;/span&gt;&lt;br /&gt;LDAP URL is a string that specifies the location of an LDAP resource. An LDAP URL consists of server host and port, search scope, baseDN, filter, attributes and extensions.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Schema&lt;/span&gt;&lt;br /&gt;An LDAP schema defines a set or rules that specifies the types of objects that a directory may contain and the required and optional attributes that entries of different types should have.&lt;br /&gt;&lt;br /&gt;More details can be found in &lt;a href="http://www.openldap.org/doc/admin23/"&gt;LDAP Admin guide&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now, Let's define our LDAP schema to support the J2EE role-based security. Below is the LDAP structure that defines our LDAP tree:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;com&lt;br /&gt;---company&lt;br /&gt;------------People&lt;br /&gt;-------------------admin&lt;br /&gt;-------------------demo&lt;br /&gt;------------Roles&lt;br /&gt;------------------Administrator&lt;br /&gt;------------------Users&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This structure is orgonized into 2 main structures, People and Roles. People contain the users and Roles groups the users into group of roles. A role is defined above, it provides the permission level for a user.&lt;br /&gt;&lt;br /&gt;The following is the LDIF schema that also defines our LDAP entries.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;dn: dc=company,dc=com&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;dc: company&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectClass: top&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectClass: dcObject&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectClass: domain&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;dn: &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ou=Roles,dc=company,dc=com&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ou: Roles&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectClass: top&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectClass: organizationalUnit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;dn: &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ou=People,dc=company,dc=com&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ou: People&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectClass: top&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectClass: organizationalUnit&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;dn: &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;uid=demo&lt;/span&gt;,ou=People,dc=conpany,dc=com&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;uid: demo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectclass: person&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectclass: inetOrgPerson&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;cn: demo&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;sn: demo&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;dn: uid=admin,ou=People,dc=company,dc=com&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;uid: admin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectClass: person&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectClass: inetOrgPerson&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;cn: Admin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;sn: admin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;dn: cn=Administrator,ou=Roles,dc=company,dc=com&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;cn: Admin&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectClass: top&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectClass: groupOfNames&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;member&lt;/span&gt;: uid=admin,ou=People,dc=company,dc=com&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;dn: cn=Users,ou=Roles,dc=company,dc=com&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;cn:Users&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectClass: top&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;objectClass: groupOfNames&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;member: uid=demo,ou=People,dc=company,dc=com&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;member: uid=admin,ou=People,dc=company,dc=com&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Save this schema into a file called entries.ldif&lt;br /&gt;&lt;br /&gt;You can load this file by running the command :&lt;br /&gt;ldapadd -f entries.ldif -x -D "cn=Manager,dc=company,dc=com" -w secret&lt;br /&gt;&lt;br /&gt;Manager is administrator of the LDAP&lt;br /&gt;&lt;br /&gt;Check that your entries are loaded by executing the following command:&lt;br /&gt;&lt;tt&gt;ldapsearch -x -b 'dc=company,dc=com' '(objectclass=*)'&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;We are done with LDAP.&lt;br /&gt;&lt;br /&gt;This example has been tested with &lt;a href="http://www.openldap.org/doc/admin23/"&gt;OpenLDAP&lt;/a&gt;. It should work with any other LDAP provider.&lt;br /&gt;&lt;br /&gt;Now, we need to tell JBoss how to authorize and authenticate against the LDAP entries we have created.&lt;br /&gt;For our example, we will secure the JBoss jmx-console. Similar thing can be applied to any web application.&lt;br /&gt;&lt;br /&gt;We need to modify web.xml and add the security constraint.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;web.xml&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;security-constraint&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;web-resource-collection&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;web-resource-name&amp;gt;HtmlAdaptor&amp;lt;/web-resource-name&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;description&amp;gt;An example security config that only allows users with the&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     role Admin to access the HTML JMX console web application&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; &amp;lt;/description&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;http-method&amp;gt;GET&amp;lt;/http-method&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;http-method&amp;gt;POST&amp;lt;/http-method&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;/web-resource-collection&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;auth-constraint&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &amp;lt;role-name&amp;gt;Administrator&amp;lt;/role-name&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;/auth-constraint&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;/security-constraint&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  &amp;lt;security-role&gt;&lt;/span&gt;&lt;br /&gt;&lt;role-name style="color: rgb(255, 0, 0);"&gt;    Administrator&lt;/role-name&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  &amp;lt;/security-role&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you can see, we wanted only the users having a role "admin"to access the console.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now we will tell JBoss what security scheme to use. To do so, we need to add security-domain element into jboss-web.xml. We have called our security scheme "AuthPolicy".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;jboss-web.xml&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="color: rgb(0, 0, 153);"&gt;&amp;lt;jboss-web&amp;gt;&lt;br /&gt;&amp;lt;security-domain&amp;gt;java:/jaas/AuthPolicy&amp;lt;/security-domain&amp;gt;&lt;br /&gt;&amp;lt;/jboss-web&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The "AuthPolicy" security policy shall be defined in login-config.xml located in :&lt;br /&gt;$JBOSS_HOME/server/{config}/conf .&lt;br /&gt;{config} can be one minimal, all, default or you can define your own.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now let's define an entry in the login-config.xml. Remember, we will to define the LDAP URL defined above.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;login-config.xml&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;    &amp;lt;application-policy name="AuthPolicy"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;   &amp;lt;authentication&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; &amp;lt;login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required" &amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; &amp;lt;module-option name="java.naming.factory.initial"&amp;gt;com.sun.jndi.ldap.LdapCtxFactory&amp;lt;/module-option&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; &amp;lt;module-option name="java.naming.provider.url"&amp;gt;ldap://localhost:389/&amp;lt;/module-option&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; &amp;lt;module-option name="java.naming.security.authentication"&amp;gt;simple&amp;lt;/module-option&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;        &amp;lt;module-option name="baseCtxDN"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ou=People,dc=company,dc=com&lt;/span&gt;&amp;lt;/module-option&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;       &amp;lt;module-option name="baseFilter"&amp;gt;(&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;uid={0}&lt;/span&gt;)&amp;lt;/module-option&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;       &amp;lt;module-option name="roleFilter"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;(member={1}&lt;/span&gt;)&amp;lt;/module-option&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;       &amp;lt;module-option name="rolesCtxDN"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;ou=Roles,dc=company,dc=com&lt;/span&gt;&amp;lt;/module-option&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;       &amp;lt;module-option name="roleAttributeID"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;cn&lt;/span&gt;&amp;lt;/module-option&amp;gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; &amp;lt;module-option name="roleAttributeIsDN"&amp;gt;false&amp;lt;/module-option&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;   &amp;lt;/login-module&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;  &amp;lt;/authentication&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;   &amp;lt;/application-policy&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I highlighted some attribute in red. These attribute should be mapped to your LDAP schema definition.&lt;br /&gt;&lt;br /&gt;See it in action. Fire up JBoss, and then go to: http://localhost:8080/jmx-console.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;References:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Security Trail in the Java tutoria&lt;/span&gt;l, &lt;a href="http://java.sun.com/docs/books/tutorial/security/index.html"&gt;http://java.sun.com/docs/books/tutorial/security/index.html&lt;/a&gt;&lt;br /&gt;Core Security Patterns, &lt;a href="http://www.informit.com/bookstore/product.asp?isbn=0131463071&amp;amp;rl=1"&gt;http://www.informit.com/bookstore/product.asp?isbn=0131463071&amp;amp;rl=1&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;JBoss Security Model&lt;/span&gt;, &lt;a href="http://www.huihoo.com/jboss/online_manual/3.0/ch13s78.html"&gt;http://www.huihoo.com/jboss/online_manual/3.0/ch13s78.html&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;JBoss Login Module&lt;/span&gt;, &lt;a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=LdapLoginModule"&gt;http://wiki.jboss.org/wiki/Wiki.jsp?page=LdapLoginModule&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35677346-116118498712816280?l=dsoft-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DsoftTechnologiesBlog/~4/aFsdFkIYj_c" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-07T18:20:40.097-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://dsoft-tech.blogspot.com/2006/10/jboss-ldap-integration.html</feedburner:origLink></item><item><title>JAXB and xmlBeans. Pros ad cons</title><link>http://feedproxy.google.com/~r/DsoftTechnologiesBlog/~3/h0BwQZLvdGE/jaxb-and-xmlbeans-pros-ad-cons.html</link><author>sadi@dsofttechnologies.com (DSOFT Systems)</author><pubDate>Sun, 07 Dec 2008 17:19:59 PST</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-35677346.post-116028474843649254</guid><description>&lt;span style="font-weight: bold;"&gt;By Sadi Melbouci&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I would like to address some differences between JAXB and xmlBeans in processing of XML documents.&lt;br /&gt;JAXB is a part of JavaEE standards and provides a convenient way to bind an XML schema to a set of Java classes. This allowsh an easy way to process data in java technology without having to understand all the ins and outs of te XML technology.&lt;br /&gt;JAXB 2.0, available in in the open-source Java EE 5-compliant application server at Glassfish project is part of the new integrated stack for Web services development. This new version of JAXB includes all the data binding functionality in a single package, while the previous Web services development stack (in Java Web Services Developer Pack 1.6 and previous versions) carried out some data binding in the JAX-RPC 1.x package and some in the JAXB 1.x package. With the integrated stack comprising JAX-WS 2.0, JAXB 2.0, and SAAJ 1.3, the Web services description, data binding, and SOAP attachment processing functionality are more logically architected, enabling you to develop Web services, middle tier and Web applications more easily.&lt;br /&gt;&lt;br /&gt;XmlBeans was originally developed by BEA Systems, it is now an open source project. xmlBeans provide similar functionality then JAXB but may require some good knowledge of XML technology.&lt;br /&gt;Prior to this technologies,  one way to proccess an XML document, perhaps the most typical way, is through parsers  &lt;a style="font-family: courier new;" href="http://www.saxproject.org/"&gt;Simple API for XML (SAX)&lt;/a&gt;&lt;span style="font-family:courier new;"&gt; or the  &lt;/span&gt;&lt;a style="font-family: courier new;" href="http://www.w3.org/DOM/"&gt;Document Object Model (DOM)&lt;/a&gt;&lt;span style="font-family:courier new;"&gt;. Both of these parsers are provided by &lt;/span&gt;&lt;br /&gt;&lt;a style="font-family: courier new;" href="http://java.sun.com/webservices/jaxp/index.jsp"&gt;Java API for XML Processing (JAXP)&lt;/a&gt;. The developer writes code to invoke a SAX or DOM parser through the JAXP API to parse an XML document -- that is, scan the document and logically break it up into discrete pieces. The parsed content is then made available to the application. In the SAX approach, the parser starts at the beginning of the document and passes each piece of the document to the application in the sequence it finds it. Nothing is saved in memory. The application can take action on the data as it gets it from the parser, but it can't do any in-memory manipulation of the data. For example, it can't update the data in memory and return the updated data to the XML file.&lt;br /&gt;In the DOM approach, the parser creates a tree of objects that represents the content and organization of data in the document. In this case, the tree exists in memory. The application can then navigate through the tree to access the data it needs, and if appropriate, manipulate it.&lt;br /&gt;&lt;br /&gt;Now we have 2 technologies that do convert the XML document into java classes. You manipulate the Java object instead. However, JAXB and XmlBeans accomplish the marshalling and unmarshalling of XML document quite differently.&lt;br /&gt;&lt;br /&gt;XMLBeans processes an XML document without going through a conversion into Java where integrity of the document can be lost. XMLBeans creates a cursor that can move through the XML document. You can access any element of the document, including comments and schema information because the document is kept in full fidelity. It also creates the opportunity to execute an XQuery on the document. XMLBeans also gives a strongly typed access to the document and a more generic type of access, similar to a reflection API. However, it doesn't always work the way you want it. Many time an error like "Invalid XML character 0x0" by processing the same document where the processing was previously successful.&lt;br /&gt;More importantly, like I previously mentioned it, Using Xml Beans requires you to know XML very well and also SAX and DOM.&lt;br /&gt;&lt;br /&gt;JAXB is binded to the XML schema, the first release of JAXB did not answer the development community, mainly because it did not support all XML schema features and only supported DTDs. The first JAXB version suffered mainly of 3 major issues: it prevented support of type substitution and related features, it prevented support for extensibility and versioning, it failed to provide readable bindings in many cases.&lt;br /&gt;JAXB 2.0 was enhanced to fill up the gaps and provides full XML schema support, Java to XML Schema mapping, schema evolution and portability. For ease of development, JAXB has leveraged J2SE 5.0 features: generics for type safe collections enum type for binding of simple type with enumeration facets better support for XML schema types using datatypes in JAXP 1.3 leveraging JAXP 1.3 validation for smaller footprint more compact binding based on constraining facets defined in schema.&lt;br /&gt;JAXB architecture was re-designed to assist with schema evolution and invalid XML content. JAXB has introduced a flexible unmarshalling mode that allows for unmarshalling of invalid XML content. Optional unmarshal time validation can be used by an application to detect invalid XML content and decide whether to terminate unmarshalling.&lt;br /&gt;&lt;br /&gt;Let's take an example to illustrate the basic usage of both technologies:&lt;br /&gt;&lt;br /&gt;Let say we have a schema:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;lt;xs:complextype name="promotion"&amp;gt;&lt;br /&gt;&amp;lt;xs:sequence&amp;gt;&lt;br /&gt;&amp;lt;xs:element name="discount" type="xs:string"&amp;gt;&lt;br /&gt;&amp;lt;xs:element name="None" type="xs:string"&amp;gt;&lt;br /&gt;&amp;lt;/xs:sequence&amp;gt;&lt;br /&gt;&amp;lt;/xs:complextype&amp;gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With XmlBeans:&lt;br /&gt;&lt;blockquote&gt;PromotionDocument pdoc =&lt;br /&gt;PromotionDocument.Factory.parse(new File (xmlFile));&lt;br /&gt;&lt;br /&gt;// Get and print pieces of the XML instance.&lt;br /&gt;Promotion p = pdoc.getPromotion;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; with JAXB:&lt;/span&gt;&lt;br /&gt;JAXBContext jc = JAXBContext.newInstance("test.jaxb");&lt;br /&gt;Unmarshaller unmarshaller = jc.createUnmarshaller();&lt;br /&gt;Promotion p = (Promotion) unmarshaller(new File(xmlFile) );&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The choice between these technology depends on the performance you want to get&lt;br /&gt;and the use of XML features. I will go with XML Beans if:&lt;br /&gt;I would like to access the XML document itself and use XQueries ...etc.&lt;br /&gt;I would like Native DOM representation at the expense of performance and memory management.&lt;br /&gt;Access schema metadata&lt;br /&gt;Use it older JDK versions. 1.4 or older.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you are looking for simplicity to convert an XML document &lt;--&gt; Java classes,&lt;br /&gt;JAXB is your choice.&lt;br /&gt;If you want binding customization, JAXB allows these declarations to be made "inline" -- that is, in the schema, or in a separate document.&lt;br /&gt;JAXB uses memory efficiently: The tree of content objects produced through JAXB tends&lt;br /&gt;can be more efficient in terms of memory use than DOM-based trees.&lt;br /&gt;JAXB allows you to access XML data without having to unmarshal it. Once a schema is bound you can use the ObjectFactory methods to create the objects and then use set methods in the generated objects to create content.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;References&lt;/span&gt;:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;JAXB Architecture&lt;/span&gt;,  &lt;a href="http://java.sun.com/webservices/jaxb/"&gt;http://java.sun.com/webservices/jaxb&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;JSR 31, JAXB specs&lt;/span&gt;, &lt;a href="http://jcp.org/en/jsr/detail?id=031"&gt;http://jcp.org/en/jsr/detail?id=031&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;XMLBeans&lt;/span&gt;, &lt;a href="http://xmlbeans.apache.org/"&gt;http://xmlbeans.apache.org/&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;XMLBeans Architecture&lt;/span&gt;, &lt;a href="http://dev2dev.bea.com/xml/xmlbeans.html"&gt;http://dev2dev.bea.com/xml/xmlbeans.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35677346-116028474843649254?l=dsoft-tech.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/DsoftTechnologiesBlog/~4/h0BwQZLvdGE" height="1" width="1"/&gt;</description><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-07T18:19:59.299-07:00</app:edited><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://dsoft-tech.blogspot.com/2006/10/jaxb-and-xmlbeans-pros-ad-cons.html</feedburner:origLink></item><copyright>DSOFT SYSTEMS Inc.</copyright><media:credit role="author">DSOFT Systems</media:credit><media:rating>nonadult</media:rating><media:description type="plain">Medical Office Management Software</media:description></channel></rss>

