code: @Process(actionType = InitBatch.class)
      public void init(final Dispatcher.Channel channel) {
          List<ModelNode> steps = new ArrayList<>();
          steps.add(readResourceOp(BATCH_ADDRESS));
          steps.add(readResourceOp(THREAD_POOL_ADDRESS));
          steps.add(readResourceOp(JOB_REPOSITORY_ADDRESS));
          steps.add(readThreadFactoriesOp());
  
          final ModelNode comp = new ModelNode();
          comp.get(ADDRESS).setEmptyList();
          comp.get(OP).set(COMPOSITE);
          comp.get(STEPS).set(steps);
  
          dispatcher.execute(new DMRAction(comp), new AsyncCallback<DMRResponse>() {
              @Override
              public void onFailure(Throwable caught) {
                  channel.nack(caught);
              }
  
              @Override
              public void onSuccess(DMRResponse dmrResponse) {
                  ModelNode response = dmrResponse.get();
                  if (response.isFailure()) {
                      channel.nack(new RuntimeException("Failed to initialize batch store using " + comp + ": " +
                              response.getFailureDescription()));
                  } else {
                      ModelNode result = response.get(RESULT);
                      ModelNode stepResult = result.get("step-1");
                      if (stepResult.get(RESULT).isDefined()) {
                          batch = stepResult.get(RESULT);
                      }
                      stepResult = result.get("step-2");
                      if (stepResult.get(RESULT).isDefined()) {
                          threadPool = stepResult.get(RESULT);
                      }
                      stepResult = result.get("step-3");
                      if (stepResult.get(RESULT).isDefined()) {
                          jobRepository = stepResult.get(RESULT);
                      }
                      stepResult = result.get("step-4");
                      if (stepResult.get(RESULT).isDefined()) {
                          threadFactories.clear();
                          threadFactories.addAll(stepResult.get(RESULT).asPropertyList());
                      }
                      channel.ack();
                  }
              }
          });
      }
docs: ------------------------------------------------------ process methods