【问题标题】:Free tool to generate all paths from a diagram从图表生成所有路径的免费工具
【发布时间】:2020-05-27 00:23:32
【问题描述】:

大家下午好,

尽管在网络上进行了大量研究,但我没有找到满足我需求的解决方案。

我需要找到一个免费的工具来对流程进行建模(如 BPMN、UML 活动图)并从图中生成所有可能的路径/组合。

您知道什么工具可以帮助我做到这一点吗?非常感谢。

更新 1

【问题讨论】:

  • 你的意思是这样的吗? youtube.com/watch?v=_WSbOxoa5_U
  • 是的,像这样的工具(使用起来可能不太复杂),它显示了所有可能的路径。
  • 我不知道更简单的工具,抱歉。我只知道这个有提到的功能:jbpm.org 使用当前的 jBPM 7.32.0.Final 和 LEGACY bpmn 设计器来使用这个功能,在 7.33 中旧的设计器将被禁用:(
  • “生成所有可能的路径”是什么意思?是否存在这种格式?
  • @RedBeard 我用一个例子更新了我的问题。我希望它能帮助你理解我的需要。谢谢。路径是指组合。

标签: modeling bpmn model-based-testing


【解决方案1】:

我不确定shell上是否存在这样的工具。我的建议是选择一种建模工具,

  1. 支持您的建模(BPMN、Activity 等),
  2. 可以使用您熟悉的语言(Python、Java、C# 等)进行扩展。

在这种情况下,您肯定会找到几种工具。 为了好玩,我选择了 Modelio (https://www.modelio.org/), 做了一个小活动的例子, 和一个 Jython 脚本。

## return first initial node in the selected activity
def getInitialPoint(act):
   for  node in act.getOwnedNode():
      if isinstance(node, InitialNode):
         return node

## parcours activity nodes
def getPaths(currentPath, currentNode): 
  for outgoing in currentNode.getOutgoing():
    node = outgoing.getTarget()
    if isinstance(node, ActivityFinalNode):
       paths.append(currentPath)
       return;
    elif  isinstance(node, DecisionMergeNode):
       getPaths(currentPath, node)  
    else:           
       getPaths(currentPath + " - "  + node.getName(), node) 

 ##Init
 init = getInitialPoint(elt)
 currentPath = init.getName()
 global paths
 paths = []
 getPaths(currentPath, init)

 ##Print founded paths
 for p in paths:
   print p 

希望对你有帮助, EBR

【讨论】:

  • 非常感谢。您能否确认脚本的结果是:开始 - 动作 - 动作 1 - 结束和开始 - 动作 - 动作 2 - 结束
  • 您的解决方案非常清晰。但是,我的脚本出现错误:AttributeError: 'org.modelio.metamodel.impl.diagrams.ActivityDiagra' object has no attribute 'getOwnedNode' in <script> at line number 20 Traceback (most recent call last): File "<script>", line 20, in <module> File "<script>", line 3, in getInitialPoint AttributeError: 'org.modelio.metamodel.impl.diagrams.ActivityDiagra' object has no attribute 'getOwnedNode'
  • 结果是:开始 - 动作 - 动作 1 和开始 - 动作 - 动作 2 但可以更新为:开始 - 动作 - 动作 1 - 结束和开始 - 动作 - 动作 2 -结束.. 脚本必须从活动元素而不是图表启动。当然,它可以更新为从一个或另一个启动..
  • 结果正是我想要的。哦好的。我将尝试从一个活动元素执行它,并给你我的反馈。谢谢。
猜你喜欢
  • 2012-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-28
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
  • 2017-08-25
相关资源
最近更新 更多