İfade Adımı - Voodoo RPA

by onezero
2 sene ago
500 Views

İçindekiler Tablosu


İfade Adımı Geliştirme Klavuzu

VooDoo Studio senaryo geliştirme sırasında kullanılan bir çok adım içeren zengin bir altyapıya sahiptir. Arayüz, sistem, e-posta gibi çeşitli kategorilerde sınıflandırılabilen bu adımlar hızlı, rahat ve konforlu bir geliştirme ortamı sunarlar.

Bununla birlikte, bazen sistemde bulunmayan bir özelliğin süreçlerde kullanılması veya mevcut bir özelliğin özelleştirilmesi gerekebilir. Bu durumda VooDoo Studio’da bulunmayan bir adım, geliştirilerek kolay bir şekilde VooDoo tasarım arayüzüne entegre edilebilir ve süreçlerde robotlar tarafından kullanılabilir. Bu yetenek ifade adımı ile gerçekleştirilmektedir.

VooDoo Studio açıldığında kullanılabilecek ifade adımlarının xml formatında bir dosyadan okur. Bu dosyaya eklenen adımlar her adım gezginin deki arama özellikleri içerisinden hem de ifade adımı içerisinden erişilerek kullanılabilir. Bu aşamada bir adımı VooDoo’ya eklemek için gerçekleştirilmesi gerekenler aşağıda sıra ile anlatılmaktadır.

1. İfade XML Dosyasının Açıklaması

C:\Voodoo\Client\CodeBase\CodeSnippet dizini altında expression.xml dosyasında ifade adımları tutulmaktadır. İnternetten indirilen yeni ifadeler bu dosya üzerine yazıldığı için bu dosyaya yapılan eklemelerin daha sonra üzerine yazılması mümkündür. Dolayısı ile bu dosya üzerinde değişiklik yapmadan önce ve yaptıktan sonra yedek alınması önerilmektedir.

2. İfade Grubunun Eklenmesi

Eklenecek adım yeni veya mevcut bir gruba ait olabilir. Eğer yeni bir gruba aitse, öncelikle grubun dosyaya eklenmesi gerekir. Bunun için veriler aşağıdaki xml formatına uygun bir şekilde <ExpressionGroups> boğumu altına eklenir.

<DataScenarioExpressionGroup>
    <Name></Name>
    <LabelTr></LabelTr>
    <LabelEng></LabelEng>
</DataScenarioExpressionGroup>  

Buradaki alanlar aşağıdaki anlama gelmektedir.

Alan Açıklama
Name Grubun adı. Bu isim daha sonra ifade tanımlanırken grubunu belirtmek için kullanılır.
LabelTr Grup VooDoo Studio arayüzünde gösterilirken kullanılacak türkçe açıklamadır.
LabelEng Grup VooDoo Studio arayüzünde gösterilirken kullanılacak ingilizce açıklamadır.
3. İfadenin Eklenmesi

İfade ile ilgili verilen aşağıdaki xml formatına uygun bir şekilde <ExpressionSnippets> boğumu altına eklenir.

<DataScenarioExpressionSnippet>
    <Name>...</Name>
    <GroupName>...</GroupName>
    <LabelTr>...</LabelTr>
    <LabelEng>...</LabelEng>
    <DevLanguageId>...</DevLanguageId>
    <LstParameters>
        <DataScenarioExpressionSnippetParameter>
            <Name>...</Name>
            <LabelTr>...</LabelTr>
            <LabelEng>...</LabelEng>
            <ControlType>...</ControlType>
            <BoundDataType>...</BoundDataType>
            <NameOfParametersToUpdateOnChange>...</NameOfParametersToUpdateOnChange>
        </DataScenarioExpressionSnippetParameter>
    </LstParameters>
    <UserCodeTemplate>...</UserCodeTemplate>
</DataScenarioExpressionSnippet>
3.1. İfade Grubunun Eklenmesi

İfadenin genel bilgileri ifadenin adı, arayüzde gösterilecek isim vb. gibi bilgileri içermektedir.

Alan Açıklama
Name İfadenin adı.
GroupName İfadenin ait olduğu grubun “Name” özelliği.
LabelTr İfadenin türkçe arayüzde kullanılan adı. Bu isim aramalarda ve ifade adımında kullanıldığından, adımın yapacağı işlemi ayıt edici bir şekilde ifade etmelidir. “Dosya kopyalama” gibi.
LabelEng İfadenin ingilizce arayüzde kullanılan adı.
DevLanguageId İfadenin geliştirildiği programlama dili. Önceden tanımlı değerlerden oluşur.
CSharp : C# için kullanılır.
3.2. İfade İle Parametrelerin Eklenmesi

