Базовое администрирование > Поддержка совместной работы > Администрирование рабочих процессов > Инструменты рабочего процесса > Администрирование шаблонов рабочего процесса > Примеры кодов рабочего процесса > Примеры робота выполнения выражений > Атрибуты основного бизнес-объекта как переменные рабочего процесса > Изменение атрибутов с помощью переменных рабочего процесса (Set)
  
Изменение атрибутов с помощью переменных рабочего процесса (Set)
В этом разделе приводится пример использования переменных рабочего процесса и узла робота выполнения выражений для изменения атрибута основного бизнес-объекта. Это полезно при отсутствии у участника разрешений на непосредственное изменение объекта, который является предметом назначенного участнику задания.
Описание
Для получения и задания значения атрибута основного бизнес-объекта в зависимости от значения переменной рабочего процесса в назначенной задаче используется API-интерфейс PersistableAdapter. Значение переменной рабочего процесса является производным от ввода пользователя в задании.
Инструкции
Используется следующая процедура верхнего уровня.
1. В шаблоне рабочего процесса создайте одну или несколько переменных на уровне процесса. Эти переменные будут представлять атрибуты основного бизнес-объекта, которые нужно изменить. Выберите для переменной Наименование типа (тип данных) значение int, boolean или java.lang.string. Убедитесь, что переменные являются видимыми и сбрасываемыми.
Дополнительные сведения о свойствах процесса, включая переменные, см. в разделах Вкладка "Переменные" и Определение переменных рабочего процесса.
2. На вкладке Переменные узла задачи для назначенного задания создайте переменные задачи, которые инициализируются из переменных уровня процесса и копируются в переменные уровня процесса, созданные на предыдущем шаге. Эти переменные используются для данных ввода пользователя - чтобы получить значения, которые затем копируются в переменные на уровне процесса.
3. Создание робота выполнения выражения. На вкладке Выражение введите код, который обновит атрибуты основного бизнес-объекта с помощью переменной рабочего процесса, значения которой получены путем ввода данных пользователем в назначенной задаче. Пример кода выражения см. в следующем разделе.
Пример кода выражения
В приведенном ниже примере кода имеется четыре переменных со следующими внутренними наименованиями (отображаются в утилите управления типами данных), наименованиями переменных и типами данных:
Внутреннее наименование атрибута
Наименование переменной рабочего процесса
Тип данных
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();
}