操作工作流引擎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
实现都可以调用该类