[
https://issues.apache.org/jira/browse/TINKERPOP-1540?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
stephen mallette updated TINKERPOP-1540:
----------------------------------------
Description:
We have steps like {{SideEffectStep}}, {{MapStep}}, {{FlatMapStep}}, etc., but
unfortunately, these are classes and not all side-effect, map, flatmap, etc.
behaving steps extend them. As such, if you have strategies that need to reason
on step behavior, you have to really know the Gremlin step library well.
To make it easier to write strategies, we should come up with a set of "marker"
interfaces.
* {{Mapping}} (one-to-one)
* {{FlatMapping}} (one-to-many)
* {{Reducing}} (many-to-one)
* {{Filtering}} (one-to-oneOrNone)
* {{SideEffecting}} (one-to-one w/ side-effect)
* {{Barriering}} (many-to-many)
>From here, we tag all the steps with their respective behavior marker and then
>go through and clean up strategies.
Also note that both {{DedupGlobalStep}} and {{TimeLimitStep}} are "stateful
steps" and because of this, shouldn't be decomposed by strategies such as
{{RepeatUnrollStrategy}}. Make a generalizing interface so search traversals
for such stateful steps is easy an not error prone.
was:
We have steps like {{SideEffectStep}}, {{MapStep}}, {{FlatMapStep}}, etc., but
unfortunately, these are classes and not all side-effect, map, flatmap, etc.
behaving steps extend them. As such, if you have strategies that need to reason
on step behavior, you have to really know the Gremlin step library well.
To make it easier to write strategies, we should come up with a set of "marker"
interfaces.
* {{Mapping}} (one-to-one)
* {{FlatMapping}} (one-to-many)
* {{Reducing}} (many-to-one)
* {{Filtering}} (one-to-oneOrNone)
* {{SideEffecting}} (one-to-one w/ side-effect)
* {{Barriering}} (many-to-many)
>From here, we tag all the steps with their respective behavior marker and then
>go through and clean up strategies.
> Create a set of marker interfaces that define step behavior
> -----------------------------------------------------------
>
> Key: TINKERPOP-1540
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1540
> Project: TinkerPop
> Issue Type: Improvement
> Components: process
> Affects Versions: 3.2.3
> Reporter: Marko A. Rodriguez
> Priority: Major
>
> We have steps like {{SideEffectStep}}, {{MapStep}}, {{FlatMapStep}}, etc.,
> but unfortunately, these are classes and not all side-effect, map, flatmap,
> etc. behaving steps extend them. As such, if you have strategies that need to
> reason on step behavior, you have to really know the Gremlin step library
> well.
> To make it easier to write strategies, we should come up with a set of
> "marker" interfaces.
> * {{Mapping}} (one-to-one)
> * {{FlatMapping}} (one-to-many)
> * {{Reducing}} (many-to-one)
> * {{Filtering}} (one-to-oneOrNone)
> * {{SideEffecting}} (one-to-one w/ side-effect)
> * {{Barriering}} (many-to-many)
> From here, we tag all the steps with their respective behavior marker and
> then go through and clean up strategies.
> Also note that both {{DedupGlobalStep}} and {{TimeLimitStep}} are "stateful
> steps" and because of this, shouldn't be decomposed by strategies such as
> {{RepeatUnrollStrategy}}. Make a generalizing interface so search traversals
> for such stateful steps is easy an not error prone.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)