Использование Arraylist в ILOG/ODM для циклического перебора набора записей

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


person user2980176    schedule 10.12.2014    source источник
comment
Что такое сервер приложений и версия ODM?   -  person Devesh    schedule 18.12.2014


Ответы (2)


Да, вы можете использовать массив в правиле XOM и перебирать его в правиле. Предположим, что ваш проект правил использует экземпляр вашего класса 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;
    }
}

Вербализация спецификации:

# 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 "" ;
person uoyilmaz    schedule 11.08.2015

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

Он может быть найден здесь:

Перебор входных параметров

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

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

person Leon Matthews    schedule 10.04.2015