Не работает, когда () в сервисной имитации службы json -rp c BusinessProcessManagementImpl в Spring Boot - PullRequest
0 голосов
/ 04 февраля 2020

Не работает, когда () в сервисном макете json -rp c BusinessProcessManagementImpl при загрузке Spring

Тест

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
public class BusinessProcessManagementServiceImplTest {

    @LocalServerPort
    int randomServerPort;

    @Mock
    BusinessProcessManagementServiceImpl businessProcessManagement;

    @Before
    public void before() {
        SbtProcessInstance sbtProcessInstance = new SbtProcessInstance();
        sbtProcessInstance.setId("sdfsdf");
        when(businessProcessManagement.startProcess(any(), anyString())).thenReturn(sbtProcessInstance);
    }

    @Test
    public void test() throws Throwable {
        URL url = new URL("http://localhost:" + randomServerPort + "/businessProcessManagement");
        JsonRpcRestClient client = new JsonRpcRestClient(url);
        Map<String, Object> params = new HashMap<>();

        SbtProcessDefinition sbtProcessDefinition = new SbtProcessDefinition();
        sbtProcessDefinition.setId("processTest");
        Message message = new Message();
        message.setName("TestMessage");
        DataObjectWrapper data = new DataObjectWrapper();
        Map<String, Object> inData = new HashedMap();
        inData.put("inn", "123123123");
        data.setObjectData(inData);
        message.setData(data);

        params.put("process", sbtProcessDefinition);
        params.put("globalInstanceId", "123456");

        Long result = client.invoke("startProcess", params, Long.class);
        System.out.println(result);
    }
}

Сервис

@JsonRpcService("/businessProcessManagement")
public interface BusinessProcessManagementService {

    SbtProcessInstance startProcess(@JsonRpcParam(value = "process") SbtProcessDefinition process,
                                    @JsonRpcParam(value = "globalInstanceId") String globalInstanceId);

    SbtProcessInstance startProcessWithMessage(@JsonRpcParam(value = "process") SbtProcessDefinition process,
                                               @JsonRpcParam(value = "globalInstanceId") String globalInstanceId,
                                               @JsonRpcParam(value = "message") Message message);

    void sendMessage(@JsonRpcParam(value = "instanceId") String instanceId,
                     @JsonRpcParam(value = "message") Message message);

    void sendResponse(@JsonRpcParam(value = "instanceId") String instanceId,
                      @JsonRpcParam(value = "correlationId") String correlationId,
                      @JsonRpcParam(value = "data") DataObjectWrapper data);

    UserTaskWrapper startUserTask(@JsonRpcParam(value = "userTaskId") String userTaskId);

    void completeUserTask(@JsonRpcParam(value = "userTaskId") String userTaskId,
                          @JsonRpcParam(value = "data") DataObjectWrapper data);
}

ServiceImpl

@Service
@AutoJsonRpcServiceImpl
public class BusinessProcessManagementServiceImpl implements BusinessProcessManagementService {

    private final BusinessProcessManagementImpl businessProcessManagement;

    public BusinessProcessManagementServiceImpl(BusinessProcessManagementImpl businessProcessManagement) {
        this.businessProcessManagement = businessProcessManagement;
    }

    @Override
    public SbtProcessInstance startProcess(SbtProcessDefinition process, String globalInstanceId) {
        return businessProcessManagement.startProcess(process, globalInstanceId);
    }

    @Override
    public SbtProcessInstance startProcessWithMessage(SbtProcessDefinition process, String globalInstanceId, Message message) {
        return businessProcessManagement.startProcessWithMessage(process, globalInstanceId, message);
    }

    @Override
    public void sendMessage(String instanceId, Message message) {
        businessProcessManagement.sendMessage(instanceId, message);
    }

    @Override
    public void sendResponse(String instanceId, String correlationId, DataObjectWrapper data) {
        businessProcessManagement.sendResponse(instanceId, correlationId, data);
    }

    @Override
    public UserTaskWrapper startUserTask(String userTaskId) {
        return businessProcessManagement.startUserTask(userTaskId);
    }

    @Override
    public void completeUserTask(String userTaskId, DataObjectWrapper data) {
        businessProcessManagement.completeUserTask(userTaskId, data);
    }
}

Этот проект построен с Maven. Обязательно проверьте pom. xml на наличие зависимостей, если вы не используете maven. Если вы уже используете Spring, у вас должно быть большинство (если не все) зависимостей - за исключением, возможно, библиотеки Джексона. Jsonrpc4j доступен из центрального репозитория Maven. Добавьте следующее в ваш pom. xml, если вы используете maven:

In:

<!-- jsonrpc4j -->
<dependency>
    <groupId>com.github.briandilley.jsonrpc4j</groupId>
    <artifactId>jsonrpc4j</artifactId>
    <version>1.5.3</version>
</dependency>

Если вы хотите просто загрузить выходной JAR-файл проекта и его зависимости, вы можете сделать это в хранилище Maven.

...