public class ExampleChain extends Chain {
@Override
public void withInvokers() {
// Завершите настройку после выполнения третьего шага
}
@Override
public String myName() {
return "example"; // Эта строка должна быть уникальной, чтобы можно было получить соответствующую цепь
}
}
public class ExampleRequestDto extends RequestBaseDto {
// Этот объект используется для передачи параметров обработки цепи
private String param1;
private Object param2;
}
public class ExampleResponseDto extends ResponseBaseDto {
// Этот объект используется для возврата результатов обработки, доступных для всех обработчиков в цепи
private String result1;
@JSONField(format = "yyyy-MM-dd")
private Date result2;
}
public class ExampleInvoker_one extends Invoker<ExampleRequestDto, Response> {
@Override
public Response invoke0(ExampleRequestDto request, Response tResponse) {
ExampleResponseDto response = super.getLastResponse(tResponse, ExampleResponseDto.builder().build());
// Конкретная логика обработки
do something
После обработки вы можете решить, следует ли прервать текущую цепь.
Если вы хотите прервать, верните
return tResponse.end(true, response);
Если вы хотите продолжить, верните
return tResponse.end(false, response);
}
}
public class ExampleChain extends Chain {
@Override
public void withInvokers() {
invoker = new ExampleInvoker_one();
if у этой цепи есть два или более обработчика, используйте setNext для добавления обработчиков
invoker.setNext(new ExampleInvoker_two());
invoker.setNext(new ExampleInvoker_three());
...
}
@Override
public String myName() {
return "example";
}
}
// Создание параметров и вызов цепи:
ExampleRequestDto requestDto = ExampleRequestDto.builder().param1("параметр1").param2("параметр2").build();
Response<ExampleResponseDto> resp = (Response) Chain.newChain("example").invoke(Request._Request(requestDto));
// Получение результата
ExampleResponseDto respDto = resp.getResponse();
5.2 Асинхронный вызов с обратным вызовом для результата: Чтобы избежать блокировки основного потока во время выполнения, используйте Task для асинхронного вызова и получения результата, не блокируя основной поток.
// Создание параметров, сначала получение задачи цепи в основном потоке
ExampleRequestDto requestDto = ExampleRequestDto.builder().param1("параметр1").param2("параметр2").build();
ResponseAsyn<ExampleResponseDto> resp = (ResponseAsyn) Chain.newChain("example").withSync().invoke(Request._Request(requestDto));
// Основной поток продолжает выполнение
// Основная логика потока...
// Когда необходимо получить результат цепи, вызовите метод обратного вызова для получения результата (необходимо передать время ожидания [секунды], чтобы избежать длительного времени обработки цепи и влияния на бизнес)
ExampleResponseDto responseDto = resp.getResponse(3);
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )