You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "stephen mallette (JIRA)" <ji...@apache.org> on 2019/06/07 17:20:00 UTC

[jira] [Updated] (TINKERPOP-1540) Create a set of marker interfaces that define step behavior

     [ 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)