Загрузка атрибутов в выражении ветвления (Get)
Значения атрибутов можно загрузить с помощью метода Get API-интерфейса PersistableAdapter и использовать в шаблоне рабочего процесса маршрутизации. В следующем примере загружаются значения атрибутов основного бизнес-объекта и используются в выражении ветвления для узла соединителя Or в шаблоне рабочего процесса маршрутизации.
Описание
С помощью API-интерфейса PersistableAdapter загружается значение атрибута основного бизнес-объекта, которое должно использоваться в переменной рабочего процесса назначенного задания.
Инструкции
Используется процедура, содержащая следующие действия.
1. Добавьте узел соединителя Или.
2. В свойствах соединителя укажите следующее:
a. В разделе Тип ветвления выберите Условный.
b. В поле Управляющие события введите наименование одного или нескольких пользовательских событий (включите несколько записей в отдельных строках).
c. В поле Выражение ветвления/подсчета введите код выражения ветвления для выбора управляющего события в соответствии со значениями атрибутов основного бизнес-объекта. Щелкните Проверить синтаксис, чтобы убедиться в правильности синтаксиса выражения. Пример кода выражения ветвления см. в следующем разделе.
d. Нажмите кнопку ОК, чтобы закрыть окно Свойства условного соединителя.
3. Создайте узел задачи для каждого управляющего события.
4. Создайте связь с процессом для каждого управляющего события, которое связывает условный узел со связанным узлом задачи. В свойствах связи с процессом укажите действие Начать рядом с применимым управляющим событием в разделе Событие в условии.
5. Закончите шаблон рабочего процесса соответствующим образом.
Пример кода выражения ветвления
В приведенном ниже примере кода используется четыре управляющих события, зависящих от значений четырех атрибутов основного бизнес-объекта. Для получения значений атрибутов основного бизнес-объекта в выражении используется API-интерфейс PersistableAdapter. Затем каждое значение преобразуется в переменную, которая вычисляется в выражении для выбора управляющего события. В следующей таблице для всех атрибутов перечислены внутренние наименования атрибутов основного бизнес-объекта (как отображается в утилите "Управление типами данных"), наименования переменных, типы данных и связанное управляющее событие.
Внутреннее наименование атрибута
Наименование переменной рабочего процесса
Тип данных
Связанное управляющее событие
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);
}
Было ли это полезно?