Hi Scott, Inline
On Sat, Nov 28, 2009 at 12:40 PM, Scott Gray <[email protected]> wrote: > Hi Richard, > > Inline > > On 28/11/2009, at 8:43 PM, Richard Hirsch wrote: > >> Hi Scott, >> >> Comments inline >> >> On Sat, Nov 28, 2009 at 1:08 AM, Scott Gray <[email protected]> >> wrote: >>> >>> Hi Richard, >>> >>> Thanks for getting in touch with us, it's always good to hear from other >>> ASF >>> projects. >>> >>> I agree that an integration between the two projects could be quite >>> interesting, and could actually be an extremely useful means of >>> facilitating >>> system<->user and user<->user communication. Here's a few 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. >> >> Can you point me to some more technical documentation regarding EECAs, >> etc. > > This is probably the best we've got: > http://docs.ofbiz.org/display/OFBTECH/Service+Engine+Guide#ServiceEngineGuide-ecas > It only relates to SECAs although ECAs are pretty similar, differing mostly > by the event type that triggers their evaluation. > >>> >>> 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. >> >> This is also the same pattern that we use in ABAP. Once you have >> sendEsmeMessage piece, you could embed the functionality easily and >> then have functionality like SalesForce Chatter. >> >>> >>> 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. >> >> The receipt of the message in OFBiz can occur via various means. If >> OFBiz has a RESTAPI for ECAs, then you can create an ESME action >> (http://cwiki.apache.org/confluence/display/ESME/Actions) to send >> messages to OFBiz when certain ESME events occur. > > ECAs are only triggered by internal events, as I described above: an OFBiz > service invocation, database operation or email receipt. We don't have a > REST API for invoking services, there is basic support via SOAP, JMS or > HTTPS (but not what you'd call REST). Services can also be invoked using > HTTP(S) POSTs via our standard request handler (typically used for serving > regular web pages and ajax calls) but that requires a little additional > legwork in that you have to define request-event-response mappings in our > XML based web app controllers. Since this appears to be out-of-box functionality for both parties, the easiest first step might be to have ESME send an email to OFBiz. > >> Or if there some >> sort of ECA for dealing with email events, then we can also use an >> action that sends email. > > Possible, but I'd prefer: >> >> If you want a deeper integration, you could >> have a bot that uses one of our various APIs >> (http://cwiki.apache.org/confluence/display/ESME/API) to read the >> message queue and then create OFBiz events. > > This sounds like the way to go, I'll take a look at the link as soon as I > get a chance. What might be interesting is to create a bot that reads ESME messages and then sends JMS messages. > With that said, is there any way to push the messages to OFBiz rather than > polling a message queue? Yes. Via our actions. Actions respond to ESME events and respond accordingly. For example, you could send a message via email or via HTTP POST when you received a message with a certain tag or containing a certain word. > >> The integration via actions is very easy from the ESME side but on the >> OFBiz side you would need some sort of mechanism to parse the message >> to be able to call the appropriate OFBiz functionality. > > Yeah that should be pretty straight forward using an ECA style approach, > whenever a message comes in the ECAs are evaluated. For the conditions > against the message bodies we could perhaps start off with regex pattern > matching conditions and maybe evolve it to conditions like "contains-tag" or > something like that (I still have reading to do, a lot of this is foreign to > me having never used twitter). > > >>> Additionally as part of the sending/receiving process we'd probably want >>> to >>> store the messages an CommunicationEvent records but that should be >>> pretty >>> straightforward using the existing services that are available. For >>> storing >>> each user's ESME address we'd just use the ContactMech entity with a new >>> ContactMechType. >> >> Why would you need to store the user's ESME address? OFBiz would post >> messages to ESME in the form of a ESME user (for example, >> "OFBizBackend"). Users who were interested in messages would follow >> the user and would receive the messages from this user. If you want >> to restrict the access of messages, then you could use ESME's pool >> mechanism. > > I guess I still have some reading to do before the concepts are clear to me > but I was picturing something along the lines of "tweet me when my order has > shipped" for customer notifications or other types of private messages, I'd > need a username or some other sort of target address for these right? Usually, although ESME messages can be addressed to a particular user with the "@[user]" syntax, these messages are still visible by all the individuals in that pool. The ESME message might read "Order 123454" for customer ACME has shipped". In this way, various individuals who have interest in this customer or order (sales, logistics, etc.) might be made aware of this status change . > >>> For chat I guess things will be a little more complicated because OFBiz >>> would want to play some sort of a role in logging messages >> >> You could probably create an ESME bot that listens to either an entire >> group and copies the message into some sort of archive. Ideally, you >> would write a bot that creates JMS messages that anyone can store. We >> talked about this but have had no time to develop it yet. > > I'm thinking mostly in terms of things like a sales rep wanting to review > their communication history with a customer, we typically use our > CommunicationEvent db table for that, e.g. logging phone calls, user and > system generated emails and the like. > For general archiving I guess we'd just rely on whatever ESME has in place > (if anything). > >>> mentioned restricting communication between parties depending on there >>> roles >>> and permissions within the system. >> >> ESME has the idea of pools to deal with restricting access. > > Thanks, I'll take a look at it. > >> I'm also assuming that ESME is only >>> >>> concerned with sending and receiving messages so the responsibility of >>> managing things like this and other chat features (chat buddies, rooms, >>> status, etc.) would fall upon the chat client rather than ESME? >> >> Much of this is handled by ESME. ESME has a variety of clients >> available (see the bottom the page on >> http://cwiki.apache.org/confluence/display/ESME/Index ) and supports >> the twitter API as well (so some existing twiter clients can be used >> to access ESME) > > I haven't actually visited the link yet but this sounds cool and I'll be > sure to take a look. > >>> But anyway I hope some of this is helpful and although I don't really >>> have >>> any time to spare at the moment to work on an integration, I just wanted >>> to >>> send something along to let you know that I think an integration would be >>> quite useful and that there is some interest among the community. >> >> I'll create a wiki page in the ESME Space to collect our ideas on the >> integration. I can do most of the ESME integration work but I'll ned >> some assistance on the OFBiz side. > > Great, I'll help out where I can but won't have much free time so it may > progress a little more slowly on our end unless someone else jumps in. > It'll probably take me a few days just to go over your docs and get a better > understanding of the concepts involved. OK. I'll keep posting my ideas to this list and updating the wiki page accordingly. > >> We have a test instance in the cloud. > > It's raining here, I wonder if those are ESME messages hitting my roof :-) Our test instance in the cloud isn't that busy ---yet. :-> > >> Is there a test OFBiz instance >> where we might test the integration. > > We have nightly build instance running here: http://demo.ofbiz.org > Once things are further along we can patch it with the configurations > necessary to speak to your ESME instance. Sounds great. Let's describe a simple use case and then start from there. Dick > > Regards > Scott > >> >> D. >> >>> >>> Regards >>> Scott >>> >>> HotWax Media >>> http://www.hotwaxmedia.com >>> >>> On 27/11/2009, at 9:19 PM, Richard Hirsch wrote: >>> >>>>> if you would like to work with us to get this implemented, you are very >>>>> welcome. >>>> >>>> Of course. We have a test server in the cloud that we can use and >>>> REST APIs to create messages. We have also various clients >>>> (Javascript, AIr client, etc.) that users can also use to view status >>>> messages from different sources. >>>> >>>> What I don't know is how the integration with OFBiz would look like. I >>>> read about ECAs but didn't find very many details. Ideal would to use >>>> ECAs (when I understand them correctly) to use ESME's REST API to send >>>> messages. >>>> >>>> What are the next steps? Should I create a wiki page in the ESME wiki >>>> space where we can discuss this? >>>> >>>> D. >>>> >>>> On Fri, Nov 27, 2009 at 9:08 AM, Hans Bakker >>>> <[email protected]> wrote: >>>>> >>>>> Yes i have a request from a customer to add a chat function within >>>>> ofbiz. >>>>> >>>>> we are looking at 2 frameworks: >>>>> http://sourceforge.net/projects/nfcchat/ >>>>> the license is not compatible however i have a part confirmation they >>>>> are willing to change the license >>>>> >>>>> and: >>>>> https://sourceforge.net/projects/icsc/ >>>>> >>>>> if you would like to work with us to get this implemented, you are very >>>>> welcome. >>>>> >>>>> Regards, >>>>> Hans >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On Fri, 2009-11-27 at 05:05 +0100, Richard Hirsch wrote: >>>>>> >>>>>> Hi, >>>>>> >>>>>> Has anyone thought about adding social components (ala Chatter in >>>>>> SalesForce http://www.salesforce.com/chatter/) - in particular - to >>>>>> OFBiz? >>>>>> >>>>>> I'm one of the Project Leads for the Apache Incubator Project ESME >>>>>> (Enterprise Social Messaging Experiment) >>>>>> (http://incubator.apache.org/esme/ ) and I was thinking about how ESME >>>>>> might be integrated into OFbiz. I'm assuming that ECAs are probably >>>>>> the best place to start but I didn't find enough information. >>>>>> >>>>>> There are various integration possibilities / use cases. A few >>>>>> examples: a purchase order is changed and a short message is sent to >>>>>> those in ESME who are interested or the user makes an enquiry about a >>>>>> particular material and OFBiz sends a short message via ESME with a >>>>>> status. >>>>>> >>>>>> Thanks. >>>>>> >>>>>> D. >>>>> >>>>> -- >>>>> Antwebsystems.com: Quality OFBiz services for competitive rates >>>>> >>>>> >>> >>> > >
