[kepler-dev] Code Freeze Proposal
Aaron Schultz
aschultz at nceas.ucsb.edu
Wed Dec 16 16:23:38 PST 2009
Hi Chad, here is what I have so far on the KAR specification.
What:
----------
The Kar system will allow files to be packaged together in a jar file
with a manifest that conforms
to the Kar Manifest specification.
https://kepler-project.org/developers/teams/framework/kepler-archive-kar/kar-manifest-specification
The Kar system will provide a standard mechanism for module specific
serialization of objects to the Kar file
AND to the Kepler Cache system. In other words every KAR entry has at
least two serialized forms:
a serialized form in the KAR, and a serialized form in the cache.
Currently the serialized form in the
cache must be a Java serialized object. The non-serialized form of a
KAR entry must provide a mechanism
for storing, at the very least, the LSID information for the object
so that it's Kar Manifest information
can be retrieved from the cache based on the LSID.
The Kar system will not depend on the gui.
The Kar system will give all modules in the system a chance to
contribute entries to the KAR file on save.
The Kar system will provide a standardized way for opening the entries
of a kar file.
How:
----------
Previously:
Module developer adds a KAREntryHandler and registers it in the system.
From a standardized save context in the gui (i.e. an extension of
ExportArchiveAction)
NamedObjs were added to a SaveKAR object, the SaveKar (via KARBuilder)
would then
pass the LSIDs of the NamedObjs from the SaveKAR to all of the
registered KarEntryHandler save methods
and the EntryHandler was responsible for returning an appropriate KAR
entry based on the LSID it received.
This is perhaps too general because any NamedObj can be added to a
SaveKar which makes it
confusing for developers what they should do with it.
Proposal:
Really what we want to save in a KAR is one or more ComponentEntities
(i.e. workflow or actor) along with any
files that depend on that ComponentEntity in a general sense and in a
specific save context we want
the ability to pick and choose which dependencies get added.
So to narrow the scope of the system we say that the SaveKar ONLY
accepts ComponentEntities
and then those ComponentEntities (not just their LSIDs) are passed to
the KAREntryHandlers.
Those handlers then return an array of KAREntries that should be
included in the KAR.
To pick and choose from dependencies the Save context would need to
record what should be saved
(perhaps based on a user's selection in the gui) and then that list
can be used by the EntryHandler
to determine exactly which KAREntries should be returned for a given
ComponentEntity.
We need a KarGenericFile class for saving generic files in KARs. This
will properly handle copying the
files out of the KAR and into the cache. This type of object does not
have serialized forms and acts
simply as a wrapper while in memory.
We need to address LSID issues on non-NamedObjs. An Interface that
includes methods like,
getLSID and getLSIDReferralList and updateLSIDRevision is needed for
anyone wanting to use
non-NamedObjs in a KAR file.
Aaron
Chad Berkley wrote:
> Hi,
>
> A few of us chatted this morning about the current bug list and the
> release. We would like to propose a code freeze target of *January
> 31st, 2010*. The big bugs that we're still working on include:
>
> * KAR subsystem bugs: May need a slight redesign or respecification.
> Needs unit tests built. Aaron is going to create a text document
> outlining the use cases of the KAR system and I am going to try to
> write unit tests to those specifications.
>
> * Documentation: figure out how to allow modules to include
> documentation that shows up with the other kepler help docs
>
> * Module Manager: figure out the current bugs and talk further about
> how modules are integrated into the runtime environment.
>
> * other release bugs: There are a lot of smaller bugs, some of which
> may be ironed out in the tasks above, but nonetheless, need to be
> addressed. Sean, Chad and Debi will work on this until others are
> done with their tasks.
>
> Let us know if there are other concerns to be put in this list. Also,
> please update any bugs assigned to you and close any that have been
> completed.
>
> Thanks,
> chad
> _______________________________________________
> Kepler-dev mailing list
> Kepler-dev at kepler-project.org
> http://mercury.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev
>
More information about the Kepler-dev
mailing list