Intro to the New Operational Support Service

For the last couple weeks, I've been working on a new operational support service with, among others, Joyce Nakatumba and Fabrizio Maggi.  Work has basically been focusing on two points: making a new protocol with support for sessions and making a meta-model for queries, supporting more structured requests and, in particular, responses.

After spending some time working on the meta model and a week or two making a CPN model of the session handling protocol, I finally started implementing last Thursday, and now I think the implementation is ready to start being used.  Granted, the current implementation still has some parts that needs further work, but the main idea of the new implementation is there.

In this video, I present the user interface of the new operational support service and provide entry points to the code to get started working with the new service.

To create s simple client using SessionHandle, all you have to do is:

[java]
public static void main(final String[] args)
throws IOException, InvocationException {
	final SessionHandle handle =
		create("localhost", 1202, Language.create(String.class, "test/test"));
		try {
			XLog emptyLog = XFactoryRegistry.instance().currentDefault().createLog()
			handle.simple("Hello", emptyLog);
			handle.compare("Hello", emptyLog);
			handle.predict("Hello", emptyLog);
			handle.recommend("Hello", emptyLog);
		} finally { 
			handle.close();
		}
	} 
}
[/java]

Naturally, you will not have to use the Language class directly in the final version, as subclassing will encapsulate the actual values of the parameters for concrete query languages, and the queries will be more elaborate than just strings as here. The second parameter to the queries is a log consisting of traces with exactly one event, indicating all possible continuations of the current partial trace (which is handled by the SessionHandle as well.

Providers must implement the interface:

[java] public interface Provider { OSService getOwner(); String getName(); boolean accept(Session session); void destroy(Session session); void simple(Session session, XLog availableItems, String language, T query, boolean done); void comparison(Session session, XLog availableItems, String language, T query, boolean done); void predict(Session session, XLog availableItems, String language, T query, boolean done); void recommend(Session session, XLog availableItems, String language, T query, boolean done); } [/java]

Here, the query methods (the last 4) are in an early stage, and they will be changed to actually return results (as sort-of explained in the video), but I'm currently working on that. The language parameter should probably also be changed to use the Language class.

2 thoughts on “Intro to the New Operational Support Service

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.