İfade çalıştırılırken parametre kullanıyor ise <LstParameters> nodu altında tanımlanır. Birden fazla parametre kullanılıyor ise alt alta eklenir.

Alan Açıklama
Name Parametrenin adı.
LabelTr Parametrenin türkçe arayüzde kullanılan adı. Bu isim parametrenin girileceği kontrolün yanındaki etikette görüntülenir.
LabelEng Parametrenin ingilizce arayüzde kullanılan adı.
ControlType Parametrenin girişi sırasında kullanılacak kontrol tipi. Önceden tanımlı değerlerden oluşur.

TextBox Metin kutusu
DropDownList Aşağı açılan liste
SelectFileTextBox Dosya seçim diyalog kutusu
SelectDirectoryTextBox Dizin seçim diyalog kutusu
Password Şifre giriş metin kutusu
BoundDataType Aşağı açılan liste gibi veri bağlama özelliği olan bir kontrol tipi ControlType alanında seçildiğinde, listelenecek veriyi tanımlar. Önceden tanımlı değerlerden oluşur.

None Veri bağlama yok
Custom Özel tanımlanan veri
DataSource Veri kaynağı
DataField Veri kaynağına ait veri alanı
NumericComparisonOperator Sayısal karşıllaştırma işlemcileri
TextComparisonOperator Metin karşılaştırma işlemcileri
TrueFalse Doğru yanlış
YesNo Evet hayır
InputParameterType_DS_St_SnPar Senaryo parametreleri
NameOfParametersToUpdateOnChange Eğer ilgili parametre değiştiğinde başka bir parametrenin içeriğinin güncellenmesi gerekiyor ise bu alana o parametrenin adı yazılır. Örnek olarak veri kaynağı değiştiğinde veri alanı listesi güncellenerek o veri kaynağının veri alanları listelenir.
3.3. İfade İle Kodun Eklenmesi

İfade çalıştırıldığında çalışması gereken kod <UserCodeTemplate> boğumu içerisine eklenir.

Kod içerisinde kullanıcının seçtiği bir parametre değerinin kullanılması gerekebilir. Bu durumda \$parametreadi.Value\$ parametrenin değerini, \$parametreadi.Text\$ metin değerini koda ekler.

