Как правильно реализовать функции в модели прикладного программирования (APM) - PullRequest
0 голосов
/ 17 декабря 2018

Следуя инструкциям на этом сайте ( Реализация функций ), я пытаюсь реализовать функцию в своем сервисе.

Я вызываю импорт функций из приложения UI5

_sGetActiveStatus: "GetActiveStatus"

oThis.getModel().callFunction(
            "/" + oThis._sGetActiveStatus, {
                method: "GET",
                urlParameters: {
                    ExternalID: sExternalId,
                    StartDate: oThis._oViewModel.getProperty(
                        "/MondayDate"),
                    EndDate: oThis._oViewModel.getProperty("/FridayDate")
                },
                success: function (oData, response) {
                    console.log(oData);
                },
                error: function (oError) {
                    console.log(oError);
                }
            });

В классе Java:

@Function(serviceName = "myService", Name = "GetActiveStatus")
public OperationResponse getActiveStatus(OperationRequest functionRequest) {
    System.out.println("==> Calling the backend OData V2 service - Get ActiveStatus");
    ExpressionBuilderImpl builder = new ExpressionBuilderImpl();
    // Retrieve the parameters of the function from the
    // OperationRequest object
    Map<String, Object> params = functionRequest.getParameters();

    try {
        List<EntityData> productsList = new ArrayList<>();
        String productID = (String) params.get("ExternalID");
        System.out.println("==> Class of StartDate: " + params.get("StartDate").getClass());
        System.out.println("==> StartDate: " + params.get("StartDate"));
        // LocalDateTime startDate = (LocalDateTime) params.get("StartDate");
        System.out.println("==> Class of EndDate: " + params.get("EndDate").getClass());
        System.out.println("==> EndDate: " + params.get("EndDate"));
        // LocalDateTime endDate = (LocalDateTime) params.get("EndDate");

        // EntityData sampleProduct = fetchData(productID);

        // Add the retrieved entity data to a products list
        // productsList.add(sampleProduct);

        // Return an instance of OperationResponse in the case of a
        // successful fetch of product data
        return OperationResponse.setSuccess().setEntityData(productsList).response();

    } catch (Exception e) {
        // Return an instance of OperationResponse containing the error in
        // case of failure
        ErrorResponse errorResponse = ErrorResponse.getBuilder().setMessage(e.getMessage()).setCause(e).response();

        return OperationResponse.setError(errorResponse);
    }
}

Файл CDS:

service myService {@cds.persistence.skip entity ActiveDate {key PersonExternalID: String(12);
IsSatActive : Boolean;
IsSunActive : Boolean;
IsMonActive : Boolean;
IsTueActive : Boolean;
IsWedActive : Boolean;
IsThuActive : Boolean;
IsFriActive : Boolean;}; function GetActiveStatus(ExternalID:String(12), StartDate:Date, EndDate:Date) returns ActiveDate;}

Однако при вызове функции импорта появляется ошибка.

{"error":{"code":"501","message":{"lang":"en-GB","value":"Not implemented"}}}

Я вижу, что имя моей функции одинаково в пользовательском интерфейсе, а также в Java и CDS.Как я могу решить это?Tri

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...