在路由運算式 (Get) 中擷取屬性
您可以使用 PersistableAdapter API Get 方法來擷取要在路由工作流程範本中使用的屬性值。下列範例會從主要企業物件中擷取屬性值,並在路由工作流程範本之 Or 連接器節點的路由運算式中使用這些屬性值。
描述
PersistableAdapter API 可擷取要在已指派活動的工作流程變數中使用的 PBO 屬性值。
指示
會使用下列程序:
1. 新增「或」連接器節點。
2. 在連接器內容中,指定下列項目:
a. 在「路由類型」下,選取「條件式」。
b. 在「路由事件」欄位下,輸入一或多個自訂事件的名稱 (包括個別行上的多個項目)。
c. 在「Routing/Tallying 運算式」欄位中,輸入根據 PBO 屬性值選取路由事件的路由運算式程式碼。按一下「檢查語法」,以確保您的運算式語法正確。如需路由運算式程式碼範例,請參閱下一節。
d. 按一下「確定」以關閉「條件式內容」視窗。
3. 為每個路由事件建立活動節點。
4. 為每個路由事件建立流程連結來連結條件式節點與相關聯的活動節點。在流程連結內容中,在「條件中的事件」下適用的路由事件旁指定「開始」動作。
5. 在適當的情況下結束您的工作流程範本。
路由運算式程式碼範例
在如下所示的程式碼範例中,有四個路由事件,其以四個 PBO 屬性的值為基礎。運算式使用 PersistableAdapter API 來取得 PBO 屬性的值。然後會將每個值轉換為會在運算式中評估以選取路由事件的變數。下表列出了 PBO 屬性內部名稱 (如「類型管理員」中所示)、變數名稱、資料類型,以及每個屬性的相關聯路由事件:
屬性內部名稱 | 工作流程變數名稱 | 資料類型 | 相關聯的路由事件 |
---|
StringAttribute | stringVar | java.lang.String | StringMatch |
BooleanAttribute | booleanVar | 布林值 | 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);
}