<DataScenarioExpressionSnippet>
    <Name>FileCopy</Name>
    <GroupName>File</GroupName>
    <LabelTr>Kopyala</LabelTr>
    <LabelEng>Copy</LabelEng>
    <DevLanguageId>CSharp</DevLanguageId>
    <LstParameters>
        <DataScenarioExpressionSnippetParameter>
            <Name>P1_ParameterType</Name>
            <LabelTr>Kaynak Dosya Parametresi</LabelTr>
            <LabelEng>Source File Parameter</LabelEng>
            <ControlType>DropDownList</ControlType>
            <BoundDataType>InputParameterType_DS_St_SnPar</BoundDataType>
            <NameOfParametersToUpdateOnChange>
                    P2_DataSource;P3_DataField;P4_StaticValue;P5_SnParValue
            </NameOfParametersToUpdateOnChange>
        </DataScenarioExpressionSnippetParameter>
        <DataScenarioExpressionSnippetParameter>
            <Name>P2_DataSource</Name>
            <LabelTr>Veri Kaynağı</LabelTr>
            <LabelEng>Data Source</LabelEng>
            <ControlType>DropDownList</ControlType>
            <BoundDataType>DataSource</BoundDataType>
            <NameOfParametersToUpdateOnChange>P3_DataField</NameOfParametersToUpdateOnChange>
        </DataScenarioExpressionSnippetParameter>
        <DataScenarioExpressionSnippetParameter>
            <Name>P3_DataField</Name>
            <LabelTr>Veri Alanı</LabelTr>
            <LabelEng>Data Field</LabelEng>
            <ControlType>DropDownList</ControlType>
            <BoundDataType>DataField</BoundDataType>
        </DataScenarioExpressionSnippetParameter>
        <DataScenarioExpressionSnippetParameter>
            <Name>P4_StaticValue</Name>
            <LabelTr>Değer</LabelTr>
            <LabelEng>Value</LabelEng>
            <ControlType>SelectFileTextBox</ControlType>
            <BoundDataType>None</BoundDataType>
        </DataScenarioExpressionSnippetParameter>
        <DataScenarioExpressionSnippetParameter>
            <Name>P5_SnParValue</Name>
            <LabelTr>Sen. Parametre</LabelTr>
            <LabelEng>Scn. Parameter</LabelEng>
            <ControlType>TextBox</ControlType>
            <BoundDataType>None</BoundDataType>
        </DataScenarioExpressionSnippetParameter>
        <DataScenarioExpressionSnippetParameter>
            <Name>P6_ParameterType</Name>
            <LabelTr>Hedef Dosya Parametresi</LabelTr>
            <LabelEng>Destination File Parameter</LabelEng>
            <ControlType>DropDownList</ControlType>
            <BoundDataType>InputParameterType_DS_St_SnPar</BoundDataType>
            <NameOfParametersToUpdateOnChange>
                P7_DataSource;P8_DataField;P9_StaticValue;P10_SnParValue
            </NameOfParametersToUpdateOnChange>
        </DataScenarioExpressionSnippetParameter>
        <DataScenarioExpressionSnippetParameter>
            <Name>P7_DataSource</Name>
            <LabelTr>Veri Kaynağı</LabelTr>
            <LabelEng>Data Source</LabelEng>
            <ControlType>DropDownList</ControlType>
            <BoundDataType>DataSource</BoundDataType>
            <NameOfParametersToUpdateOnChange>P8_DataField</NameOfParametersToUpdateOnChange>
        </DataScenarioExpressionSnippetParameter>
        <DataScenarioExpressionSnippetParameter>
            <Name>P8_DataField</Name>
            <LabelTr>Veri Alanı</LabelTr>
            <LabelEng>Data Field</LabelEng>
            <ControlType>DropDownList</ControlType>
            <BoundDataType>DataField</BoundDataType>
        </DataScenarioExpressionSnippetParameter>
        <DataScenarioExpressionSnippetParameter>
            <Name>P9_StaticValue</Name>
            <LabelTr>Değer</LabelTr>
            <LabelEng>Value</LabelEng>
            <ControlType>SelectFileTextBox</ControlType>
            <BoundDataType>None</BoundDataType>
        </DataScenarioExpressionSnippetParameter>
        <DataScenarioExpressionSnippetParameter>
            <Name>P10_SnParValue</Name>
            <LabelTr>Sen. Parametre</LabelTr>
            <LabelEng>Scn. Parameter</LabelEng>
            <ControlType>TextBox</ControlType>
            <BoundDataType>None</BoundDataType>
        </DataScenarioExpressionSnippetParameter>
        <DataScenarioExpressionSnippetParameter>
            <Name>P11_Overwrite</Name>
            <LabelTr>Üstüne yaz</LabelTr>
            <LabelEng>Overwrite</LabelEng>
            <ControlType>DropDownList</ControlType>
            <BoundDataType>TrueFalse</BoundDataType>
        </DataScenarioExpressionSnippetParameter>
    </LstParameters>
    <UserCodeTemplate>
string sourceFilePath = "";
if("\$P1_ParameterType.Value\$" == "DataSource")
    sourceFilePath = planDataInstanceManager.GetDataTableValueFromCurrentDataRowIndex(\$P2_DataSource.Value\$, "\$P3_DataField.Text\$").ToString();
else if("\$P1_ParameterType.Value\$" == "Constant")
    sourceFilePath = @"\$P4_StaticValue.Text\$";
else if("\$P1_ParameterType.Value\$" == "ScenarioParameter")
    result_ = planDataInstanceManager.GetParameter("\$P5_SnParValue.Text\$", ref sourceFilePath);
if(!result_)
    throw new ArgumentException("Scenario source parameter does not exist : \$P5_SnParValue.Text\$ ");

string destFilePath = "";
if("\$P6_ParameterType.Value\$" == "DataSource")
    destFilePath = planDataInstanceManager.GetDataTableValueFromCurrentDataRowIndex(\$P7_DataSource.Value\$, "\$P8_DataField.Text\$").ToString();
else if("\$P6_ParameterType.Value\$" == "Constant")
    destFilePath = @"\$P9_StaticValue.Text\$";
else if("\$P6_ParameterType.Value\$" == "ScenarioParameter")
    result_ = planDataInstanceManager.GetParameter("\$P10_SnParValue.Text\$", ref destFilePath);
if(!result_)
    throw new ArgumentException("Scenario destination parameter does not exist : \$P10_SnParValue.Text\$ ");

bool overwrite = false;
if("\$P11_Overwrite.Value\$" == "1")
    overwrite = true;

System.IO.File.Copy(sourceFilePath, destFilePath, overwrite);
    </UserCodeTemplate>
</DataScenarioExpressionSnippet>