+1 for the second option.

On Thu, Oct 22, 2015 at 9:08 AM, Mark Payne <marka...@hotmail.com> wrote:

> I two thoughts on this concept. Firstly is the notion of Controller
> Services. Rather than having properties that
> change significantly depending on the strategy selected, each strategy
> could be implemented as a separate
> Controller Service. Then, in the Processor you'd just choose which
> Controller Service to use. This allows the
> properties that need to be configured for that strategy to move into the
> Controller Service itself.
>
> The second thought, is one that I had proposed a while back, but it never
> picked up any traction. The idea is
> to have properties "depend" on other properties. So, for instance, you
> could say Property B is only applicable
> if Property A is set to Allowable Value 1 or Allowable Value 2. If
> Property A is not set or is set to Allowable Value
> 3, for instance, then Property B is not even shown in the UI.
>
> The nice thing about the second option is that it would make the UI
> cleaner for existing Processors. For instance,
> we could indicate in CompressContent that the "Compression Level" property
> should not even be shown if the
> mode is set to Decompress. Currently, we just document that "This property
> is ignored unless mode is Compress."
> I would much prefer to not even show the property at all.
>
> Any thoughts?
>
> -Mark
>
>
>
> > On Oct 21, 2015, at 10:11 PM, Joe Witt <joe.w...@gmail.com> wrote:
> >
> > Not to trivialize this but curious if we added an 'apply' type option
> > there would that be a sufficient user experience?  The core point is
> > once you select a new strategy we need to send that fact to the server
> > to see what effect that has.  That happens when you hit ok but as you
> > note that closes the dialogue and requires you to reopen it which is
> > just sort of awkward.  So would an 'ok' option which applies the
> > changes and talks to the server and gets new info but doesn't close
> > the dialogue make this good enough?
> >
> > Thanks
> > Joe
> >
> > On Wed, Oct 21, 2015 at 6:09 PM, Michael D. Coon
> > <mdco...@yahoo.com.invalid> wrote:
> >> Mike,
> >>  Thanks, that is EXACTLY what I'm doing as well :)    My current
> version just allows them to set the properties up onceā€¦if they need to
> change the selection, they unfortunately have to create a whole new
> processor configuration and delete the old one. Kinda stinks but, as you
> said, current UI doesn't support this particular use case. At least I'm not
> alone! :)
> >> Mike
> >>
> >>
> >>
> >>     On Wednesday, October 21, 2015 6:02 PM, Michael Moser <
> moser...@gmail.com> wrote:
> >>
> >>
> >> Mike,
> >>
> >> I have implemented a NiFi processor very similar to what you describe.
> A
> >> ServiceLoader discovers the plugins that are available to the processor
> and
> >> populates the allowableValues of a PropertyDescriptor.
> >>
> >> In the end I don't think there is a way to resolve your
> questions/issues in
> >> the UI.  After you select a plugin, the user will have to save the
> >> processor config, then go back into it to see the new properties that
> you
> >> made available.  And if you change your plugin selection, then the
> >> processor will stay invalid until the user deletes the old properties
> that
> >> are no longer needed.  The NiFi framework just doesn't support this edge
> >> case.
> >>
> >> In the end, for my processor, I just made all properties from all
> plugins
> >> available all the time.  I named the properties to begin with the
> plugin's
> >> name to help users keep track of which plugin they applied to.
> >>
> >> -- Mike
> >>
> >>
> >>
> >> On Wed, Oct 21, 2015 at 5:50 PM, Michael D. Coon
> <mdco...@yahoo.com.invalid>
> >> wrote:
> >>
> >>> Hey Tony,
> >>>   I do have working code but  not in a public repo. I am, in fact,
> trying
> >>> to use NiFi as a backing engine. I think the bottom line is that I
> want to
> >>> be able to add/remove some configuration properties based on the
> settings
> >>> of other configuration properties. For example, I might specify
> "ClassA"
> >>> for property "PluginClass" and the implementation "ClassA" has its own
> set
> >>> of parameters required to operate. I want to expose those on the UI. It
> >>> works as I have it now, but if after setting up "ClassA" as my plugin I
> >>> change the "PluginClass" setting to "ClassB", all of ClassA's
> properties
> >>> stick around even though they are no longer what I'm returning from
> >>> "getSupportedProperties".  It looks like, at least on the version I'm
> >>> using, that NiFi is caching the properties internally and not syncing
> them
> >>> with the properties that I provide through the "getSupportedProperties"
> >>> method. More specifically, if I actually set a value on any of the
> "ClassA"
> >>> required properties, they stick around forever. I would think that
> whatever
> >>> I return from the "getSupportedProperties" method should, in fact, be
> the
> >>> set of properties exposed on the UI. But they fall out of sync if I
> change
> >>> my settings and add/remove properties.
> >>> Mike
> >>>
> >>>
> >>>
> >>>     On Wednesday, October 21, 2015 5:42 PM, Tony Kurc <
> trk...@gmail.com>
> >>> wrote:
> >>>
> >>>
> >>> Mike,
> >>> I'm not quite following what you're trying to accomplish. The use case
> you
> >>> described was a bit too meta for me to wrap my head around. It sounds
> like
> >>> a dataflow abstraction layer with nifi as a backing engine. It sounds
> like
> >>> you have some code, is it in a public repo so we could take a look at
> what
> >>> you have?
> >>>
> >>> Tony
> >>> On Oct 20, 2015 8:58 AM, "Michael D. Coon" <mdco...@yahoo.com.invalid>
> >>> wrote:
> >>>
> >>>> All,
> >>>>   I'm building a set of NiFi processors that allow data flow managers
> to
> >>>> dynamically configure reusable data processing modules wrapped inside
> >>> NiFi
> >>>> processors. Imagine that we might want to use NiFi in some cases and
> >>> Storm
> >>>> or Spark in others. The business logic in the processing modules
> would be
> >>>> the same regardless of what framework was feeding the data to the
> >>>> modules...it allows us to reuse capability in different data flow
> >>>> environments.
> >>>>
> >>>>   I have this working to some extent using ServiceLoader to discover
> the
> >>>> plugin modules and making those "allowableValues" of a
> >>> PropertyDescriptor.
> >>>> Now it gets tricky. When the user selects one of the modules, the
> module
> >>>> itself specifies its own set of configuration properties that I'd
> like to
> >>>> expose to the data flow manager on the UI. That too works as I can
> grab
> >>> the
> >>>> properties from the module and expose them as NiFi
> PropertyDescriptors.
> >>> So
> >>>> far, so good. But when I change my mind and choose a different module
> >>> from
> >>>> the allowableValues set I created, the old properties remain set with
> an
> >>>> error that they are not supported properties.
> >>>>
> >>>>   So how do I get rid of the old properties once a new module has been
> >>>> selected? Also, is there any way that the UI can dynamically update
> the
> >>>> required properties once I make a selection of which module I want to
> >>> use?
> >>>> As it stands, I have to close the settings window and reopen to get
> the
> >>> new
> >>>> properties list.
> >>>>   Thanks for any advice!
> >>>> Mike
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >>>
> >>
> >>
> >>
>
>

Reply via email to