Package com.hybris.backoffice.workflow
Class WorkflowNetworkFactory
- java.lang.Object
-
- com.hybris.backoffice.workflow.WorkflowNetworkFactory
-
- All Implemented Interfaces:
WorkflowFlowNetworkFactory,org.springframework.core.Ordered
public class WorkflowNetworkFactory extends java.lang.Object implements WorkflowFlowNetworkFactory
Creates theNetworkgraph to be drawn based onWorkflowActionModel
-
-
Constructor Summary
Constructors Constructor Description WorkflowNetworkFactory()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected voidbalanceCallbacks(java.util.Map<java.lang.String,WorkflowItem> nodesMap)Sets the level of each node to one level above its average neighbors' levels.protected voidbalanceMergingNodes(java.util.Map<java.lang.String,WorkflowItem> nodesMap)Sets the level of merging nodes (e.g.protected voidbalanceNodesLevels(java.util.Map<java.lang.String,WorkflowItem> nodesMap)protected java.util.Comparator<java.lang.String>byMostNeighborsPointingTo(java.util.Map<java.lang.String,WorkflowItem> nodes, java.util.Collection<java.lang.String> targets)booleancanHandle(java.util.Collection<WorkflowItem> items, com.hybris.backoffice.widgets.networkchart.context.NetworkChartContext context)Checks if it is possible to create aNetworkfor given inputprotected java.util.List<java.lang.String>collectEndActionsIds(java.util.Collection<WorkflowItem> items)com.hybris.cockpitng.components.visjs.network.data.Networkcreate(java.util.Collection<WorkflowItem> items, com.hybris.backoffice.widgets.networkchart.context.NetworkChartContext context)Returns theNetworkwith edges and nodes for later presentation.protected java.util.Map<java.lang.String,WorkflowItem>createNodesMap(java.util.Collection<WorkflowItem> items)protected java.util.List<com.hybris.cockpitng.components.visjs.network.data.Edge>extractEdges(java.util.Collection<WorkflowItem> items, java.util.Map<java.lang.String,WorkflowItem> nodesMap)Deprecated, for removal: This API element is subject to removal in a future version.useextractEdges(Map, Collection)insteadprotected java.util.List<com.hybris.cockpitng.components.visjs.network.data.Edge>extractEdges(java.util.Map<java.lang.String,com.hybris.cockpitng.components.visjs.network.data.Node> nodesMap, java.util.Collection<WorkflowItem> items)java.util.Collection<NetworkEntityRenderer>getNetworkEntityRenderers()NetworkNodeDecoratorgetNetworkNodeDecorator()intgetOrder()WorkflowItemModelFactorygetWorkflowItemModelFactory()WorkflowVisualisationCheckergetWorkflowVisualisationChecker()protected booleanisEndAction(WorkflowItem item)protected booleanisMergingNode(WorkflowItem node)protected static <T> java.util.function.Predicate<T>not(java.util.function.Predicate<T> predicate)voidsetNetworkEntityRenderers(java.util.Collection<NetworkEntityRenderer> networkEntityRenderers)voidsetNetworkNodeDecorator(NetworkNodeDecorator networkNodeDecorator)voidsetOrder(int order)voidsetWorkflowItemModelFactory(WorkflowItemModelFactory workflowItemModelFactory)voidsetWorkflowVisualisationChecker(WorkflowVisualisationChecker workflowVisualisationChecker)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.hybris.backoffice.workflow.flow.WorkflowFlowNetworkFactory
create
-
-
-
-
Method Detail
-
not
protected static <T> java.util.function.Predicate<T> not(java.util.function.Predicate<T> predicate)
-
canHandle
public boolean canHandle(java.util.Collection<WorkflowItem> items, com.hybris.backoffice.widgets.networkchart.context.NetworkChartContext context)
Description copied from interface:WorkflowFlowNetworkFactoryChecks if it is possible to create aNetworkfor given input- Specified by:
canHandlein interfaceWorkflowFlowNetworkFactory- Parameters:
items- the collection ofWorkflowItemwhich can be used to build theNetworkcontext- context with data about theNetwork- Returns:
- whether
Networkcan be created or not
-
create
public com.hybris.cockpitng.components.visjs.network.data.Network create(java.util.Collection<WorkflowItem> items, com.hybris.backoffice.widgets.networkchart.context.NetworkChartContext context)
Returns theNetworkwith edges and nodes for later presentation. TheWorkflowItems are being walked through starting from the ones with isEnd() set to true. Following their neighbors the algorithm favors visiting nodes pointing to already visited ones. That results in nodes being sorted by their neighborhood. Initially with each child of a node the level decreases. Later on the network is balanced vertically so each node is close to its neighbors and the "and" nodes are half level below the merging decisions.- Specified by:
createin interfaceWorkflowFlowNetworkFactory- Parameters:
items- from which theNetworkshould be builtcontext- context with data about theNetwork- Returns:
- Network with edges and nodes sorted by their neighborhood for nicer presentation
-
createNodesMap
protected java.util.Map<java.lang.String,WorkflowItem> createNodesMap(java.util.Collection<WorkflowItem> items)
-
collectEndActionsIds
protected java.util.List<java.lang.String> collectEndActionsIds(java.util.Collection<WorkflowItem> items)
-
isEndAction
protected boolean isEndAction(WorkflowItem item)
-
byMostNeighborsPointingTo
protected java.util.Comparator<java.lang.String> byMostNeighborsPointingTo(java.util.Map<java.lang.String,WorkflowItem> nodes, java.util.Collection<java.lang.String> targets)
-
balanceNodesLevels
protected void balanceNodesLevels(java.util.Map<java.lang.String,WorkflowItem> nodesMap)
-
balanceMergingNodes
protected void balanceMergingNodes(java.util.Map<java.lang.String,WorkflowItem> nodesMap)
Sets the level of merging nodes (e.g. "AND") to half below of its neighbors. The neighbors of the merging nodes are typically decisions. We want to make sure merging nodes and decisions are kept closer than the actions and the decisions.- Parameters:
nodesMap- a map containing nodes to balance
-
isMergingNode
protected boolean isMergingNode(WorkflowItem node)
-
balanceCallbacks
protected void balanceCallbacks(java.util.Map<java.lang.String,WorkflowItem> nodesMap)
Sets the level of each node to one level above its average neighbors' levels. Neighbors are initially placed one level below its parent which is not desired for the callbacks (decisions that repeat the action that was once completed).- Parameters:
nodesMap- a map containing nodes to balance
-
extractEdges
@Deprecated(since="2005", forRemoval=true) protected java.util.List<com.hybris.cockpitng.components.visjs.network.data.Edge> extractEdges(java.util.Collection<WorkflowItem> items, java.util.Map<java.lang.String,WorkflowItem> nodesMap)Deprecated, for removal: This API element is subject to removal in a future version.useextractEdges(Map, Collection)instead
-
extractEdges
protected java.util.List<com.hybris.cockpitng.components.visjs.network.data.Edge> extractEdges(java.util.Map<java.lang.String,com.hybris.cockpitng.components.visjs.network.data.Node> nodesMap, java.util.Collection<WorkflowItem> items)
-
getWorkflowItemModelFactory
public WorkflowItemModelFactory getWorkflowItemModelFactory()
-
setWorkflowItemModelFactory
public void setWorkflowItemModelFactory(WorkflowItemModelFactory workflowItemModelFactory)
-
getWorkflowVisualisationChecker
public WorkflowVisualisationChecker getWorkflowVisualisationChecker()
-
setWorkflowVisualisationChecker
public void setWorkflowVisualisationChecker(WorkflowVisualisationChecker workflowVisualisationChecker)
-
getNetworkEntityRenderers
public java.util.Collection<NetworkEntityRenderer> getNetworkEntityRenderers()
-
setNetworkEntityRenderers
public void setNetworkEntityRenderers(java.util.Collection<NetworkEntityRenderer> networkEntityRenderers)
-
getNetworkNodeDecorator
public NetworkNodeDecorator getNetworkNodeDecorator()
-
setNetworkNodeDecorator
public void setNetworkNodeDecorator(NetworkNodeDecorator networkNodeDecorator)
-
getOrder
public int getOrder()
- Specified by:
getOrderin interfaceorg.springframework.core.Ordered
-
setOrder
public void setOrder(int order)
-
-