marketplace
latest
false
- リリース ノート
- 概要
- 基本情報
- 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
- 連携の独自開発
アクティビティ ファイル
重要 :
このコンテンツの一部は機械翻訳によって処理されており、完全な翻訳を保証するものではありません。
Marketplace ユーザー ガイド
Last updated 2024年9月5日
アクティビティ ファイル
大事な: このドキュメントは、UiPath Activity Creator for Visual Studio の非推奨バージョンを指します。 新しいドキュメントについては、 こちらをご覧ください。
Intro
すべてのアクティビティは、その入力、出力、実行ロジックを定義する Activity クラス ファイルで始まります。 その方法について理解を深えるには、アクティビティ プロジェクトで ChildActivity.cs ファイルを開き、セクションごとに説明します。 これは、2 つの数値を合計して合計を出力する単純なアクティビティです。
using System;
using System.Activities;
using System.Threading;
using System.Threading.Tasks;
using MyCompany.MyProduct.Activities.Properties;
using UiPath.Shared.Activities;
namespace MyCompany.MyProduct.Activities
{
[LocalizedDisplayName(nameof(Resources.ChildActivityDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivityDescription))]
public class ChildActivity : AsyncTaskCodeActivity
{
#region Properties
[LocalizedDisplayName(nameof(Resources.ChildActivityFirstNumberDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivityFirstNumberDescription))]
[LocalizedCategory(nameof(Resources.Input))]
public InArgument<int> FirstNumber { get; set; }
[LocalizedDisplayName(nameof(Resources.ChildActivitySecondNumberDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivitySecondNumberDescription))]
[LocalizedCategory(nameof(Resources.Input))]
public InArgument<int> SecondNumber { get; set; }
[LocalizedDisplayName(nameof(Resources.ChildActivitySumDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivitySumDescription))]
[LocalizedCategory(nameof(Resources.Output))]
public OutArgument<string> Sum { get; set; }
#endregion
#region Constructors
public ChildActivity()
{
Constraints.Add(ActivityConstraints.HasParentType<ChildActivity, ParentScope>(Resources.ValidationMessage));
}
#endregion
#region Protected Methods
protected override void CacheMetadata(CodeActivityMetadata metadata)
{
if (FirstNumber == null) metadata.AddValidationError(string.Format(Resources.MetadataValidationError, nameof(FirstNumber)));
if (SecondNumber == null) metadata.AddValidationError(string.Format(Resources.MetadataValidationError, nameof(SecondNumber)));
base.CacheMetadata(metadata);
}
protected override async Task<Action<AsyncCodeActivityContext>> ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken)
{
var property = context.DataContext.GetProperties()[ParentScope.ApplicationTag];
var app = property.GetValue(context.DataContext) as Application;
var firstValue = FirstNumber.Get(context);
var secondValue = SecondNumber.Get(context);
var sum = app.Sum(firstValue, secondValue);
return ctx =>
{
Sum.Set(ctx, sum);
};
}
#endregion
}
}
using System;
using System.Activities;
using System.Threading;
using System.Threading.Tasks;
using MyCompany.MyProduct.Activities.Properties;
using UiPath.Shared.Activities;
namespace MyCompany.MyProduct.Activities
{
[LocalizedDisplayName(nameof(Resources.ChildActivityDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivityDescription))]
public class ChildActivity : AsyncTaskCodeActivity
{
#region Properties
[LocalizedDisplayName(nameof(Resources.ChildActivityFirstNumberDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivityFirstNumberDescription))]
[LocalizedCategory(nameof(Resources.Input))]
public InArgument<int> FirstNumber { get; set; }
[LocalizedDisplayName(nameof(Resources.ChildActivitySecondNumberDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivitySecondNumberDescription))]
[LocalizedCategory(nameof(Resources.Input))]
public InArgument<int> SecondNumber { get; set; }
[LocalizedDisplayName(nameof(Resources.ChildActivitySumDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivitySumDescription))]
[LocalizedCategory(nameof(Resources.Output))]
public OutArgument<string> Sum { get; set; }
#endregion
#region Constructors
public ChildActivity()
{
Constraints.Add(ActivityConstraints.HasParentType<ChildActivity, ParentScope>(Resources.ValidationMessage));
}
#endregion
#region Protected Methods
protected override void CacheMetadata(CodeActivityMetadata metadata)
{
if (FirstNumber == null) metadata.AddValidationError(string.Format(Resources.MetadataValidationError, nameof(FirstNumber)));
if (SecondNumber == null) metadata.AddValidationError(string.Format(Resources.MetadataValidationError, nameof(SecondNumber)));
base.CacheMetadata(metadata);
}
protected override async Task<Action<AsyncCodeActivityContext>> ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken)
{
var property = context.DataContext.GetProperties()[ParentScope.ApplicationTag];
var app = property.GetValue(context.DataContext) as Application;
var firstValue = FirstNumber.Get(context);
var secondValue = SecondNumber.Get(context);
var sum = app.Sum(firstValue, secondValue);
return ctx =>
{
Sum.Set(ctx, sum);
};
}
#endregion
}
}
このファイルは、標準のボイラープレートで始まります。 名前空間をいくつかインポートし、このアクティビティ自体が MyCompany.MyProduct.Activities 名前空間に存在することを宣言します。
using System;
using System.Activities;
using System.Threading;
using System.Threading.Tasks;
using MyCompany.MyProduct.Activities.Properties;
using UiPath.Shared.Activities;
namespace MyCompany.MyProduct.Activities
{
using System;
using System.Activities;
using System.Threading;
using System.Threading.Tasks;
using MyCompany.MyProduct.Activities.Properties;
using UiPath.Shared.Activities;
namespace MyCompany.MyProduct.Activities
{
すべての標準アクティビティ クラス (サンプルの ChildActivity など) で
AsyncTaskCodeActivity
が拡張されます。このメソッドは、プロパティと実行時の実行ロジックを設計時に検証するメソッドを提供し、ソリューションに含まれる [Shared] フォルダーにあります。 さらに、 AsyncTaskCodeActivity
を拡張するすべてのアクティビティが非同期に実行されるため、UiPath Studio の [ 並列 ] および [並列繰 り返し (コレクションの各要素)] アクティビティで使用することができます。
[LocalizedDisplayName(nameof(Resources.ChildActivityDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivityDescription))]
public class ChildActivity : AsyncTaskCodeActivity
{
[LocalizedDisplayName(nameof(Resources.ChildActivityDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivityDescription))]
public class ChildActivity : AsyncTaskCodeActivity
{
ChildActivity クラス定義の上には、
LocalizedDisplayName
と LocalizedDescription
の 2 つの属性があります。 これにより、UiPath Studio のアクティビティ ペインに表示されるアクティビティの名前とツールチップの説明を設定できます。 この例では、属性は各言語のローカライズされたバージョンを参照します (例: Resources.ChildActivityDisplayName
しますが、単純な文字列も使用できます。 ローカリゼーションの詳細については、 こちらをご覧ください。
次に、UiPath Studio の [プロパティ] パネルに表示されるアクティビティのプロパティを示します。 各プロパティには、トップレベルのアクティビティで表示名と説明が表示されますが、グループ関連のアクティビティを支援するカテゴリ属性も含まれています。 [入力] カテゴリ
FirstNumber
と SecondNumber
が、[出力] の下にどのように表示 Sum
。
[LocalizedDisplayName(nameof(Resources.ChildActivityFirstNumberDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivityFirstNumberDescription))]
[LocalizedCategory(nameof(Resources.Input))]
public InArgument<int> FirstNumber { get; set; }
[LocalizedDisplayName(nameof(Resources.ChildActivitySecondNumberDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivitySecondNumberDescription))]
[LocalizedCategory(nameof(Resources.Input))]
public InArgument<int> SecondNumber { get; set; }
[LocalizedDisplayName(nameof(Resources.ChildActivitySumDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivitySumDescription))]
[LocalizedCategory(nameof(Resources.Output))]
public OutArgument<int> Sum { get; set; }
[LocalizedDisplayName(nameof(Resources.ChildActivityFirstNumberDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivityFirstNumberDescription))]
[LocalizedCategory(nameof(Resources.Input))]
public InArgument<int> FirstNumber { get; set; }
[LocalizedDisplayName(nameof(Resources.ChildActivitySecondNumberDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivitySecondNumberDescription))]
[LocalizedCategory(nameof(Resources.Input))]
public InArgument<int> SecondNumber { get; set; }
[LocalizedDisplayName(nameof(Resources.ChildActivitySumDisplayName))]
[LocalizedDescription(nameof(Resources.ChildActivitySumDescription))]
[LocalizedCategory(nameof(Resources.Output))]
public OutArgument<int> Sum { get; set; }
プロパティは
InArgument
型、 InOutArgument
、または OutArgument
として宣言することができ、期待される型 (例: string、int、...)。
public ChildActivity()
{
FirstNumber = 10;
Constraints.Add(ActivityConstraints.HasParentType<ChildActivity, ParentScope>(Resources.ValidationMessage));
}
public ChildActivity()
{
FirstNumber = 10;
Constraints.Add(ActivityConstraints.HasParentType<ChildActivity, ParentScope>(Resources.ValidationMessage));
}
コンストラクターを使用して、既定値とプロパティに制約を設定します。
-
上記の例では、[
FirstNumber
] プロパティには既定値 10 が指定されており、[プロパティ] パネルに表示されます。
-
さらに、この制約はアクティビティ自体に配置され、ParentScope で囲まれる必要があります。 検証エラーでない場合は、検証エラーが表示されます。
CacheMetadata は、アクティビティのプロパティ、デリゲート、子アクティビティの検証を提供します。 この例では、
FirstNumber
と SecondNumber
の 2 つの入力プロパティに値が提供されていることを確認し、いずれかを指定しない場合は検証エラーをスローします。 検証エラーが処理されるまで、ワークフローは実行されません。
protected override void CacheMetadata(CodeActivityMetadata metadata)
{
if (FirstNumber == null) metadata.AddValidationError(string.Format(Resources.MetadataValidationError, nameof(FirstNumber)));
if (SecondNumber == null) metadata.AddValidationError(string.Format(Resources.MetadataValidationError, nameof(SecondNumber)));
base.CacheMetadata(metadata);
}
protected override void CacheMetadata(CodeActivityMetadata metadata)
{
if (FirstNumber == null) metadata.AddValidationError(string.Format(Resources.MetadataValidationError, nameof(FirstNumber)));
if (SecondNumber == null) metadata.AddValidationError(string.Format(Resources.MetadataValidationError, nameof(SecondNumber)));
base.CacheMetadata(metadata);
}
ExecuteAsync には、そのアクティビティの実行ロジックが保持されます。
- メソッドの最初の 2 行は、ChildActivity のアクティビティ コンテキストまたは現在のステートと、それを囲む要素を検索して、ParentScope から
Application
オブジェクトを取得します (囲む場合)。 上記のコンストラクタに追加された制約により、このアクティビティがまだ ParentScope に存在しない場合、このアクティビティは決して実行できません。 - 次の行は、
FirstNumber
とSecondNumber
プロパティの現在の値を取って、それらをローカル変数に保存します。 -
最後の行は、入力された数に対して Sum 操作を実行し、
Sum
プロパティをこの値に設定します。Sum
は出力プロパティであるため、この値は、ワークフロー内の後続のアクティビティで使用できます。protected override async Task<Action<AsyncCodeActivityContext>> ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken) { var property = context.DataContext.GetProperties()[ParentScope.ApplicationTag]; var app = property.GetValue(context.DataContext) as Application; var firstValue = FirstNumber.Get(context); var secondValue = SecondNumber.Get(context); var sum = app.Sum(firstValue, secondValue); return ctx => { Sum.Set(ctx, sum); }; }
protected override async Task<Action<AsyncCodeActivityContext>> ExecuteAsync(AsyncCodeActivityContext context, CancellationToken cancellationToken) { var property = context.DataContext.GetProperties()[ParentScope.ApplicationTag]; var app = property.GetValue(context.DataContext) as Application; var firstValue = FirstNumber.Get(context); var secondValue = SecondNumber.Get(context); var sum = app.Sum(firstValue, secondValue); return ctx => { Sum.Set(ctx, sum); }; }重要:ExecuteAsync メソッドはTask<Action<AsyncCodeActivityContext>>
オブジェクトを返します。このアクティビティが非同期に実行できるように、Task
が返されます。非同期操作の完了後に複雑な関数を実行できるようにするため、このタスク内にAction
が返されます。 上記の例では、この関数はSum
の値を設定するだけです。最後に、Action
はAsyncCodeActivityContext
パラメーターを取ります。したがって、このアクティビティのコンテキストは、非同期操作の完了後に実行されるそのような関数で使用できます。 これを行わないと、コンテキストが失われる可能性があり、Sum
を容易に変更できません。