表示工作流的类结构



在java类结构中表示工作流的最佳方式是什么(工作流被视为一系列动作)?让我们假设一个类Workflow包含动作对象。我原以为用LinkedList就可以做到,但这样就没有分支了。

我的目标是表示一个类似于UML活动图的结构,这意味着它也应该可以定义决策、分割和连接。

另一个解决方案是使用BuildingBlocks的LinkedList,它定义了一个接口。然后创建其他类来定义实现此接口的决策和分割或连接(分割和连接可以表示为一个容器,其中包含带有BuildingBlocks的进一步LinkedLists)

你觉得这个想法怎么样,或者你知道更好的解决方案吗?

如果你知道更多的"关键字",我可以用谷歌搜索有关这个主题,请不要犹豫发布他们!

我建议看看微软在实现Windows Workflow Foundation平台时使用的类层次结构(而不是完全重新发明轮子)

源代码是开放供检查的,参见例如http://referencesource.microsoft.com/#System.Activities/System/Activities/Statements/FlowSwitch.cs

他们已经考虑了工作流设计器与图形语言等。

Workflow Foundation平台在Windows操作系统之外是不可用的,正如在相应的Mono项目状态中所说的

所以如果你的目标操作系统是Windows,那么你可以只使用。net。如果你的目标平台不是windows,那么你至少可以考虑一下。c#和Java是复制/粘贴友好的语言。

我会使用某种strategy模式和一些代表Hops的抽象。

interface Hop{
 List<Hop> backwardHops();
 List<Hop> forwardHops();
}
abstract class AbstractHop implements Hop{
 private String name;
 public String getName(){
 return this.name;
 }
} 
class ConcreteHop extends AbstractHop{
  // method implementations
  // to return the available backward and forward hops from this hop 
}
class MyObjectWithCurrentFlow {
 private AbstractHop currentHop;
 // the initial hop or current workflow
 MyObjectWithCurrentFlow(AbstractHop currentHop){
 this.currentHop = currentHop;
 }
 // strategy pattern goes here
 void pushItBackwardOrForward(AbstractHop newHop){
   // check if this hop is a valid hop
   this.currentHop = newHop;
 }
}

相关内容

  • 没有找到相关文章

最新更新