Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
操作工作流引擎javaapi_Java_Workflow - Fatal编程技术网

操作工作流引擎javaapi

操作工作流引擎javaapi,java,workflow,Java,Workflow,这是我一直在做的第二个面临同样问题的项目。如何正确处理业务对象状态的进展?到目前为止,我们使用了一个基本开关/外壳: public void pushTransferToStatus(Long id, Status status) { // SOME PRECONDITIONS switch (currentStatus) { case OPEN: // DO SOMETHING bre

这是我一直在做的第二个面临同样问题的项目。如何正确处理业务对象状态的进展?到目前为止,我们使用了一个基本开关/外壳:

public void pushTransferToStatus(Long id, Status status) {
     // SOME PRECONDITIONS

     switch (currentStatus) {
            case OPEN:
                // DO SOMETHING
                break;
            case SAVED:
                // DO SOMETHING ASYNC
                break;
            case VALIDATED:
                // DO SOMETHING
                break;
            case AWAITING_SHIPPING:
               // DO SOMETHING
                break;
            case VERIFIED:
                // DO SOMETHING
                break;
            case CLOSED:
                // Exit case.
                break;
            default:
                throw new UnsupportedOperationException();
        }
        pushTransferToStatus(id, newStatus);
}
这导致了意大利面代码,正如您所看到的,我要执行一个aync操作。我想知道是否有某种高级API可以帮助我处理这个简单工作流的进程

我读了很多关于jBPM的书,但我不确定它是否适合我的需要。。。谢谢你的帮助

到目前为止,我发现这些都很简单,但是如果能够将一些东西集成到Eclipse中,那就太棒了


要解决这个问题,看起来解决方案是重构的一个选项,这将是将操作从每个案例以及
pushTransferToStatus
移动到Status的子类中。 每种情况都需要一个子类:

abstract class Status {
  abstract void apply(Long id);
}

class StatusOpen extends Status {
  void apply(Long id) {
    // DO SOMETHING
  }
}

...

public void pushTransferToStatus(Long id, Status status) {
  // SOME PRECONDITIONS
  status.apply(id);
}

根据
pushTransferToStatus
的性质,您可能可以在抽象类
Status
中实现其中的一部分,每个
Status
-implementation

都可以调用,重构的一个选项是将操作从每个案例以及
pushTransferToStatus
移动到Status的子类中。 每种情况都需要一个子类:

abstract class Status {
  abstract void apply(Long id);
}

class StatusOpen extends Status {
  void apply(Long id) {
    // DO SOMETHING
  }
}

...

public void pushTransferToStatus(Long id, Status status) {
  // SOME PRECONDITIONS
  status.apply(id);
}
根据
pushTransferToStatus
的性质,您可能可以在抽象类
Status
中实现部分,每个
Status
实现都可以调用该类