2016-11-12 2 views
0

Я создаю условия, как следующее:Drools - двойное количество

$event : EventObject(type=='Sale', $points:points, $playerid:playerid) from 
entry-point eventstream 

Последствием этого мне нужно передать переменные на следующее:

boolean givePointsToPlayer(String playerId, 
         String pointType, 
         double amount, 
         String notificationMessage) 

Самый простой пример ниже я даю 3 балла этому игроку

updateAPIv1.givePointsToPlayer($playerid, 'Points', 3, 'Points Awarded'); 
update(engine.getPlayerById($playerid)); 

Тем не менее, я хочу передать $ points: points to 'double amount'.

Простой вопрос, который я знаю, но как бы я мог это сделать? Что-то вроде?

$points=double amount; 
updateAPIv1.givePointsToPlayer($playerid, 'Points', amount, 'Points Awarded'); 
update(engine.getPlayerById($playerid));; 

Оцените обратную связь. Благодарю.

*** Обновление Я попытался также

$event : EventObject(type=='Sale', $points:points, $playerid:playerid) 
      from entry-point eventstream  

updateAPIv1.givePointsToPlayer($playerid, 'Points', $points, 'Points Awarded'); 
update(engine.getPlayerById($playerid));  

, но я получаю следующие ошибки для этого

"Unable to create Field Extractor for 'points' 
    Field/method 'points' not found for class 'com.sap.gamification.model.EventObject" 
    "Rule Compilation error $points cannot be resolved " 

Любые мысли по этому поводу?

ответ

0

Вы должны очень быстро догнать синтаксис Java, так как это недопустимый оператор.

$points=double amount; 

Однако, вам не нужно хранить значение связанной переменной ($points) другой переменной в следствие. Вы можете написать этот вызов:

updateAPIv1.givePointsToPlayer($playerid, 'Points', $points, 'Points Awarded'); 

Думайте переменные, связанные с фактически полями, как «конечным» переменными: вы можете получить доступ к значению, но не изменить его.

Редактировать Это предполагает, что у вас есть:

public class EventObject { 
    private double points; 
    public double getPoints(){ return points; } 
    // ... rest of class 
} 
+0

спасибо за ответ. Я пробовал это, и это не сработало, например: $ event: EventObject (type == 'Sale', $ points: points, $ playerid: playerid) из entry-point eventstreamupdateAPIv1.givePointsToPlayer ($ playerid, 'Points', $ points, 'Points Awarded'); update (engine.getPlayerById ($ playerid)); – MacAodh

+0

См. Обновление выше – MacAodh

+0

См. Редактирование моего ответа. – laune