- 概要
- カスタム アクティビティ
- アクティビティを .NET 6 に移行する
- リリース ノート
- Building Workflow Analyzer Rules
- アクティビティ プロジェクト設定の構成
- カスタム ウィザードの作成
- スコープによるアクティビティの優先度設定
- UiPath.Activities.Api.Base
- UiPath.Studio.Activities.Api
- UiPath.Studio.Activities.Api.Activities
- UiPath.Studio.Activities.Api.BusyService
- UiPath.Studio.Activities.Api.ExpressionEditor
- UiPath.Studio.Activities.Api.Expressions
- UiPath.Studio.Activities.Api.Licensing
- UiPath.Studio.Activities.Api.Mocking
- UiPath.Studio.Activities.Api.ObjectLibrary
- UiPath.Studio.Activities.Api.PackageBindings
- UiPath.Studio.Activities.Api.ProjectProperties
- UiPath.Studio.Activities.Api.ScopedActivities
- UiPath.Studio.Activities.Api.Settings
- UiPath.Studio.Activities.Api.Wizards
- UiPath.Studio.Activities.Api.Workflow
- UiPath.Studio.Api.Controls
- UiPath.Studio.Api.Telemetry
- UiPath.Studio.Api.Theme
- Robot JavaScript SDK
- トリガー SDK
コードを使用してアクティビティを作成する (レガシ)
カスタム アクティビティを作成するための 2 つの主要な手順は以下のとおりです。
- カスタム アクティビティコードを記述します。
- UiPath に外部アセンブリ (.dll) を追加します。
カスタム アクティビティを作成するには、次のコンポーネントが必要です。
- Microsoft Visual Studio 。 .NET デスクトップ開発 ワークロードがインストールされている。
- NuGet Package Explorer。
カスタム アクティビティのコードの書き方をよりよく理解するために、ユーザーに 2 つの数字を求め、合計の四角形を出力する単純なアクティビティを作成してみましょう。
- Microsoft Visual Studio を起動します。
- [ファイル] > [新規] > [プロジェクト] をクリックします (ショートカット: Ctrl + Shift + N キー)。[新しいプロジェクト] ウィンドウが表示されます。
- [ 言語 ] ドロップダウン メニューから [ C# ] を選択します。C# を使用するすべての依存関係のリストが表示されます。
- [クラス ライブラリ (.NET Framework)] を選択します。これは、カスタム アクティビティを
.dll
ファイルとしてエクスポートする場合に役立ちます。 [ 次へ ] をクリックして 、[新しいプロジェクトを設定 ] ウィンドウに移動します。 - [ プロジェクト名 ] フィールドに、目的のアクティビティ名を入力します。 この例では、「MathSquareOfSum」を使用できます。
- [フレームワーク ] ドロップダウン メニューから [.NET Framework 4.6.1] を選択します。これにより、ライブラリが UiPath Studio に対応されるようになります。
- [ 作成 ] をクリックしてコード デザイナーに移動し、アクティビティ コードの書き込みを開始します。
- [ ソリューション エクスプローラー ] パネルで [ 参照 ] 分岐を右クリックして、[ 参照の追加...] を選択します。 [ 参照マネージャー ] ウィンドウが表示されます。
-
System.Activities
およびSystem.ComponentModel.Composition
参照を検索し、追加します。各ボックスの前にあるボックスをオンにして、[OK] をクリック します。 そうすることで、前述の参照のクラスを使用できます。 -
現在は、新たに追加された参照がコードで使用されるようにする必要があります。 それには、コード デザイナーに以下の行を追加します。
using System.Activities; using System.ComponentModel;
using System.Activities; using System.ComponentModel;プロジェクトは次のようになります。
-
入力および出力パラメーターを追加します。 この例では、コードは次のようになります。
//Note that these attributes are localized so you need to localize this attribute for Studio languages other than English //Dots allow for hierarchy. App Integration.Excel is where Excel activities are. [Category("Category.Where.Your.Activity.Appears.In.Toolbox")] [DisplayName("Human readable name instead of class name")] [Description("The text of the tooltip")] public class MathSqSum : CodeActivity { //Note that these attributes are localized so you need to localize this attribute for Studio languages other than English [Category("Input")] [DisplayName("First Number")] [Description("Enter the first number")] [RequiredArgument] public InArgument<int> FirstNumber { get; set; } [Category("Input")] [DisplayName("Second Number")] [Description("Enter the second number")] [RequiredArgument] public InArgument<int> SecondNumber { get; set; } [Category("Output")] public OutArgument<int> ResultNumber { get; set; } protected override void Execute(CodeActivityContext context) { }
//Note that these attributes are localized so you need to localize this attribute for Studio languages other than English //Dots allow for hierarchy. App Integration.Excel is where Excel activities are. [Category("Category.Where.Your.Activity.Appears.In.Toolbox")] [DisplayName("Human readable name instead of class name")] [Description("The text of the tooltip")] public class MathSqSum : CodeActivity { //Note that these attributes are localized so you need to localize this attribute for Studio languages other than English [Category("Input")] [DisplayName("First Number")] [Description("Enter the first number")] [RequiredArgument] public InArgument<int> FirstNumber { get; set; } [Category("Input")] [DisplayName("Second Number")] [Description("Enter the second number")] [RequiredArgument] public InArgument<int> SecondNumber { get; set; } [Category("Output")] public OutArgument<int> ResultNumber { get; set; } protected override void Execute(CodeActivityContext context) { }
<DisplayName(" ")>
属性は、Studio の [ プロパティ ] パネルの入力フィールドの前に表示されるラベルです。 <Description(" ")>
属性は、ホバーすると表示されるツールチップのテキストです。
<ReguiredArgument>
属性が必要です。 入力していない場合は、アクティビティのタイトル バーに青い注意アイコンが表示されます。
<Execute( )>
オーバーライドされた関数に機能を追加します。 この例では、次のようになります。
protected override void Execute(CodeActivityContext context)
{
var firstNumber = FirstNumber.Get(context);
var secondNumber = SecondNumber.Get(context);
var result = (int)Math.Pow(firstNumber + secondNumber, 2);
ResultNumber.Set(context, result);
}
protected override void Execute(CodeActivityContext context)
{
var firstNumber = FirstNumber.Get(context);
var secondNumber = SecondNumber.Get(context);
var result = (int)Math.Pow(firstNumber + secondNumber, 2);
ResultNumber.Set(context, result);
}
アクティビティにデザイナー インターフェイスを設定したくない場合は、[ライブラリの構築] セクションにスキップできます。
デザイナー インターフェイスを構築するには、 Windows Workflow Foundation コンポーネントが Visual Studio にインストールされている必要があります。 Visual Studio インストーラーからコンポーネントを選択していない場合は、次のように追加できます。
- Visual Studio で [ツール ] メニューをクリックし、[ ツールと機能を取得...] を選択します。 Visual Studio インストーラー ウィンドウが表示されます。
- [個々の コンポーネント ] タブに切り替えて、 Windows Workflow Foundation コンポーネントを検索します。 このアクティビティは、[ 開発] セクション の下にあります。
- Windows Workflow Foundation コンポーネントの前にあるボックスをチェックし、[ 変更] をクリックします。必要なコンポーネントがインストールされます。
13. [ プロパティ ] パネルからプロジェクトを右クリックします (この例では、プロジェクトは MathSquareOfSumです)。 コンテキスト メニューが表示されます。
14. [項目を 追加 ] から [ 新しい項目...] を選択します。 [ 新しい項目を追加] ウィンドウが表示されます。
15. 左側のパネルの [ インストール済み ] カテゴリの下の [ ワークフロー ] をクリックします。関連するすべての要素が表示されます。
16. [アクティビティ デザイナー ] を選択し、[ 追加 ] をクリックしてプロジェクトに項目を含めます。
.xaml
ファイルがすぐに開きます。次のようになります。
17. 既存の アクティビティ デザイナー コードを次のコードに置き換えます。
<sap:ActivityDesigner x:Class="MathSquareOfSum.MathSqSumDesigner"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
xmlns:sapc="clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation"
xmlns:sapv="clr-namespace:System.Activities.Presentation.View;assembly=System.Activities.Presentation">
<a href="sap:ActivityDesigner.Resources">sap:ActivityDesigner.Resources</a>
<ResourceDictionary>
<sapc:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" />
</ResourceDictionary>
</sap:ActivityDesigner.Resources>
<DockPanel Width="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90"></ColumnDefinition>
<ColumnDefinition Width="210"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="First Number"></TextBlock>
<sapv:ExpressionTextBox Grid.Row="0" Grid.Column="1" OwnerActivity="{Binding Path=ModelItem}" ExpressionType="s:Int32" HintText="Enter first number" Expression="{Binding Path=ModelItem.FirstNumber, Converter={StaticResource ArgumentToExpressionConverter},ConverterParameter=In, Mode=TwoWay}" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Second Number"></TextBlock>
<sapv:ExpressionTextBox Grid.Row="1" Grid.Column="1" OwnerActivity="{Binding Path=ModelItem}" ExpressionType="s:Int32" HintText="Enter second number" Expression="{Binding Path=ModelItem.SecondNumber, Converter={StaticResource ArgumentToExpressionConverter},ConverterParameter=In, Mode=TwoWay}" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="Result"></TextBlock>
<sapv:ExpressionTextBox Grid.Row="2" Grid.Column="1" OwnerActivity="{Binding Path=ModelItem}" ExpressionType="s:Int32" HintText="The sum of the numbers" UseLocationExpression="True" Expression="{Binding Path=ModelItem.ResultNumber, Converter={StaticResource ArgumentToExpressionConverter},ConverterParameter=Out, Mode=TwoWay}" />
</Grid>
</DockPanel>
</sap:ActivityDesigner>
<sap:ActivityDesigner x:Class="MathSquareOfSum.MathSqSumDesigner"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:sap="clr-namespace:System.Activities.Presentation;assembly=System.Activities.Presentation"
xmlns:sapc="clr-namespace:System.Activities.Presentation.Converters;assembly=System.Activities.Presentation"
xmlns:sapv="clr-namespace:System.Activities.Presentation.View;assembly=System.Activities.Presentation">
<a href="sap:ActivityDesigner.Resources">sap:ActivityDesigner.Resources</a>
<ResourceDictionary>
<sapc:ArgumentToExpressionConverter x:Key="ArgumentToExpressionConverter" />
</ResourceDictionary>
</sap:ActivityDesigner.Resources>
<DockPanel Width="300">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="90"></ColumnDefinition>
<ColumnDefinition Width="210"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="First Number"></TextBlock>
<sapv:ExpressionTextBox Grid.Row="0" Grid.Column="1" OwnerActivity="{Binding Path=ModelItem}" ExpressionType="s:Int32" HintText="Enter first number" Expression="{Binding Path=ModelItem.FirstNumber, Converter={StaticResource ArgumentToExpressionConverter},ConverterParameter=In, Mode=TwoWay}" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="Second Number"></TextBlock>
<sapv:ExpressionTextBox Grid.Row="1" Grid.Column="1" OwnerActivity="{Binding Path=ModelItem}" ExpressionType="s:Int32" HintText="Enter second number" Expression="{Binding Path=ModelItem.SecondNumber, Converter={StaticResource ArgumentToExpressionConverter},ConverterParameter=In, Mode=TwoWay}" />
<TextBlock Grid.Row="2" Grid.Column="0" Text="Result"></TextBlock>
<sapv:ExpressionTextBox Grid.Row="2" Grid.Column="1" OwnerActivity="{Binding Path=ModelItem}" ExpressionType="s:Int32" HintText="The sum of the numbers" UseLocationExpression="True" Expression="{Binding Path=ModelItem.ResultNumber, Converter={StaticResource ArgumentToExpressionConverter},ConverterParameter=Out, Mode=TwoWay}" />
</Grid>
</DockPanel>
</sap:ActivityDesigner>
アクティビティに対して定義された新しいレイアウトは、次のようになります。
18. アクティビティを右クリックし (この場合 は Act SucceedSquareOfSum)、[ 追加 ] メニューから [ クラス...] を選択します。 [ 新しい項目を追加] ウィンドウが表示されます。
20. 新しく作成される DesignerMetadata クラスに、以下のコンテンツを追加します。
using MathSquareOfSum;
using System.Activities.Presentation.Metadata;
using System.ComponentModel;
namespace ActMathSquareOfSum
{
public class DesignerMetadata : IRegisterMetadata
{
public void Register()
{
AttributeTableBuilder attributeTableBuilder = new AttributeTableBuilder();
attributeTableBuilder.AddCustomAttributes(typeof(MathSqSum), new DesignerAttribute(typeof(MathSqSumDesigner)));
MetadataStore.AddAttributeTable(attributeTableBuilder.CreateTable());
}
}
}
using MathSquareOfSum;
using System.Activities.Presentation.Metadata;
using System.ComponentModel;
namespace ActMathSquareOfSum
{
public class DesignerMetadata : IRegisterMetadata
{
public void Register()
{
AttributeTableBuilder attributeTableBuilder = new AttributeTableBuilder();
attributeTableBuilder.AddCustomAttributes(typeof(MathSqSum), new DesignerAttribute(typeof(MathSqSumDesigner)));
MetadataStore.AddAttributeTable(attributeTableBuilder.CreateTable());
}
}
}
プロジェクトのビルドを試す前に、必ずプロジェクトでエラーがないかテストしてください。
MathSquareOfSum.dll
ライブラリが構築され、以下の場所に保存されるようになりました。
%UserProfile%\source\repos\MathSquareOfSum\MathSquareOfSum\bin\Debug
ライブラリが構築されると、以下に示すメッセージが [ 出力] パネルに表示されます。
- NuGet Package Explorer を起動し、[ Create a new package] (Ctrl + N)をクリックします。 [パッケージのメタデータ ] と [パッケージの 内容] を示す分割ウィンドウが表示されます。後者のセクションにすべての依存関係を追加する必要があります。
- [ Package contents ] セクション内を右クリックします。 コンテキスト メニューが表示されます。
- [Add lib folder] をクリックします。新しい [lib] 項目が、[Package contents] セクションに作成されます。
-
[lib] を右クリックして、[Add Existing File…] を選択します。
- 上記で作成した外部アセンブリ (
.dll
) を読み込みます。 この例では、MathSquareOfSum.dll
ファイルは%UserProfile%\source\repos\MathSquareOfSum\MathSquareOfSum\bin\Debug
フォルダーにあります。 - ファイルを選択して 、[編集] メニューにアクセスし、[ メタデータの編集] を選択します。 左側のパネルには、編集可能なメタデータ フィールドが表示されます。
- カスタム アクティビティをより適切に説明するためにフィールドに入力します。
-
[ ID ] フィールドに入力します。 この例では、 UiPath.MathSquare.Activitiesを指定できます。最初の値は UiPathであり、パッケージを作成したチームを意味しています。 特定のチームが関与しなかった場合、最初の値を空白のままにできます。
- [Package metadata ] セクションの左上隅にある緑色のチェック マーク ボタンをクリックして、すべての変更を保存します。
- [ファイル ] メニューから [名前を付けて保存...] を選択します。エクスプローラー ウィンドウが表示され、新しいファイルの場所を選択できます。
- ローカル パッケージが UiPath が保存するフォルダーにファイルを保存します (2021.4 より前のバージョンで
C:\Program Files (x86)\UiPath\Studio\Packages
するか、バージョン 2021.4 以降C:\Program Files\UiPath\Studio\Packages
)。UiPath.MathSquare.Activities.1.0.0.nupkg
ファイルがパッケージ フォルダー内のUiPath.MathSquare.Activities
フォルダーに作成されます。