- リリース ノート
- 概要
- 基本情報
- Marketplace ベンダー
- Marketplace のお客様
- パブリッシング ガイドライン
- すぐに使えるオートメーションのパブリッシング ガイドライン
- ソリューション アクセラレータの公開ガイドライン
- Integration Service コネクタの公開ガイドライン
- セキュリティと IP 保護
- その他の UiPath コンポーネント
- Node-RED
- セットアップ
- Teams
- Microsoft Teams Scope
- Create Team
- チームをグループから作成する
- Get Team
- Get Teams
- Channels
- チャンネルを作成
- Delete Channel
- Get Channel
- Get Channels
- Update Channel
- Chats
- Get Chat
- Get Chats
- Get Chat Members
- Messages
- Get Message
- メッセージを取得
- Get Message Replies
- Reply To Message
- メッセージを送信
- イベント
- イベント/予定を作成
- イベント/予定を削除
- Get Event
- Get Events
- ユーザー
- Get User Presence
- 動作のしくみ
- テクニカル リファレンス
- はじめに
- 概要
- セットアップ
- テクニカル リファレンス
- Azure Form Recognizer Scope
- アクティビティ
- Analyze Form
- Analyze Form Async
- Get Analyze Form Result
- Analyze Receipt
- Analyze Receipt Async
- Get Analyze Receipt Result
- Analyze Layout
- Analyze Layout Async
- Get Analyze Layout Result
- Train Model
- Get Models
- モデル のキーを取得
- Get Model Info
- Delete Model
- コネクタ
- How to Create Activities
- 連携の独自開発
デザイナー ファイル
Intro
アクティビティ定義ファイルだけで完全なアクティビティを作成することもできますが、デザイナーまたは UI を追加することで、ユーザー エクスペリエンスはほぼ常に向上します。 デザイナーは XAML ベースの言語 (詳しくはこちらをご覧ください)で書かれ、Windows Presentation Foundation (WPF) アプリケーションのフロントエンドの作成に使用されます。
ChildActivityDesigner.xaml ファイルに移動して、UI でアクティビティを強化する方法を理解しやすいように、セクションごとに説明します。
<sap:ActivityDesigner x:Class="MyCompany.MyProduct.Activities.Design.ChildActivityDesigner"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
xmlns:converters="clr-namespace:UiPath.Shared.Activities.Design.Converters">
<a href="sap:ActivityDesigner.Resources">sap:ActivityDesigner.Resources</a>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\)\)Themes\)\)Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
<converters:ActivityIconConverter x:Key="ActivityIconConverter" />
</ResourceDictionary>
</sap:ActivityDesigner.Resources>
<a href="sap:ActivityDesigner.Icon">sap:ActivityDesigner.Icon</a>
<DrawingBrush Stretch="Uniform" Drawing="{Binding Path=ModelItem, Converter={StaticResource ActivityIconConverter}, ConverterParameter=pack://application:\)\),\)\),\)\),/MyCompany.MyProduct.Activities.Design;component/themes/icons.xaml}" />
</sap:ActivityDesigner.Icon>
</sap:ActivityDesigner>
<sap:ActivityDesigner x:Class="MyCompany.MyProduct.Activities.Design.ChildActivityDesigner"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
xmlns:converters="clr-namespace:UiPath.Shared.Activities.Design.Converters">
<a href="sap:ActivityDesigner.Resources">sap:ActivityDesigner.Resources</a>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\)\)Themes\)\)Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
<converters:ActivityIconConverter x:Key="ActivityIconConverter" />
</ResourceDictionary>
</sap:ActivityDesigner.Resources>
<a href="sap:ActivityDesigner.Icon">sap:ActivityDesigner.Icon</a>
<DrawingBrush Stretch="Uniform" Drawing="{Binding Path=ModelItem, Converter={StaticResource ActivityIconConverter}, ConverterParameter=pack://application:\)\),\)\),\)\),/MyCompany.MyProduct.Activities.Design;component/themes/icons.xaml}" />
</sap:ActivityDesigner.Icon>
</sap:ActivityDesigner>
すべてのデザイナーには、クラスが宣言され、名前空間のサプリメンタルがインポートされるトップレベルのコンポーネントが 1 つ含まれています。 この例では、このようなすべてのコンポーネントの基本クラスである ActivityDesigner クラスを拡張しています。
<sap:ActivityDesigner x:Class="MyCompany.MyProduct.Activities.Design.ChildActivityDesigner"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
xmlns:converters="clr-namespace:UiPath.Shared.Activities.Design.Converters">
<sap:ActivityDesigner x:Class="MyCompany.MyProduct.Activities.Design.ChildActivityDesigner"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
xmlns:converters="clr-namespace:UiPath.Shared.Activities.Design.Converters">
xmlns:<prefix>
を取得します。 これらのプレフィックスは、後でファイルで役立つコンポーネントを参照するために使用されます。
リソース とは、再利用可能なコンポーネント、スタイル、または XAML ファイル内でリソース 検証 コンポーネントを介して利用可能にされるデータです。 この例では、2 種類のリソースが提供されています。スタイルのディクショナリ (Generic.xaml) です。 変換コンポーネント (ActivityIconConverter) と、
<a href="sap:ActivityDesigner.Resources">sap:ActivityDesigner.Resources</a>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\)\)Themes\)\)Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
<converters:ActivityIconConverter x:Key="ActivityIconConverter" />
</ResourceDictionary>
</sap:ActivityDesigner.Resources>
<a href="sap:ActivityDesigner.Resources">sap:ActivityDesigner.Resources</a>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\)\)Themes\)\)Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
<converters:ActivityIconConverter x:Key="ActivityIconConverter" />
</ResourceDictionary>
</sap:ActivityDesigner.Resources>
-
Generic.xaml は、デザイナーの外観の一貫性を保つのに役立つ標準の UiPath スタイルを含む別の
ResourceDictionary
です。 このファイル内を参照すると、次のスタイルが表示されます。これは、すべてのComboBox
オブジェクトの標準の高さを設定します。 XAML ファイルにこのディクショナリを含まれているため、すべてのコンボ ボックスの既定の高さは 23px になります。<Style TargetType="{x:Type ComboBox}"> <Setter Property="Height" Value="23" /> </Style>
<Style TargetType="{x:Type ComboBox}"> <Setter Property="Height" Value="23" /> </Style> -
ActivityIconConverter は Shared フォルダーを介して提供されるユーティリティ クラスで、すべてのアクティビティアイコンを標準的な方法で指定できます。 詳しくは、以下の「アイコン」セクションをご覧ください。
すべての UiPath アクティビティで見られるアイコンのように、XAML 形式のデザイナー ファイルに直接追加することもできますが、それらを 1 つの専用のファイルに追加し、前述の ActivityIconConverter を使用して各アクティビティにプルするのが推奨されます。 この方法では、メイン デザイナー ファイルに多くの場合、アイコン コードが整理されないままです。
デザイン プロジェクト内で、[Themes > Icons.xaml] に移動します。
x:Key
属性であり、フォームを <Activity Name>Icon
します。子アクティビティのアイコン コードは、例えば次のような形式です。
<DrawingBrush x:Key="ChildActivityIcon" Viewbox="0,0,52.706,14.497" ViewboxUnits="Absolute" Stretch="Uniform">
...
</DrawingBrush>
<DrawingBrush x:Key="ChildActivityIcon" Viewbox="0,0,52.706,14.497" ViewboxUnits="Absolute" Stretch="Uniform">
...
</DrawingBrush>
ConverterParameter
がデザイナー プロジェクトを名前で参照している点にご注意ください。
<a href="sap:ActivityDesigner.Icon">sap:ActivityDesigner.Icon</a>
<DrawingBrush Stretch="Uniform" Drawing="{Binding Path=ModelItem, Converter={StaticResource ActivityIconConverter}, ConverterParameter=pack://application:\)\),\)\),\)\),/MyCompany.MyProduct.Activities.Design;component/themes/icons.xaml}" />
</sap:ActivityDesigner.Icon>
<a href="sap:ActivityDesigner.Icon">sap:ActivityDesigner.Icon</a>
<DrawingBrush Stretch="Uniform" Drawing="{Binding Path=ModelItem, Converter={StaticResource ActivityIconConverter}, ConverterParameter=pack://application:\)\),\)\),\)\),/MyCompany.MyProduct.Activities.Design;component/themes/icons.xaml}" />
</sap:ActivityDesigner.Icon>
コンポーネントを追加する
今回のリリースではデザイナーの権限を持つようになったものの、まだ設定は空白です。 このフィールドを展開するために、子アクティビティの各入力に 1 つずつ、2 つのテキスト フィールドを追加します。
ActivityDecoratorControl
を追加します。 Visual Studio では UiPath.Shared.Activities.Design.Controls
名前空間のインポートを求めることがありますが、インポート可能でない場合は、ファイルの先頭のクラス定義にも追加します。
<sap:ActivityDesigner x:Class="MyCompany.MyProduct.Activities.Design.ChildActivityDesigner"
...
xmlns:controls="clr-namespace:UiPath.Shared.Activities.Design.Controls">
<?comment-start?>
Resources
<?comment-end?>
<?comment-start?>
Icons
<?comment-end?>
<controls:ActivityDecoratorControl Style="{StaticResource ActivityDecoratorStyle}">
</controls:ActivityDecoratorControl>
</sap:ActivityDesigner>
<sap:ActivityDesigner x:Class="MyCompany.MyProduct.Activities.Design.ChildActivityDesigner"
...
xmlns:controls="clr-namespace:UiPath.Shared.Activities.Design.Controls">
<?comment-start?>
Resources
<?comment-end?>
<?comment-start?>
Icons
<?comment-end?>
<controls:ActivityDecoratorControl Style="{StaticResource ActivityDecoratorStyle}">
</controls:ActivityDecoratorControl>
</sap:ActivityDesigner>
ActivityDecoratorControl
にラップする必要があります。これにより、大きなデザイナーを最小化してメッセージ「ダブルクリックして表示する」をその場に表示するなど、標準的な動作が可能です。 以下のような詳細情報は小さいものの、組み合わせて、アクティビティ パッケージ全体に UiPath の操作性を与えます。
パッケージをリビルドすると、パッケージがわずかに異なって表示されます。
次に、ラベルやテキスト フィールドを魅力的な方法で表示できるようにアクティビティのレイアウトを設定します。 WPFには 6つの主要なレイアウトがありますが、今後はグリッドパネルを使用してコントロールを保持します。 グリッドは、まず複数の行と列をそれぞれ、その高さと幅とともに定義することによって機能します。 まず、2 つの行と 2 つの列を定義します。
<controls:ActivityDecoratorControl Style="{StaticResource ActivityDecoratorStyle}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
</Grid>
</controls:ActivityDecoratorControl>
<controls:ActivityDecoratorControl Style="{StaticResource ActivityDecoratorStyle}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
</Grid>
</controls:ActivityDecoratorControl>
RowDefinition
の高さはどちらも *
ので、存在する分だけ垂直空間が消費されます。ただし、 ColumnDefinition
の幅は *
3*
、最初の列は幅に沿って利用可能な空白の 25% を消費し、2 番目の列は 75% の空白を消費します。
これでレイアウトが設定されました。子アクティビティの 2 つの入力プロパティ ([1 つ目の数値] と [2 つ目の数値]) にユーザーがアクセスできるテキストボックスを 2 つ追加します。 最初の数値のグリッド定義の後に ラベル を追加することから始めます。
Label
には、3 つのプロパティが設定されています。
- Grid.Row: 上で定義したグリッドの最初の行にラベルを配置します。
- Grid.Column: 上で定義したグリッドの最初の列にラベルを配置します。
- Content: ラベルに表示されるテキストを設定します。
WPF 要素で使用できるプロパティの完全なリストについては、こちらをご覧ください 。
<Grid>
<?comment-start?>
Grid definitions
<?comment-end?>
<Label Grid.Row="0" Grid.Column="0"
Content="First Number" />
</Grid>
<Grid>
<?comment-start?>
Grid definitions
<?comment-end?>
<Label Grid.Row="0" Grid.Column="0"
Content="First Number" />
</Grid>
次に、ユーザー入力を許可する 式テキスト ボックス を追加します。 Visual Studio から要求されない場合は、クラス定義にさらに 2 つの名前空間を手動で追加する必要があります。
xmlns:view="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation"
xmlns:system="clr-namespace:System;assembly=mscorlib"
xmlns:view="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation"
xmlns:system="clr-namespace:System;assembly=mscorlib"
ExpressionTextBox
には 4 つのプロパティが設定されています。
- Grid.Row: 上で定義したグリッドの最初の行にラベルを配置します。
- Grid.Column: 上で定義したグリッドの 2 番目 の列にラベルを配置します。
- HintText: テキストボックスが空の場合、およびユーザーがこのフィールド上でホバーしたときにテキスト ボックスに表示されるツールチップ テキストを設定します。
-
ExpressionType: このフィールドで許可されるデータ型を設定します。このプロパティは
int
型の数値であるため、Int32
に設定します。<Grid> <?comment-start?> Grid definitions <?comment-end?> <Label Grid.Row="0" Grid.Column="0" Content="First Number" /> <view:ExpressionTextBox Grid.Row="0" Grid.Column="1" HintText="The first addend" ExpressionType="system:Int32" /> </Grid>
<Grid> <?comment-start?> Grid definitions <?comment-end?> <Label Grid.Row="0" Grid.Column="0" Content="First Number" /> <view:ExpressionTextBox Grid.Row="0" Grid.Column="1" HintText="The first addend" ExpressionType="system:Int32" /> </Grid>
パッケージをリビルドすると次のようになります。
Label
と ExpressionTextBox
を追加します。これらのコントロールが Grid.Row="1"
されます。 最終的な結果は次のようになります。
String
入力がサポートされている場所で、ExpressionTextBoxes を使用すると、複雑な VB.Net 式 (例: Int32.MaxValue
、 2+2
、 SomeUiPathVariable
) で、この値をアクティビティ内のプロパティにバインドできます。
ExpressionTextBox
に 2 つのプロパティを追加します。
- OwnerActivity: デザイナーがアクティビティ ファイルにリンクするために使用する ViewModel を指定します。ここでは、常に ModelItem を指定します。
- Expression: このフィールドをバインドするアクティビティのプロパティを指定します。主なコンポーネントが 4 つあります。
- Binding: バインドするアクティビティ プロパティを名前で指定します。
ModelItem
にアクティビティのコンテンツが保持されている場合、ModelItem.FirstNumber
は First Number プロパティに直接リンクします。 - Converter: 異なる型のオブジェクトを変換するクラスを提供します。 この場合、デザイナー フィールドには
int
が保持されますが、アクティビティプロパティはInArgument<int>
型であるため、それらの間のバインドを処理する標準のArgumentToExpressionConverter
を追加します。 - ConverterParameter: このフィールドをバインドする引数の型を指定します。 この場合、
InArgument<>
プロパティにバインドするため、ConverterParameter はIn
されますが、InOut
とOut
もオプションです。 - Mode: デザイナーのフィールドの変更によってアクティビティのプロパティの更新がトリガーされるか (またはその逆も可能) を指定します。これを
TwoWay
に設定すると、ユーザーはデザイナー、またはプロパティのいずれかを更新できます。その他すべてのオプションについては、こちらをご覧ください。
ResourceDictionary
に次の行を追加し、クラス定義に clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation
名前空間をインポートして、 ArgumentToExpressionConverter
をインポートします。
<converters1:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" />
<converters1:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" />
子アクティビティ デザイナーとコードはすべて、すべて以下のように表示されます。 各フィールドに値を入力し、対応するプロパティがどのように更新されるかを確認します。
<sap:ActivityDesigner x:Class="MyCompany.MyProduct.Activities.Design.ChildActivityDesigner"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
xmlns:converters="clr-namespace:UiPath.Shared.Activities.Design.Converters"
xmlns:converters1="clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation"
xmlns:controls="clr-namespace:UiPath.Shared.Activities.Design.Controls"
xmlns:view="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation"
xmlns:system="clr-namespace:System;assembly=mscorlib">
<a href="sap:ActivityDesigner.Resources">sap:ActivityDesigner.Resources</a>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\)\)Themes\)\)Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
<converters1:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" />
<converters:ActivityIconConverter x:Key="ActivityIconConverter" />
</ResourceDictionary>
</sap:ActivityDesigner.Resources>
<a href="sap:ActivityDesigner.Icon">sap:ActivityDesigner.Icon</a>
<DrawingBrush Stretch="Uniform" Drawing="{Binding Path=ModelItem, Converter={StaticResource ActivityIconConverter}, ConverterParameter=pack://application:\)\),\)\),\)\),/MyCompany.MyProduct.Activities.Design;component/themes/icons.xaml}" />
</sap:ActivityDesigner.Icon>
<controls:ActivityDecoratorControl Style="{StaticResource ActivityDecoratorStyle}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0"
Content="First Number" />
<view:ExpressionTextBox Grid.Row="0" Grid.Column="1"
OwnerActivity="{Binding Path=ModelItem}"
ExpressionType="system:Int32"
HintText="The first addend"
Expression="{Binding Path=ModelItem.FirstNumber,Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=In, Mode=TwoWay}" />
<Label Grid.Row="1" Grid.Column="0"
Content="Second Number" />
<view:ExpressionTextBox Grid.Row="1" Grid.Column="1"
OwnerActivity="{Binding Path=ModelItem}"
ExpressionType="system:Int32"
HintText="The second addend"
Expression="{Binding Path=ModelItem.SecondNumber,Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=In, Mode=TwoWay}" />
</Grid>
</controls:ActivityDecoratorControl>
</sap:ActivityDesigner>
<sap:ActivityDesigner x:Class="MyCompany.MyProduct.Activities.Design.ChildActivityDesigner"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
xmlns:converters="clr-namespace:UiPath.Shared.Activities.Design.Converters"
xmlns:converters1="clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation"
xmlns:controls="clr-namespace:UiPath.Shared.Activities.Design.Controls"
xmlns:view="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation"
xmlns:system="clr-namespace:System;assembly=mscorlib">
<a href="sap:ActivityDesigner.Resources">sap:ActivityDesigner.Resources</a>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="..\)\)Themes\)\)Generic.xaml" />
</ResourceDictionary.MergedDictionaries>
<converters1:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" />
<converters:ActivityIconConverter x:Key="ActivityIconConverter" />
</ResourceDictionary>
</sap:ActivityDesigner.Resources>
<a href="sap:ActivityDesigner.Icon">sap:ActivityDesigner.Icon</a>
<DrawingBrush Stretch="Uniform" Drawing="{Binding Path=ModelItem, Converter={StaticResource ActivityIconConverter}, ConverterParameter=pack://application:\)\),\)\),\)\),/MyCompany.MyProduct.Activities.Design;component/themes/icons.xaml}" />
</sap:ActivityDesigner.Icon>
<controls:ActivityDecoratorControl Style="{StaticResource ActivityDecoratorStyle}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0"
Content="First Number" />
<view:ExpressionTextBox Grid.Row="0" Grid.Column="1"
OwnerActivity="{Binding Path=ModelItem}"
ExpressionType="system:Int32"
HintText="The first addend"
Expression="{Binding Path=ModelItem.FirstNumber,Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=In, Mode=TwoWay}" />
<Label Grid.Row="1" Grid.Column="0"
Content="Second Number" />
<view:ExpressionTextBox Grid.Row="1" Grid.Column="1"
OwnerActivity="{Binding Path=ModelItem}"
ExpressionType="system:Int32"
HintText="The second addend"
Expression="{Binding Path=ModelItem.SecondNumber,Converter={StaticResource ArgumentToExpressionConverter}, ConverterParameter=In, Mode=TwoWay}" />
</Grid>
</controls:ActivityDecoratorControl>
</sap:ActivityDesigner>