Re: external java agent calls functions in o:XML
Martin Klang <[email protected]> Thu, 11 Jan 2007 23:55:53 +0100
| Newsgroups | gmane.text.xml.o-xml |
|---|---|
| Message-ID | <[email protected]> |
Hi Francisco, If I understand your problem correctly then what follows might be an interesting solution - though first a couple of notes - The o:XML execution model has the notion of a session. The session is essentially a hash table, where variables can be stored and reused in between program invocations. It was designed for programs handling web requests, but can be used in any execution context. Session variables are important, because in o:XML there are no static or global variables. Furthermore o:XML programs can be compiled once then executed (by concurrent threads) any number of times. So the solution would be to create an o:XML controller that receives requests from your Java agents, then compiles (if necessary) and invokes the right o:XML program or function, with the right session for storing/updating results, and then you're flying! Basically this is what the ObjectBox Servlet and Struts Action do when receiving HTTP requests (ObjectBox is the o:XML Java-based compiler/interpreter). You will probably need to make a few design decisions - 1) Will the agents invoke a single function defined in an o:XML program, or an entire program? In o:XML, any XML file is an o:XML program, and if you use the <o:program> construct you can also pass parameters (such as a session) to the program. Program parameters are declared much in the same way as function parameters. 2) How does the controller know which program/function to invoke? Does the agent tell it which one, or is it set in the application configuration? 3) How and when are session variables used? Does the same agent always update the same set of results, or can different agents update the same set of results? 4) How are results accessed? Are they accessed realtime in some form of console, or collated at the end of the process, output to a log file..? I can easily knock together a working example if you can answer the above questions and give me some idea of what the requests coming from the Java agents might look like. However, you might also want to consider using a framework such as Spring. As described in a previous posting [1], o:XML can integrate with Spring and this can be used to tie Java code into o:XML code, and vice versa. It also has the significant advantage of integrating with several other scripting languages, eg Ruby and Groovy. An updated version of ObjectBox including Spring integration should be out in the next few weeks. best regards, /m [1] http://lists.pingdynasty.com/pipermail/o-xml/2006q2/000087.html On 11 Jan 2007, at 2:05, Francisco wrote: > Dear All and Martin, > > I am quite interested in external java agents calling functions in > o:XML files. I am not sure if this can be done provided that > current o:XML API and libraries. > > Can anybody provide me an example or explain if this can be done? > the details of this thinking is described as follows: > > Currently I would like to describe the object-oriented MIB with > O:XML language. This O:XML "configuration" file is written > beforehand and java agents do NOT need to generate this o:XML, > whereas, java agents need to invoke the methods predefined in this > file with regards to event notifications, and reassign the value of > the variables in o:XML file itself. In > addition, the java agents could act in either multiple threads mode > simutaneously or > operate one after one another. We could always make it complicated > later. Currently > I am confused by the possible implementation of methods invoked by > java agents. I am > not sure if there are available API or library for this external > operation done by java agents. > > Thank you in advance for providing me with a simple example about > this. Your help is highly appreciated and will be acknowledged in > the in future network management research. > > Looking forward to hearing from you very soon. > > Best regards, > Francisco > >