On 05.10.2014 17:57, Michael Michaud wrote:
> Hi Jumpers,
> 
> I've started to add a big feature for OJ : capability to record macros.

that's really a nice feature! i like it..

without looking at the implementation details (you explained it pretty good), 
here some questions remarks. first and most important question:

are all non-interactive (dialogless) recordable now out of the box?

> I did not find a way to implement it without the need to revisit
> each plugin, but I tried to adopt a design
> - which does not break existing plugins
> - where adaptation to make a plugin recordable in a macro is minimal

what happens when during macro recording and a non-recordable plugin is 
executed?
 
> The general idea is :
> - make plugins persistable along with its parameters
> - make plugins runnable from a map of parameters (instead of
> an interactive dialog box)
> To achieve that in a simple way, plugins must be able to store/access
> their parameters through a simple Map<String,Object>
> 
> Usually, to make a plugin recordable :
> - you must put parameters gathered from a MultiInputDialog into a map
> - refactor the code so  that it accepts the map values as parameters
> instead of named plugin attributes (see changes in BufferPlugIn)
> 
> I have tested the concept with several different tools :
> - DisposeSelectedLayerPlugIn
> - BufferPlugIn
> - ViewSchemaPlugIn
> - DataSourceFileLayerLoader
> Some are easy to adapt (ex. DisposeSelectedLayerPlugIn), other
> are difficult (ex. ViewSchemaPlugIn)

i am pretty sure you had a specific use case in mind. could you post a simple 
step-by-step list of it that would illustrate a workflow that profits from 
automating?
 
> Any comment about the design is welcome
> Any help to make all our plugins recordable is welcome

that's my main issue with your approach. 
A. who is going to make at least most of our plugins recordable? shouldn't 
there be a mode where interactive plugins are allowed and come up with their 
respective dialog during automation?
B. our non-interactive plugins (e.g. Copy,Cut,Paste..) should be enabled by 
default, if they are not already by your current implementation.
C. users will assume that they can record _any: workflow when they use this 
feature, not just "some" enabled plugins. if we'd go down this road we should 
disable (via the Enabled interface) plugins that are not automatable during 
recording.

one implementation for C. could be a Plugin wrapper, that implements the Plugin 
interface and is instantiated given the original plugin. as _all_ our plugins 
are now installed via one routine we could easily wrap each plugin in this 
RecordableCheckedPlugin one during the startup.

RecordableCheckedPlugin could then implement
- an additional EnabledCheck which is enabled during recording and de/activates 
the plugin according to it's implemented interface.
.

just some quick thoughts ;).. ede

------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to