The mechanisms in SCUFL2 API for managing configuration properties (ie. scripts of a Beanshell, WSDL for a web service, etc) are found to be a bit too heavyweight when recently trying to use them fully from the Taverna 3 codebase.
The suggestion is to simplify the structure and API of the configuration to a flatter, more JSON-like, and not expose RDF-like objects in Java. The exact serialization might stay close to the current approach as long as the API gives a higher level view; however a JSON-like style could also be beneficial for accessing custom activity configurations in say Taverna Lite.
- URI typed (for validity checking, plugin instllation and UI help)
- A map
- key/value pairs
- Keys are simple strings (but could be resolved to URIs from type)
- Literals (string, number)
- Lists of literals
- Lists of maps
- (Lists of lists?)
The simple cases (String constant) should be easy, while the harder cases (Command line tool, BioMoby) might have to do more thinking.
So for instance it should not be needed to do various instanceof and (casting) to get hold of a string literal, but it might be OK if you need a list of a list.
Possibly be inspired by how RDF and XML libraries use .isSomething() and .asSomething() methods.
- Stian to sketch new API as Java stubs (1d) – no serialization yet
- David to test using this in Taverna 3 (2d)
- Stian to improve API based on feedback (3d)
- Stian to modify SCUFL2 to use new API in translators (2d)
- David to test updated API and implementation with real activities and UI (3d)
- Stian to specify WorkflowBundle RDF/XML serialization of properties (2d)
- Stian to implement serialization of properties (4d)
Total: Stian (12d), David (5d)