|KATO||Everyone needs a sidekick|
Here are questions of interest to those considering developing for KATO. Why code software agents at all and why chose KATO as your platform? There are also questions about writing your first agent, about the KATO developer environments for both PHP and Java, and about what is permitted on the demo site.
Why should developers be interested in writing software agents?
Agents have a high degree of reuse-ability. The decoupling of watcher from responder roles makes it easier to reuse other, previously written agents. For example, you can just trigger the same event as the feed tweeter responder if the follow up action for your agent was to update a twitter status.
People have been talking about software agents for a long time yet they haven't really taken off. Why should I get interested in writing software agents now?
There have been a lot of recent innovations that make software agents more compelling. You will find software agents to be more strategic as syndication, LoD, micro-blogging, and other forms of social media become more popular.
Why should developers base their software agents on KATO?
KATO applies lessons learned from the past decade of research. For example, KATO for PHP decouples watcher from responder roles to afford a higher degree of reusability. KATO for Java is based on the JADE platform so you get all of the benefits and features of that platform combines with the data model of KATO.
What are the differences between software agents and job scheduling?
Like job scheduling, agents are tasked to run periodically. Unlike job scheduling, agents can invoke other agents. Think of software agents as job scheduling on steroids.
What are the differences between software agents and programs?
From a technical perspective, a software agent is a type of program. From an end user perspective, a program typically does what you tell it to do when you ask it to whereas an agent does what you want now and in the future until you tell it to stop. Programs complete tasks whereas agents finish goals.
What are the differences between software agents and workflow?
Workflow is a complicated subject but, basically, it is all about capturing and managing a potentially large number of business rules and is very enterprise oriented. Multi-agent systems can and have been combined with workflow before. KATO doesn't presently do that because KATO is more oriented towards mainstream individual users and not corporations.
How do I get started writing my own agents?
For PHP folks, it's pretty easy, actually. Load the suopf.php file. Create a class which extends the Handler class. Implement the watch and respond functions.
What is in the suopf.php file and why should I load that?
Implementations of the Handler and the Engine classes. You extend the Handler class with your own agents. The Engine is the framework that loads and calls your agents if they have been scheduled to run.
What are all the web page generating PHP files for?
Those files give you a web GUI to maintain the contents of the database tables that drive KATO.
I created my own agent class and copied that file to the web project directory but when I ran engine, my agent didn't wake up. What happened?
You need to configure KATO to run your agent. Be sure to create the corresponding record(s) in the Catalog, CatalogEvent, ParameterName, Schedule, and ScheduleParameter tables.
I got it to work once but when I tried to run it a second time, my agent never woke up. What happened?
Go to the schedule and check when your agent is next scheduled to run. The When field must be either today or in the past and the Finished checkbox should not be checked.
For more information, be sure to take our online tutorial.
Why did you develop KATO in only PHP and Java? Why didn't you use (insert language of choice here)?
Because PHP and Java are two of the most popular modern, web focused development languages. We figured that we covered most of our bases with those two.
Can I run Java agents from the PHP web application?
Not at this time, no. Sorry. We'll get to that eventually.
How do I design my KATO agent?
The first step is to analyze what you want the agent to do in terms of inputs and outputs. Typically, an agent will search the web and do something when the relevant or desired conditions have been met. The big question is what is the format of the input? The strategy is to base your agent on an already written agent depending on that input format.
For the parsing and/or navigating of complex web pages or email, consider writing an agent in Java. For more simple web page activity (such as filling out and submitting a form or using a web friendly API) or syndication feed parsing, then consider writing your agent in PHP.
Here is a decision chart that gives more details.