基本管理 > 支援協同合作 > 工作流程管理 > 工作流程工具 > 工作流程範本管理 > 工作流程程式碼範例 > 執行運算式自動機制範例 > PBO 屬性作為工作流程變數 > 使用工作流程變數 (Set) 修改屬性
  
使用工作流程變數 (Set) 修改屬性
此主題提供了一個使用工作流程變數與「執行運算式」自動機制節點來修改主要企業物件屬性的範例。如果參與者沒有直接修改屬於其指派任務主旨之物件的權限,這會很有用。
描述
PersistableAdapter API 可用來根據已指派活動的工作流程變數取得及設定 PBO 屬性值。工作流程變數值衍生自任務中的使用者輸入。
指示
會使用下列高層級程序:
1. 在工作流程範本中,建立一或多個流程層級變數。這些變數代表您想要修改的 PBO 屬性。選取 int、boolean 或 java.lang.string 的「類型名稱」(資料類型)。確保變數「可見」且「可重設」。
如需有關製程內容 (包括變數) 的詳細資訊,請參閱變數標籤定義工作流程變數
2. 在所指派任務活動節點的「變數」標籤中,建立初始化自的活動變數,並複製到您在之前步驟中建立的流程層級變數中。這些變數可用來取得使用者輸入,以取得之後會複製到流程層級變數中的值。
3. 建立「執行運算式」自動機制。在「運算式」標籤中輸入會以工作流程變數更新 PBO 屬性的程式碼,其值可透過指派活動時的使用者輸入獲得。如需運算式程式碼範例,請參閱下一節。
運算式程式碼範例
在下面的程式碼範例中,有使用下列內部名稱 (如「類型管理員」中所示)、變數名稱與資料類型的四個變數:
屬性內部名稱
工作流程變數名稱
資料類型
StringAttribute
StringAttributeVariable
java.lang.String
BooleanAttribute
BooleanAttributeVariable
布林值
DateAttribute
DateAttributeVariable
java.lang.String
IntegerAttribute
IntegerAttributeVariable
int
* 
下列範例也提供有關如何從字串資料類型設定 DateAttribute 值格式的指示。
wt.part.WTPart part = (wt.part.WTPart)primaryBusinessObject;
//Get check out folder for the current user in the session
wt.folder.Folder checkoutFolder = wt.vc.wip.WorkInProgressHelper.service.getCheckoutFolder();
//Check out object
wt.vc.wip.CheckoutLink chklink = wt.vc.wip.WorkInProgressHelper.service.checkout(part, checkoutFolder, "Check out comment");
wt.part.WTPart wrk = (wt.part.WTPart) chklink.getWorkingCopy();
System.out.println("\nChecked out WTPart ......"+wrk.getName()+"\t"+wrk.getCheckoutInfo());
com.ptc.core.lwc.server.PersistableAdapter pbo = new com.ptc.core.lwc.server.PersistableAdapter(wrk, null, null, null);
System.out.println("\nGot pbo...."+pbo.toString());
pbo.load("StringAttribute","BooleanAttribute","DateAttribute","IntegerAttribute");
System.out.println("Loading Attributes");
System.out.println("StringAttribute : "+pbo.get("StringAttribute"));
System.out.println("BooleanAttribute : "+pbo.get("BooleanAttribute"));
System.out.println("DateAttribute : "+pbo.get("DateAttribute"));
System.out.println("IntegerAttribute : "+pbo.get("IntegerAttribute"));
pbo.set("StringAttribute", StringAttributeVariable);
pbo.set("BooleanAttribute", BooleanAttributeVariable);
pbo.set("IntegerAttribute", new java.lang.Long(IntegerAttributeVariable));
//Date attribute is more complex
java.text.DateFormat df = java.text.DateFormat.getDateInstance(java.text.DateFormat SHORT);
String tempDate= DateAttributeVariable;
java.util.Date objectDate = df.parse(tempDate);
pbo.set("DateAttribute", new java.sql.timestamp(objectDate.gettime()));

wt.fc.Persistable p = pbo.apply();
//Modify attributes
wt.fc.PersistenceHelper manager.modify(p);
try
{
// Check in object
wt.vc.wip.WorkInProgressHelper.service.checkin((wt.vc.wip.Workable) p, "Check in comment");
}
catch (wt.util.WTException e)
{
e.printStackStrace();
}
catch (wt.util.WTPropertyVetoException e)
{
e.printStackTrace();
}