Загрузка атрибутов в выражении ветвления (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);
}