You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Background

The Apache Open For Business Project is an open source enterprise automation software project licensed under the Apache License Version 2.0. By open source enterprise automation we mean: Open Source ERP, Open Source CRM, Open Source E-Business / E-Commerce, Open Source SCM, Open Source MRP, Open Source CMMS/EAM, and so on.

Technical Description of the architecture

Akibot works with 2 modules: the front end (the microblog) and the robot (the "brain"). Both modules are completely independent and separate, and they communicate via HTTP POST and XML. When you write a message and post it in the microblog module, it does an HTTP POST call to the robot with the message. The robot gets the message and sends back an XML acknowledging the receipt. 

In the background the robot queues the message for processing. Processing means the message goes through the robot's Contextual Analyzer. The Contextual Analyzer determines the entity (inventory item, vendor, client. contact, marketing campaign, etc. etc.) and the situation (how that entity is being affected in the message/conversation), and, if applicable, makes an HTTP call to inquiry information from the corresponding software (e.g. ERP -SAP; Navision; etc-, Groupware -Exchange, Salesforce, etc. etc).

Once the robot has all this information, it decides if an action is required (usually the action is a response back to the microblog module - but can also be updates, alerts, pushing data to other applications, etc) and proceeds to do so by pushing a message back to the microblog module via HTTP POST (the actions are defined by directives, Akibot comes equipped with some standard directives but you can teach him more that are more specific to your industry).   

Suggested architecture

General Use Case

Basically this is how it is working now. The only change would be that ESME would be posting messages to Akibot (robot module, just like the microblog module is doing now) and Akibot would reply back to ESME if needed, and would interface with enterprise software (ERP, Groupware applications).

Integration possibilitites: Initial thoughts

About ECAs:

ECAs are pretty straight forward: when an Event occurs, if the Condition(s) are met then Action(s) are performed.  The Events supported currently are Entity (EECA) events which basically correspond to database record CRUD events, Service (SECA) events which correspond the various stages of a given service's invocation (invoke, validate, commit, return, etc.) and Mail (MECA) events which occur when an email is received.
Conditions are defined against whatever context is will be available when the event occurs, the record fields for an EECA, the in/out parameters for a SECA and the email contents for a MECA (from, to, subject, etc.)

Actions are just OFBiz services to be invoked when the conditions are met.

Sending event notifications

ECAs are the way to go for this and we'd just define services to be used as actions which send the message to ESME.  You'd probably create a single generic service that is used to send any message and then use that service within other services for sending specific messages e.g. an ECA would invoke sendPurchaseOrderChangeNotification which would prepare the message contents and call sendEsmeMessage to actually send the message.
Receiving messages:
For this we could either create a new type of ECA specifically for ESME messages or perhaps even generalize MECAs to support any type of message so that it stands for Message rather then Mail.  ECAs would then be defined and evaluated when an ESME message is received and service actions invoked to handle any processing and responses that need to occur.

There are three basic scenarios

  1.  via an ESME action that posts messages to the Akibot API.
  2. A bot that follows the ESME message stream and either 1) makes a remote call to the RESTAPIlocated on another server or, if the bot was located on the GAE then accesses your API without making a remote call.
  3. Another idea would be to directly embed akibot functionality in ESME as some sort of a plug-in.

Integration analysis: ESME bot

Coming soon.

Use Cases

Use Messages for Back-end Requests
  • No labels