[Pipet Devel] Idl
Brad Chapman
chapmanb at arches.uga.edu
Sat Mar 25 13:06:45 EST 2000
Jarl wrote:
> I've been adding some to the idl brad created,
> i'll work more on it tonight\tomorrow, but this is what I came up
with.
Thanks for looking at this.In general I'd like to try and make the
interface smaller (since I'm lazy and want to implement as few
interfaces and functions as possible :)
Also, the uri_t you are referring to (as a reference to a node or
subnet) is the same thing I was referring to using two references, a
process_id and a node_id. Maybe we could combine the two ideas by
having the uri_t be a string concatenation of the two separated by a
color (ie. uri_t = 'process_id:node_id').
Here are my specific thoughts (a lot of this is just talking out loud,
so please bare with me!):
For the SUBNET interface:
These are for accessing whole subnets or programs (so GMS type
nodes) after they have been sent a workflow/xml_structure to process
(ie. a whole bunch of connected nodes), right?
My question is, do we really need this level of control so that
someone can
manipulate a process so much while it is running? The way I was
thinking of the GUI and processing engine working together are that
the user spends some time getting a nice process of connected nodes
set up, and then hits run and waits for the output to come out at the
specific nodes/subnets they are interested in. If this is the case,
then why and when would they need to access a process to remove,
activate, destruct, add, etc. nodes and subnets?
Am I being naive here in thinking that we don't need all of this
control of a running process? Perhaps what we do need though it a
method for cancelling and run and getting as much information as you
can from it...
So can we drop these following functions out and leave it up to
the processor to get this information from the xml that is sent?
uri_t new(in string dname, in string ddescription, in string
datadescription, in string allowedfilter);
boolean destruct(in uri_t uri);
boolean init(in uri_t uri);
boolean activate(in uri_t uri);
uri_t duplicate(in uri_t uri);
boolean SETdname(in uri_t uri, in string displayedname);
boolean SETallowedFilter(in uri_t uri, in string allowedfilter);
boolean SETconfiguration(in uri_t uri, in string configruntime);
boolean SETdataDescription(in uri_t uri, in string
datadescription);
string GETdataDescription(in uri_t uri);
string GETdname(in uri_t uri);
For the following functions--do we need the processor to know about
the description of the program? Can all of this type of information by
stored in xml in the "middle scripting thingy"?
boolean SETdDescription(in uri_t uri, in string
displayeddescription);
string GETdDescription(in uri_t uri);
For the following functions: I don't really understand the set status
(how does the scripting engine set the status of a process?). I tried
to include GETstatus type stuff in my query_process function. But
maybe we should split this querying to be specific for a subnet or
node?
boolean SETstatus(in uri_t uri, in status_t status);
status_t GETstatus(in uri_t uri);
For the following, I'm not really positive why the middle would need
to know this stuff? Do you want the GUI to restrict only allowed
things to be connected? This seems *really* hard to maintain--maybe it
would be better to have the processing engine generate errors and then
propogate them back to the GUI so the user can fix them? The idl
probably does need a better way to return back error messages.
string GETallowedFilter(in uri_t uri);
string GETconfiguration(in uri_t uri);
For the following, do we still need the processing engine to store a
log/history of events, or should this be handled by the middle
scripting part, which can maintain logs for all its communication.
MDO_t GEThistoricdata(in uri_t uri, in long history);
For the NODE interface:
I think the same kind of comments I made above apply here: how
about if we just send all of this information to the middle as XML. I
think that the current Overflow XML will be a good point to start with
and we can work from there. What I need to get working is a way to
turn the directory/heirarchy based file storage system that Loci
currently has into the type of flat XML that Overflow uses, so I can
pass this. While the heirarchial structure is best for dealing with
the GUI (since I have to make lots of changes to it as the GUI
changes, it is easier to break it up into smaller chunks for
manageability and speed), the flat file format is what we need so that
we can pass a single file to the processing engine to process (and to
stay compatible with what Overflow does since they have a good thing
going). We also will not want to pass all of the info that is stored
in XML in the middle (like descriptions of programs, etc.) to the
processing engine, so some kind of transformation will be needed. I
need to start trying to think about how to do this, but I hope it
shouldn't be too bad...
Thanks again for checking out the idl, Jarl. Hopefully all of us
can get it hashed out over the next few days without a problem.
Brad
More information about the Pipet-Devel
mailing list