2014-12-10 2 views
1

У меня есть требование перебирать набор записей и сравнивать дату начала в каждой записи с текущей датой и выводить сообщение в части действия правила , Я пытаюсь выяснить, могу ли я использовать arraylist в правиле ILOG/ODM XOM и использовать его в правиле для циклического набора записей. Можете ли вы предложить мне лучший способ реализовать это требование.Использование Arraylist в ILOG/ODM для прокрутки набора записей

+0

Что такое сервер приложений и ODM версии? – JSR

+0

Версия ODM - 8.1 – user2980176

ответ

0

В разделе «Итерирование по входным параметрам» вы можете следовать инструкциям в блогах ODM на developerWorks.

Его можно найти здесь:

Iterating over Input Parameters

В основном вы собираетесь виртуальный метод для ArrayList, чтобы получить запись в частности, индекс цикла. Виртуальный метод будет выдавать запись перед ее возвратом, но оттуда вы должны иметь возможность выполнять любое правило для этого объекта.

Обратите внимание, что вы не можете использовать ArrayList в качестве входного параметра для Dynamic XOM, но вы можете использовать Arrays для входного параметра с Java XOM.

1

Да, вы можете использовать arraylist в правиле XOM и перебирать его в правиле. Предположим, что ваш проект правил принимает экземпляр вашего класса XOM в качестве входного параметра с помощью вербализации «test». У вас будет что-то вроде ниже.

XOM:

import java.util.Calendar; 
import java.util.Date; 
import java.util.List; 

public class Test 
{ 
    private List<Record> recordList; 

    public Test() 
    { 
    } 

    public void setRecordList(List<Record> recordList) 
    { 
     this.recordList = recordList; 
    } 

    public List<Record> getRecordList() 
    { 
     return recordList; 
    } 

    public static int compareWithCurrentDate(Date date) 
    { 
     Calendar cal = Calendar.getInstance(); 
     cal.setTime(date); 
     return cal.compareTo(Calendar.getInstance()); 
    } 
} 


import java.util.Date; 

public class Record 
{ 
    private Date startDate; 

    public Record() 
    { 
    } 

    public void setStartDate(Date startDate) 
    { 
     this.startDate = startDate; 
    } 

    public Date getStartDate() 
    { 
     return startDate; 
    } 
} 

BOM вербализация:

# Record 
Record#concept.label = record 
Record.startDate#phrase.action = set the start date of {this} to {start date} 
Record.startDate#phrase.navigation = {start date} of {this} 

# Test 
Test#concept.label = test 
Test.compareWithCurrentDate(java.util.Date)#phrase.navigation = compare {0} with current date 
Test.recordList#phrase.action = set the record list of {this} to {record list} 
Test.recordList#phrase.navigation = {record list} of {this} 

Правило:

definitions 
    set 'current record' to a record in the record lists of test ; 
if 
    compare the start date of 'current record' with current date is not 0 
then 
    print "" ;