Primo RPA
Search…
Кастомные свойства
Для создания свойств, отображаемых в палитре Свойства элемента Primo Studio, необходимо произвести следующие действия:
  1. 1.
    Создать свойство
1
private string prop1;
2
3
[LTools.Common.Model.Serialization.StoringProperty]
4
[LTools.Common.Model.Studio.ValidateReturnScript(DataType = typeof(string))]
5
[System.ComponentModel.Category("SDK"), System.ComponentModel.DisplayName("My Prop 1")]
6
public string Prop1
7
{
8
get { return this.prop1; }
9
set { this.prop1 = value; this.InvokePropertyChanged(this, "Prop1"); }
10
}
11
Copied!
В данном примере мы создаем свойство Prop1
Атрибут StoringProperty отвечает за то, что значение свойства будет сохранено в файле процесса
Атрибут ValidateReturnScript не обязателен и служит для проверки синтаксиса скрипта свойства. Значение данного атрибута – тип данных, который может быть присвоен данному свойству. В примере это строка. Если при создании сценария пользователь введет значение с типом, отличным от строки, Студия покажет ошибку. Если данный атрибут отсутствует, Студия не будет проверять тип данных свойства
Атрибут Category отвечает за имя группы, содержащую данное свойство в палитре Свойств Студии
Атрибут DisplayName отвечает за имя свойства, отображаемое в палитре Свойства Студии
2. Добавление свойства в палитру свойств
1
sdkProperties = new List<LTools.Common.Helpers.WFHelper.PropertiesItem>()
2
{
3
new LTools.Common.Helpers.WFHelper.PropertiesItem()
4
{
5
PropName = "Prop1",
6
PropertyType = LTools.Common.Helpers.WFHelper.PropertiesItem.PropertyTypes.SCRIPT,
7
EditorType = ScriptEditorTypes.NONE,
8
DataType = typeof(string), ToolTip = "SDK Tooltip1", IsReadOnly = false
9
}
10
};
11
Copied!
Добавление производится в конструкторе до вызова метода InitClass. Свойство имеет следующие параметры:
PropName – имя свойства
PropertyType – тип редактора свойства. Доступны варианты SCRIPT – редактор скрипта, VARIABLE – выбор переменной, OBJECT – автоматический (например для перечислений), CUSTOM – пользовательский (на данный момент не реализован в рамках SDK)
DataType – тип данных свойства
ToolTip – текст всплывающей подсказки
IsReadOnly – признак только для чтения
3. Задание значения по умолчанию (не обязательно)
1
this.Prop1 = this.IsNoCode("Prop1") ? "test text" : "\"test text\"";
Copied!
В данном примере, свойству будет присвоено значение test text, если включен режим No-code, либо значение “test text”, при выключенном No-code.
Значение по умолчанию задается после вызова метода InitClass
1
public PrimoElementBack(IWFContainer container) : base(container)
2
{
3
sdkComponentName = "My sync element";
4
sdkComponentHelp = "This is my first sync element";
5
sdkComponentIcon = "pack://application:,,/Primo.SDKSample;component/Images/sample.png";
6
sdkProperties = new List<LTools.Common.Helpers.WFHelper.PropertiesItem>()
7
{
8
new LTools.Common.Helpers.WFHelper.PropertiesItem()
9
{
10
PropName = "Prop1",
11
PropertyType = LTools.Common.Helpers.WFHelper.PropertiesItem.PropertyTypes.SCRIPT,
12
EditorType = ScriptEditorTypes.NONE,
13
DataType = typeof(string), ToolTip = "SDK Tooltip1", IsReadOnly = false
14
}
15
};
16
InitClass(container);
17
this.Prop1 = this.IsNoCode("Prop1") ? "test text" : "\"test text\"";
18
}
19
Copied!
Получение значения кастомного свойства
При выполнении бизнес-логики, безусловно необходимо получить значение, содержащееся в свойстве. Для этой цели служит синтаксис:
1
string p1 = GetPropertyValue<string>(this.Prop1, "Prop1", sd);
Copied!
,где первый параметр – само свойство, второй – имя свойства.
Например, элемент, выводящий окно сообщение с введенным текстом будет иметь следующий синтаксис:
1
public override ExecutionResult SimpleAction(ScriptingData sd)
2
{
3
try
4
{
5
string p1 = GetPropertyValue<string>(this.Prop1, "Prop1", sd);
6
System.Windows.MessageBox.Show(p1);
7
return new ExecutionResult() { SuccessMessage = "Done" };
8
}
9
catch (Exception ex)
10
{
11
return new ExecutionResult() { IsSuccess = false, ErrorMessage = ex?.Message };
12
}
13
}
14
Copied!
Copy link