51 lines
1.3 KiB
Markdown
51 lines
1.3 KiB
Markdown
# 使用场景
|
|
|
|
凡是**异步且对延迟时间不敏感的任务**一律使用工单,如果不确定则向用户询问是否要使用工单。
|
|
|
|
## 前置条件
|
|
|
|
请先在编写代码的模块,检查是否存在`WorkSheetHandler.java`或者`SimpleWorkSheet.java`类,若存在则直接使用工单,不存在则不使用工单。
|
|
|
|
## 使用案例
|
|
|
|
调用方使用`tryOrderCreate`方法,遇到异常将自动处理重试逻辑。
|
|
|
|
```java
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
@Slf4j
|
|
@Component
|
|
@RequiredArgsConstructor
|
|
public class WorksheetExample implements SimpleWorkSheet {
|
|
|
|
private final WorkSheetHandler workSheetHandler;
|
|
|
|
public void tryOrderCreate(String taskId, ExampleDTO param) {
|
|
try {
|
|
createOrder(param);
|
|
} catch (Exception e) {
|
|
log.error("do_something_err", e);
|
|
workSheetHandler.putObjectParam(getWorkCode(), taskId, param);
|
|
}
|
|
}
|
|
|
|
private void createOrder(ExampleDTO param) {
|
|
// do something
|
|
}
|
|
|
|
@Override
|
|
public String getWorkCode() {
|
|
return "ORDER_CREATE";
|
|
}
|
|
|
|
@Override
|
|
public Object execute(WorkSheetEntity workSheet) {
|
|
createOrder(workSheet.readBeanParam(ExampleDTO.class));
|
|
return null;
|
|
}
|
|
|
|
}
|
|
``` |