ルーティング定義式での属性の取得 (Get)
PersistableAdapter API の Get メソッドを使用して属性値を取得し、ルーティングワークフローテンプレートで使用できます。次の例では、プライマリビジネスオブジェクトから属性値を取得し、これらをルーティングワークフローテンプレートの Or コネクタノードのルーティング定義式で使用しています。
説明
PersistableAdapter API を使用して、割り当てられたアクティビティのワークフロー変数で使用される PBO 属性の値を取得します。
指示
次の手順を使用します。
1. OR コネクタノードを追加します。
2. コネクタのプロパティで、以下を指定します。
a. 「ルーティングタイプ」で、「条件付き」を選択します。
b. 「ルーティングイベント」フィールドで、1 つ以上のカスタムイベントの名前を入力します (それぞれのエントリを改行して入力します)。
c. 「ルーティング/集計定義式」フィールドに、PBO 属性の値に基づいてルーティングイベントを選択するルーティング定義式のコードを入力します。「構文チェック」をクリックして、定義式の構文が正しいことを確認してください。ルーティング定義式のコード例については、次のセクションを参照してください。
d. 「OK」をクリックして「条件付きプロパティ」ウィンドウを閉じます。
3. 各ルーティングイベントのアクティビティノードを作成します。
4. 条件付きノードを関連するアクティビティノードにリンクするプロセスリンクを各ルーティングイベントに作成します。プロセスのリンクプロパティの「条件付きでのイベント」で、該当するルーティングイベントの横で「開始」操作を指定します。
5. ワークフローテンプレートを適宜完成させます。
ルーティング定義式のコード例
以下のコード例には、4 つの PBO 属性の値に基づいた 4 つのルーティングイベントがあります。この定義式では PersistableAdapter API を使用して PBO 属性の値を取得しています。各値は変数に変換された後、ルーティングイベントを選択する定義式で評価されます。(タイプマネージャに表示される) PBO 属性の内部名、変数名、データタイプ、各属性に関連するルーティングイベントを次の表に示します。
属性の内部名
ワークフローの変数名
データタイプ
関連するルーティングイベント
StringAttribute
stringVar
java.lang.String
StringMatch
BooleanAttribute
booleanVar
boolean
BooleanMatch
DateAttribute
dateVar
java.lang.String
DateMatch
IntegerAttribute
integerVar
int
IntegerMatch
* 
次の例では、DateAttribute の値を、文字列のデータ型から日付形式に変換するコードに注意してください。
wt.part.WTPart part = (wt.part.WTPart)primaryBusinessObject;
com.ptc.core.lwc.server.PersistableAdapter obj = new
com.ptc.core.lwc.server.PersistableAdapter(part,null,null,null);
obj.load("BooleanAttribute","DateAttribute","IntegerAttribute","StringAttribute");
// Retriving Boolean Attribute
Boolean booleanVar = (boolean)obj.get ("BooleanAttribute");
System.out.println("booleanVar = "+booleanVar);
// Retriving String Attribute
String stringVar = (String) obj.get ("StringAttribute");
System.out.println("stringVar = "+stringVar);
// Retriving Integer Attribute
Long integerVar = new java.lang.Long ((java.lang.Long)obj.get ("IntegerAttribute"));
System.out.println("integerVar = "+integerVar);
// Retriving Date Attribute
java.text.DateFormat df = java.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT);
java.sql.Timestamp tempDate = (java.sql.Timestamp)obj.get ("DateAttribute");
java.util.Date dateVar = new java.util.Date(tempDate.getTime());
System.out.println("dateVar = "+dateVar);
java.util.Date today = new java.util.Date();
System.out.println("today = "+today );
if (booleanVar)
{
result="BooleanMatch";
System.out.println("result = "+result);
}
else if(today.compareTo(dateVar) == 0)
{
result = "DateMatch";
System.out.println("result = "+result);
}
else if (integerVar == 123)
{
result= "IntegerMatch";
System.out.println("result = "+result);
}
else if (stringVar.equalsIgnoreCase ("test"))
{
result = "StringMatch";
System.out.println("result = "+result);
}
これは役に立ちましたか?