1

私は WODM ルール デザイナー V7.5 を使用しています。私の XOMXSD です

トランザクションの日付を現在の日付と比較する必要があるため、クライアントがトランザクションを行う場合、アカウントの有効期限は 1 年ずつ増加する必要があります。

XOMの日付は文字列なので、BOM のBOM TO XOM MAPPING部分で2 つのメソッドを作成しました。

  • 実際の日付を文字列として返し、次のように言語化します:カレンダーの今日

    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    Date date = new Date();
    String s = dateFormat.format(date);
    return s;
    
  • 文字列を取り、それを日付形式に変換し、年に 1 を加えて、次のように言語化した文字列を返します: {this} NewDate ({0})

    String[] splitdata = d1.split("-");
    int month = Integer.parseInt(splitdata[0]);
    int day = Integer.parseInt(splitdata[1]);
    int year = Integer.parseInt(splitdata[2]);
    Calendar cal = Calendar.getInstance();
    cal.set(year, month, day);
    Date date = cal.getTime();
    date.setYear(date.getYear() + 1);
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    String s = dateFormat.format(date);
    return s;
    

ルールは次のとおりです。

definitions 
set 'variable1' to calendar NewDate (the transaction date of transaction) ; 
if 
    the transaction date of transaction is today on the calendar 
    then 
        set the expiration date of account to variable1 ; 

「2013-05-13」のように取引日を入力します。有効期限変数に「2014-05-13」と期待していましたが、この0181-10-05を取得しました

誰でも助けることができますか?ありがとう。

4

1 に答える 1

2

年が最初のフィールドとして入力され、このフィールドから日付を取得しようとしているため、文字列を分割する方法が間違っています。つまり、フィールドの順序が重要です。

基本的に、コードには以下が含まれている必要があります (インデックスに注意してください)。

int month=Integer.parseInt(splitdata[1]); 
int day=Integer.parseInt(splitdata[2]); 
int year=Integer.parseInt(splitdata[0]);
于 2013-09-25T07:12:36.643 に答える