Friday, March 19, 2010

Enterprise Integration

I spent almost 3 years from my practical life working at international telecom operator, MTN

I was fresh graduate, excited Java developer, and I said that's my opportunity to apply enterprise java in mission-critical enterprise corporate.

working there, I realized that word Enterprise is exactly equivalent to Integration.

I worked closely with nice team to develop MTN Internal Web Portal A project that integrates all legacy and new developed applications and unify them in a Single Sign-On web interface using single platform (Java) and J2EE framework called OFBiz.

the Integration channels used are from bottom-up:

  • Database: most used and intuitive way for system integration. used in wide variety of applications
  • FTP: to get missed calls from switches (the switch generates file for each call when the mobile user is out of coverage)
  • Telnet: to control the IVR system, manage ports, reassigns applications and ports, and monitoring
  • TCP Sockets: to connect to ATM machines and receive the Bill payments
  • Plain HTTP: to communicate with TV and News Services
  • SOAP: to communicate with MMSC (send/receive MMS)
  • Web Services: integrate HR with Filenet
  • RMI: some end-to-end java applications
  • JMS: communicate between SMS service portal and SMSC-gateway administration console

Sunday, March 7, 2010

Lost in OO

object oriented couldn't be violated more after the rise of enterprise frameworks.
everyone talks about OO, encourage OO, embrace OO, love OO. all new languages are fully OO, and even the old ones are moving to OO.
if your are a developer you will see OO here, there, and everywhere..

but at its heart OO never been applied !!!! at least in the business domain

classes in any business application are divided into two types:
  1. Model classes, or Entities, or POJO's (in java): they are classes with properties only (and some getters and setters). they don't hold any behavior.
  2. Service classes, or Controllers: the classes which provide business logic, services, or control the application flow, or orchestrate the whole application behavior and interaction. these classes have a behavior but hold no state !!. almost they will be exposed as singleton or the behavior will be exposed as static methods.
we all forgot the essence of object oriented programming and the main principle which the OOP was originally built on: Encapsulation
which is the main difference from procedural languages which have separate data, and separate functions work on this data.