gpt4 book ai didi

java - 操作工作流引擎Java API

转载 作者:太空宇宙 更新时间:2023-11-04 12:07:09 26 4
gpt4 key购买 nike

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

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 中那就太棒了

要结束这个问题,看起来像 https://github.com/spring-projects/spring-statemachine是解决方案

最佳答案

重构此问题的一个选择是将操作从每种情况以及 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 实现调用

关于java - 操作工作流引擎Java API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40242072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com