Business at the Speed of Opportunity
Posted by William Brant on Mon, Aug 29, 2011 @ 06:43 PM
In today’s world, technological solutions, services, and opportunities are appearing in the market place disrupting it and forcing organizational changes. These disruptions are at an ever increasing rate. To keep pace organizations innovate to compete effectively within that market place.
The new innovations in the market place are typically SAAS (Software as a Service) offerings such as Google, Yammer, LinkedIn, Salesforce.com, and NetSuite. These “Cloud Services” are changing the way businesses communicate and interact with their customers. These solutions are also changing how companies address the historical market opportunities and are creating new opportunities at an ever increasing rate.
So how can your organization prosper and maintain market share in this ultra competitive and demanding business environment?
“The new economic realities of today’s environment represents a completely new technological and economic era. Organization that embrace and understand this will prosper. Those who don’t will be left behind.”
The answer unsurprisingly, is that you need to adopt a strategy of creating a transparent and agile business and technological environment.
So how do you go about accomplishing the necessary transformations to achieve these goals without bankrupting the organization? The first step is to work on changing the corporate culture by adopting communication technologies that promote clarity and transparency in the day to day operations such as:
- campfirenow.com
- Yammer.com
- Linkedin.com
- Youtube.com
- Organizational Inference & Search Engines (instant knowledge access)
This technological service along with clearly lead organization effort to adopt and promote transparency can dramatically increase the effectiveness of your human resources.
So now that we have a good outline of how to transform organizational communication capabilities. So now how to you go about transforming your organization technological capabilities.
One part of this answer is the adoption of virtualization so you can more efficiently and effectively deliver the base technological systems and services. This adoption of virtualization technology enables your organization to reduces cost (Hardware, energy and support) and create a more agile and responsive core technological services.
Theses core services encompass:
- Server Virtualization
- Desktop Virtualization
- Storage virtualization
- Switch and Router Virtualization
The adoption of virtualization can be a key enabler for your organization to compete more effectively. However to get the most benefits it needs to have strong executive support for an effective implementation.
While Virtualization can help you achieve many things, are there additional ways to make my organization leaner, more effective and efficient?
The answer is yes. We can bring the principal ideals of transparency, agile infrastructure to an organization’s Integration efforts.
When consider an large scale IT integration project you also need to consider the long term plan for maintenance, code revision and technological knowledge required for the maintenance and support.
Traditionally these type of IT projects require long ramp up time to define the project requirements, allocate the necessary development resources and months more for the core developers to crank out the necessary code (Java, C#, PHP JavaScript, PHP etc...) to deliver the required functionality.
If your organization can’t respond in a timely manner to changing market conditions, you can literally watch market opportunities pass you by while you are stuck in the planning and resource allocation stages of your project"
With the competitive business environment today you need to bring the same organization imperatives of agile infrastructure, transparency and focus to the organization IT services.
Why you ask? Well how many market opportunities can you miss before your organization is stretched to the breaking point?
The way forward is viewing and treating integration activities such as identity management and data silo consolidation as a service instead of a planned large scale IT project. This goal is readily achievable using the integration as a service
Okay so what do you mean by integration as a service?
Well that really boils down to is, being aware of some new technological capabilities that have emerged over the last couple of years. There are many technical terms that describe these capabilities. I prefer to “think” of them collectively as “Process driven integration”.
You see in the last 10 years or so it used to be that if you wanted to connect data source, then you have to hire a developer (Typically a java developer) to create the necessary logical set of computer instruction necessary to complete the task.
Why write the basic set of code over and over again ?
The standard that exists today is being able to use the standardized tool sets to create drag and crop integration patters that accomplish the exact same set of instructions in a fraction of the time that used to be required.
Perhaps I have lost you in the translation so let me try to be a bit clearer and present the differences in more visual manner.
The specific scenario we are demonstrating is the capability to send a simple text message to an instance of the Apache ActiveMQ system. The tables, code snippets and graphics below will attempt to communicate and outline the differences.
The first example we will examine is a simple java utility class that will send an arbitrary text message to an ActiveMQ Queue.
As you can see this example is fairly long and requires some dedicated effort to create this type of utility. This utility is approximately 120 lines long and required approximately 2 hours to create, test and validate.
package com.greytower.activemq.test;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.util.IndentPrinter;
public class mqtest {
/**
/**
* A Grey Tower Java Tool tool for publishing messages
*/
static private Destination destination;
static private int messageCount = 1;
static private long sleepTime;
static private boolean verbose = true;
static private int messageSize = 255;
private static int parallelThreads = 1;
static private long timeToLive;
static private String user = ActiveMQConnection.DEFAULT_USER;
static private String password = ActiveMQConnection.DEFAULT_PASSWORD;
static private String url = ActiveMQConnection.DEFAULT_BROKER_URL;
static private String subject = "TOOL.DEFAULT";
static private boolean topic;
static private boolean transacted;
static private boolean persistent;
private static Object lockResults = new Object();
public static void main(String[] args)
{
Connection connection = null;
// Create the connection.
try {
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(user, password, "tcp://192.168.56.1:61616");
connection = connectionFactory.createConnection();
connection.start();
// Create the session
Session session = connection.createSession(transacted, Session.AUTO_ACKNOWLEDGE);
destination = session.createQueue("greytower");
// Create the producer.
MessageProducer producer = session.createProducer(destination);
//MessageConsumer consumer = session.createConsumer(destination);
mqtest.sendLoop(session,producer);
System.exit(0);
} catch (JMSException e) {
// TODO Auto-generated catch block
System.out.println(e.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
protected static void sendLoop(Session session, MessageProducer producer) throws Exception {
for (int i = 0; i < messageCount || messageCount == 0; i++) {
TextMessage message = session.createTextMessage(createMessageText(i));
message.setStringProperty("UserID", "005E0000000YreGIAS");
//005E0000000YqHAIA0
if (verbose) {
String msg = message.getText();
if (msg.length() > 50) {
msg = msg.substring(0, 50) + "...";
}
System.out.println("mesage"+msg.toString());
}
producer.send(message);
if (transacted) {
session.commit();
}
Thread.sleep(sleepTime);
}
}
private static String createMessageText(int index)
{
StringBuffer buffer = new StringBuffer(messageSize);
buffer.append("Message: " + index + " sent at: " + new Date());
if (buffer.length() > messageSize) {
return buffer.substring(0, messageSize);
}
for (int i = buffer.length(); i < messageSize; i++) {
buffer.append(' ');
}
return buffer.toString();
}
protected static void RecieveLoop(Session session, MessageConsumer consumer) throws Exception {
for (int i = 0; i < messageCount || messageCount == 0; i++) {
TextMessage message = (TextMessage)consumer.receive();
if (verbose) {
String msg = message.getText();
System.out.println("mesage"+msg.toString());
}
}
}

<flow name="SimpleDemo">
<file:inbound-endpoint path="C:\Demo\SimpleDemo" responseTimeout="10000"
encoding="UTF-8" disableTransportTransformer="false" doc:name="File"
doc:description="Read/write a file from the filesystem"/>
<mulexml:object-to-xml-transformer doc:name="Object-to-Xml"
doc:description="Converts object to xml."/>
<jms:outbound-endpoint queue="simpledemo" responseTimeout="10000"
encoding="UTF-8" disableTransportTransformer="false"
disableTemporaryReplyToDestinations="false" exchange-pattern="one-way"
connector-ref="activemq" doc:name="JMS"
doc:description="Send messages to a queue"/>
</flow>
These new process driven integration solutions quite clearly can create the necessary transparency to the organization core services. These capabilities will reduce the required time, money and effort required to organize and connect data in your organization.
This new found capability will enable you organization to focus on the emerging market opportunities and less on your integration needs.