RPA インターフェース要素のインテリジェント適応位置決めおよび制御テクノロジー - Jinke

RPAとは何ですか? RPA (ロボティック プロセス オートメーション) は、コンピューター インターフェイス上で人間の操作をシミュレートできる特定のテクノロジーであり、ルールに従って対応するプロセス タスクを自動的に実行し、関連するコンピューター操作を人間に置き換えたり支援したりすることでコストを節約できます。生産効率。

RPA の定義から、コンピューター インターフェイスの操作が RPA の中核の 1 つであることがわかります。コンピュータインターフェースの制御を実現するには、RPAインターフェース要素の位置決めおよび操作技術を使用する必要があります。

 要素の位置決めおよび操作技術 

インターフェイス要素とは、ウィンドウ、入力ボックス、ボタンなど、システムまたはアプリケーションの構築に使用されるすべてのグラフィカル ユーザー インターフェイス部品を指します。モニター、キーボード、マウスなどのコンピューター周辺機器を介して、指定された入力ボックスにテキストを入力したり、指定されたボタンをクリックしたり、オペレーティング システムやビジネス システムと対話したりするなどの操作を実行できます。同様に、RPA が人間に代わってこれらの操作を完了したい場合は、これらのインターフェイス要素を見つけて操作できる必要があります。

インターフェイス要素を見つけて操作するには多くの方法がありますが、主な違いは GUI (グラフィカル ユーザー インターフェイス、グラフィカル ユーザー インターフェイス) 自動化テクノロジを使用するかどうかです。非 GUI 自動化テクノロジには、絶対座標位置決め、画像一致位置決め、メッセージベースの操作、シミュレートされたキーボードとマウスの操作などが含まれます。GUI 自動化テクノロジには、Win32、MSAA、UIA、JAB、SAP、Citrix 仮想チャネル、RDP 仮想チャネル、Selenium、Chrome 拡張機能などが含まれます。一般的に、GUI 自動化テクノロジは、インターフェイス要素に関するより多くの情報を取得し、より多くの操作をサポートできますが、同時に、より大きな制限があり、GUI 自動化テクノロジは、多くの場合、少数のインターフェイス要素フレームワークのみをサポートし、より困難になります。

以下に、一般的に使用されるいくつかの自動化テクノロジをリストし、それらの長所と短所を分析します。

01 絶対座標位置決め

絶対座標とは、画面上の固定座標位置を指し、インターフェイス要素が常に画面上の固定座標位置にある場合、絶対座標を位置決めに使用できます。この方法は非常にシンプルで便利であり、特定のシナリオで非常に役立ちます。ただし、画面解像度とアプリケーション ウィンドウ サイズは通常、固定する必要があり、配置されたインターフェイス要素が正しいという保証はありません。

02 画像のマッチングと位置合わせ

画像マッチングは、照合対象の画像内から対象画像との類似度が高い単一または複数の対象を探し、その対象の座標位置を取得します。画像マッチングは絶対座標位置決めと組み合わせることができ、最初に絶対座標位置決めを使用し、次に画像マッチングを検証に使用することもできます。また、最初に画面上の特定の領域を描画し、この領域で画像マッチングを実行して精度を向上させることもできます。マッチングプロセスを迅速化します。

画像マッチングにはさまざまな手法があり、空間 2 次元のスライド テンプレートを使用してマッチングするテンプレート マッチングでは、対象画像内で対象画像をスライドさせてマッチングします。特徴マッチングでは、画像の特徴を抽出して特徴記述子を再生成し、最後に 2 つの画像を比較します。画像の特徴間のマッチング; 深層学習は画像マッチングにも使用でき、たとえば、OCR テクノロジーを使用すると、指定されたテキストを含む画像を見つけることができます。

03 メッセージ運用による

ここでのメッセージはオペレーティング システムのメッセージを指します。Windows はメッセージ駆動型のシステムであり、Windows メッセージはアプリケーション間、およびアプリケーションと Windows システム間の通信手段を提供します。アプリケーションウィンドウに特定のメッセージを送信することで、特定のインターフェース要素に対するクリック入力などの操作を実現できます。

図 1 Windows メッセージのメカニズム

04 キーボードとマウスの操作をシミュレートする

シミュレートされたキーボードとマウスは、メッセージ シミュレーション、API シミュレーション、ドライバー シミュレーションの 3 つのタイプに分類できます。メッセージ シミュレーションは Windows メッセージ メカニズムに基づいており、キーとマウスのメッセージをターゲット ウィンドウに送信します。APIシミュレーションとは、Windowsが提供するAPIを利用して擬似的な入力を実現することです。ドライバー シミュレーションは、ドライバー プログラムを通じてシステム カーネルの I/O ポートを操作し、キーボードに接続されている集積回路に命令を送信し、ボタン押下情報を生成させることで、アナログ入力が実数から全数まで行われるようにします。デバイスによって発行されたプログラム。

05  Win32 API

Win32 API は、Microsoft の第 1 世代のアプリケーションからアクセス可能な API です。Win32 API は .NET より前に登場し、基盤となる Windows API でした。MFC、VB6、VCL、簡易WinFormsなどのフォームをサポートしています。
 

Win32 オートメーション テクノロジは HWND (ウィンドウ ハンドル) に基づいており、一般に、FindWindow と EnumWindows を通じてターゲット ウィンドウのハンドルを見つけてから、GetWindowText、GetWindowRect などの他の API を呼び出してウィンドウのプロパティを取得する必要があります。ターゲット要素を見つけるために。ターゲット要素を見つけたら、Win32 API を介してターゲット要素を操作できます。たとえば、SetWindowText を使用して表示テキストを設定し、SetActiveWindow を使用してウィンドウをアクティブ化するなどです。

利点:

  • 標準の Windows コントロールの優れたサポート

短所:

  • 低レベルすぎて呼び出しが複雑です例: Win32 API クエリ フォームは、トラバーサル検索のためにレイヤーごとにフォーム ハンドルを取得する必要があります。

  • この技術は遅れており、応用範囲は広くありません例: Win32 API は、新しい UI フレームワークとカスタム コントロールのサポートが不十分です。

06  MSAA

MSAA (Microsoft Active Accessibility) は、Microsoft の第 2 世代アプリケーション アクセス API です。MSAA は、支援技術製品がアプリケーション (またはオペレーティング システム) の標準およびカスタム ユーザー インターフェイス要素と対話できるように設計されています。WFC、VB6、VCL、WinForms、WPFなどのフォームをサポートしています。

MSAA は主に COM テクノロジーに基づいています。情報を提供するアプリケーションプログラムをサーバ、情報を取得するアプリケーションプログラムをクライアントと呼びます。まず、クライアントは AccessibleObjectFromWindow を呼び出して、サーバー ウィンドウの HWND を渡します。

次に、AccessibleObjectFromWindow 関数は WM_GETOBJECT メッセージをサーバーに送信します。サーバーは IAccessible を作成して実装し、LresultFromObject を通じて IAccessible をクライアントに返します。最後に、クライアントは IAccessible を呼び出して、サーバー内のインターフェイス要素を見つけて操作します。

利点:

  • Win32 API よりもシンプルで使いやすいユーザーは IAccessible と対話するだけでよく、Windows メッセージを直接使用してターゲット要素を操作する必要はありません。

  • Win32 API と比較して、いくつかのカスタム コントロールをサポートします前提条件は、開発者がカスタム コントロールを実装するときに IAccessible インターフェイスを実装することです。

短所:

  • 不完全な関数ですMSAA テクノロジの本来の目的は、障害のある人による Windows プログラムの使用を容易にすることですが、自動化には十分ではなく、インターフェイス要素のいくつかの基本的な操作のみをサポートしています。

07 ウイア

UIA (Microsoft Active Accessibility) は、MSAA の代わりに使用されるアプリケーション アクセシビリティ テクノロジです。MSAA とは異なり、UIA テクノロジの本来の目的は UI アクセシビリティを提供することです。MFC、WinForms、WPF、ストアアプリ、Qtなどのフォームをサポートしています。


UIA は、UI 自動化のための新しいインターフェイスとパターンを定義します。それらは、インターフェイス要素のトラバーサルと条件付きクエリをそれぞれサポートする TreeWalker と FindAll です。Name、ID、Type、ClassName、Location、Visibility などの UI 要素プロパティを読み書きするための UIA プロパティを定義します。選択、展開、サイズ変更、チェック、値などの UI 要素の動作を定義する UIA パターン。UIA イベント インターフェイスも導入されており、新しいウィンドウを開くイベントなど、特定のイベントが発生した後にテスト プログラムに通知できるようになります。

図 2 UIA アーキテクチャ図

利点:

  • サポートされる UI フレームワークがさらに豊富になりましたたとえば、WPF と Silverlight の子ウィンドウとコントロールは従来の HWND ではないため、Win32 API と MSAA は何もできず、UIA はこれら 2 つのプログラムを直接サポートできます。

  • 従来の Win32 および MSAA モードと互換性があります前述したように、UIA テクノロジーの内部実装は多様化する可能性があります。従来のプログラムの場合、UIA は MSAA のインターフェイスを借用し、内部実装で Win32 API を直接呼び出すことができます。

  • 抽象度が高く、使いやすいたとえば、ボタンのクリック操作を実行する場合、UIA はまとめて Invoke として分類されます。Win32、WPF、Silverlight のいずれのボタンであっても、具体的な実装方法がキーボードとマウスのシミュレートであるか、呼び出しであるかに関係なく、クリックして Invoke を実行できます。 Windows API。

短所:

  • エンコードプロセスは複雑ですUI ウィンドウの場合、数十のサブコントロールまたはサブウィンドウが存在する場合があります。テストコードを書く際、これらのサブ要素の取得を簡略化できないと、必然的にコードが煩雑になり、メンテナンスが困難になります。

08 ジャブ

JAB (Java Access Bridge) は、Microsoft Windows ダイナミック リンク ライブラリ (DLL) で Java Accessibility API を公開するテクノロジで、Java Accessibility API を実装する Java アプリケーションを Windows システム上の支援テクノロジから認識できるようにします。

JAB テクノロジーを使用するには、Java プログラムを開始する前に、必要な JAB 環境を構成する必要があります。クライアントは、サーバーが提供するインターフェイスを取得するために WindowsAccessBridge.dll を事前にロードし、FindWindow を通じてウィンドウ ハンドルを取得し、IsJavaWindow を使用して Java プログラムのウィンドウを判断して除外する必要があります。ウィンドウを取得した後、ウィンドウ ハンドルに従って仮想マシン番号 vmID とルート ノード ac を取得できます。その後、vmID と ac を使用して、サブノード インターフェイス要素の vmID と ac を取得し、インターフェイス要素の情報を取得し、前のサーバーが提供するインターフェイスを介してインターフェイス要素でサポートされているクリック入力を呼び出すことができます。

JAB技術の本来の目的も障害者の利用を促進することにあるため、自動化技術への対応は芳しくありません。

図 3 JAB アーキテクチャ図

09  SAP

SAP は、ユーザー インターフェイスを自動化するためのスクリプト エンジンを提供します。SAP Scripting Engine は、SAP の包括的なスクリプト サポートを提供する COM ベースのインターフェイスです。

10 シトリックス仮想チャネル

Citrix は、クライアントとサーバー間の通信ニーズを満たす仮想チャネル メカニズムを提供します。仮想チャネルを利用すると、Citrix仮想デスクトップに任意のコマンドを送信し、業務に必要な情報を取得できます。Citrix は、ICA (Independent Computing Architecture) プロトコルに基づいて実装されています。
 

図 4 Citrix 仮想チャネル

11  RDP 仮想チャネル

RDP (リモート デスクトップ プロトコル) は、Microsoft によって開発されたリモート デスクトップ プロトコルです。RDP は、クライアントとサーバー間の通信ニーズを満たす仮想チャネル メカニズムも提供します。

図 5 RDP 仮想チャネル

12 セレン

Selenium はオープン ソースの Web 自動テスト ツールで、すべての主流ブラウザをサポートしており、ブラウザを開いたり、Web ページ インターフェイス要素データを取得したり、Web ページのスクリーンショットを保存したり、その他の操作を実行したりできます。

図6 Seleniumの実行プロセス

13  Chrome拡張機能

Chrome ブラウザ プラグインは、開発者がユーザー エクスペリエンスをカスタマイズできるテクノロジーです。HTML、CSS、JavaScript などの Web テクノロジーを利用して、ブラウジング エクスペリエンスをカスタマイズできます。
 

 インテリジェントな測位および制御テクノロジー

前の紹介からわかるように、システムやアプリケーションには多くの種類のインターフェイス要素フレームワークがあり、アプリケーションごとに異なる自動化テクノロジが必要です。たとえば、Chrome ブラウザでは Web 自動化テクノロジを使用する必要があり、Oracle ERP では Java 自動化テクノロジを使用する必要があります。 、SAP では SAP オートメーション テクノロジの使用が必要です。同じアプリケーションでも、オペレーティング システムが異なると自動実装方法が異なります。たとえば、ほとんどの RPA 製品は、アプリケーションの制御に Windows の .Net フレームワークに依存していますが、Linux やその他のオペレーティング システムでは使用できません。全然。

Chrome ブラウザを例に挙げると、ほとんどの RPA 製品は、Chrome ブラウザの自動制御を実現するためにオープンソースの Selenium の使用を選択します。Selenium はよく知られた Web アプリケーション テスト ツールです。Python、Java、その他の言語から簡単に呼び出すことができる豊富な API インターフェイスを提供します。同時に、ドライバーのバージョンはブラウザのバージョンと厳密に一致する必要があります。 Web ページから簡単に検出されるという欠点があります。Selenium を使用して他のアプリケーションを制御することはできないため、ブラウザ用の自動制御モジュールの完全なセットを設計する必要があります。より成熟した RPA 製品は通常、自社開発のブラウザ プラグインを選択し、同じ機能を実現するためにプラグインを使用します。自社開発のブラウザ プラグインは、ブラウザと他のアプリケーションの自動化インターフェイスを統合できますが、残念ながら、多くの RPA 製品はこれを行いません。ブラウザを特別なケースとして考えると、Web ページのテスト技術に精通している開発者はすぐに開始できるかもしれませんが、関連技術に精通していない開発者にとっては、間違いなく莫大な学習コストが増加することになります。

上記の理由により、RPA プロセス開発では、プロセスに複数の自動化テクノロジが含まれ、複数のオペレーティング システムで実行されることを考慮する必要があります。RPA 開発者は、ビジネス システムの各部分でどの自動化テクノロジが使用されているかを理解し、開発時に適切なモジュールを選択するだけでなく、プロセスがどのオペレーティング システムで実行されるかを理解し、オペレーティング システムごとに個別のプロセスを開発する必要もあります。 。RPAが関わる業務システムの範囲の拡大と国内OSの普及に伴い、プロセス開発コストは大幅に増加します。

RPA インターフェイス要素のインテリジェントな適応位置決めおよび制御テクノロジーは、これらの自動化テクノロジーを統合し、さまざまなオペレーティング システムとの互換性を実現します。RPAプロセスの開発プロセスでは、自動化技術を区別する必要がなく、同じプロセスを異なるOS上で直接実行できるため、開発コストを大幅に削減できます。

インテリジェントな位置決めと制御の技術的実現

RPA インターフェース要素のインテリジェントな適応位置決めおよび制御テクノロジーは、現在の主流の自動化テクノロジーを統合し、高い抽象化を通じてさまざまな自動化テクノロジーの統合呼び出しを実現し、ルールベースの自動化テクノロジースイッチャーを通じてさまざまな自動化テクノロジーのインテリジェントな切り替えを実現します。

図 7 スマート エレメント キャプチャのアーキテクチャ図

JAB 自動化テクノロジを使用して Java アプリケーションをキャプチャして操作する例を考えてみましょう。ユーザーはまずインターフェイス要素アナライザーを使用してターゲット要素をキャプチャしますが、このとき、インターフェイス要素アナライザーはマウスクリックの位置に応じて、ターゲット要素が配置されているウィンドウとそのウィンドウが属するアプリケーションを取得できます。窓口やアプリの情報を取得します。この情報に基づいて、自動化テクノロジ スイッチャーはルールに従って最適な自動化テクノロジを選択します。この例では、JAB 自動化テクノロジーにインテリジェントに切り替えられます。次に、インターフェイス要素アナライザーは、「指定された位置でターゲット要素を取得する」メソッドを呼び出して、ターゲット要素を取得します。このメソッドの基礎となる実装は、JAB 自動化テクノロジに基づいています。ターゲット要素の属性とサポートされているメソッドも同様です。 JABを通過、自動化技術により取得。これらの属性とメソッドも抽象的なもので、JAB オートメーション テクノロジを通じて取得された属性ロールは標準コントロールにマッピングされ、JAB オートメーション テクノロジを通じて取得されたメソッド Click は標準 Invoke にマッピングされます。ユーザーがターゲット要素をクリックしたい場合は、統一ルールに従って Invoke メソッドを呼び出すだけでよく、メソッドの最下層がどのように実装されているかを気にする必要はありません。

ターゲット要素の配置に関する非常に一般的な問題もあり、UI 内のターゲット要素のプロパティと位置が変更されることがあります。たとえば、一部のウィンドウ タイトルにはバージョン番号が付いており、アプリケーションが更新されると変更されます。これらが変化すると、測位に失敗するリスクがあります。要素をより適切に見つけるために、ユーザー インターフェイスはドキュメント オブジェクト モデル (ドキュメント オブジェクト モデル) に抽象化され、ターゲット要素を見つけるために CSS 構文と XPath 構文を使用する要素セレクターをサポートします。要素セレクターは、属性を含むテキストの一部です。要素と階層関係のあいまい一致をサポートします。

図8 DOM構造

ドキュメント オブジェクト モデルは、HTML および XML データの操作によく使用され、ドキュメント全体を論理オブジェクトに抽象化し、これらのドキュメントにアクセスして操作するためのメソッドを定義します。ドキュメント オブジェクト モデルは、システム プラットフォームやプログラミング言語から独立しています。ドキュメント オブジェクト モデルが提供するメソッドを使用すると、ドキュメントを構築し、その構造をナビゲートし、要素やコンテンツを追加、変更、または削除できます。ユーザー インターフェイスは、ドキュメント オブジェクト モデルに抽象化してツリー構造を形成することもできます。各インターフェイス要素はユーザー インターフェイス ツリーのノードであり、各ノードは同じプロパティとメソッドを持つ抽象要素オブジェクトです。インターフェース要素アナライザとアプリケーションプログラム間の通信プロセスにおいて、クロスシステム対応オートメーションテクノロジースイッチャーは、取得したアプリケーションプログラム情報に応じてルールに従って自動的に切り替え、対応するオートメーションテクノロジーインターフェースに接続し、取得したインターフェースを使用します。抽象要素オブジェクトと文書オブジェクトモデルを構築するための要素情報。

要素アナライザー インターフェイスでは、ユーザー インターフェイス ツリーの全体構造と各インターフェイス要素のさまざまな属性を確認でき、位置決めステートメントを通じて、位置決めステートメントを満たすターゲット要素を見つけることができます。位置付けステートメントは自社開発の構文解析技術を採用しており、CSS構文とXPath構文の両方をサポートし、属性による正確な一致、前方一致、後方一致、あいまい一致をサポートし、子孫関係、親子関係、兄弟関係の記述をサポートします。自由度の高い要素、ユーザーインターフェースの変化への高い適応力。要素がキャプチャされると、適切な要素セレクターが自動的に生成され、ユーザーはこれに基づいて手動で変更して、位置決めの柔軟性と精度を向上させることもできます。

図 9 Windows 要素グラバー

RPA インターフェイス要素のインテリジェントな自己適応測位および制御テクノロジは、国内のオペレーティング システムもサポートしていますが、そのほとんどは Linux ベースで修正されており、Qt-at-spi テクノロジの助けを借りて、グラフィカル インターフェイス上のアプリケーション プログラムのインターフェイス要素は、 Linux デバッグ インターフェイスを通じて取得できます。国内のオペレーティング システムが異なると、具体的な実装の詳細が異なります。カプセル化により、国内オペレーティング システムと Windows オペレーティング システムの間のインターフェイスが統一されています。

図 10 UOS 要素のキャプチャ

現在、RPA インターフェイス要素のインテリジェント適応位置決めおよび制御テクノロジは、WIN32、UIA、MSAA、JAVA、SAP、Chrome、IE、Firefox、X11 などのさまざまな自動化テクノロジと互換性があります。オートメーションテクノロジーインテリジェントスイッチングスキームにより、セレクターは使用中にオートメーションテクノロジーをインテリジェントに切り替えます。スイッチング方式はカスタム構成もサポートしており、特別なシナリオのニーズを満たすことができます。Daguan Almighty インターフェイス要素セレクターは拡張性が高く、パブリック インターフェイスを通じて新しい自動化テクノロジーをシームレスに接続でき、変更やアップグレードが非常に便利で、既存の RPA プロセスに影響を与えません。

RPA インターフェイス要素のインテリジェントな適応位置決めおよび制御テクノロジーは、Windows 7 SP1 以降の主流の Windows オペレーティング システム、MAC システム、国内の Kirin、Tongxin、および Zhongke Fangde システムなどを含む複数のオペレーティング システムと同時に互換性があります。RPA プロセスはこれらのシステム間で簡単に移行でき、同じアプリケーションの同じインターフェイス要素の位置付けステートメントはまったく同じであり、同じ操作の基盤となる実装は現在実行中のシステムに応じて自動的に切り替わります。対照的に、他のほとんどの RPA 製品は、Windows Net フレームワークに基づくインターフェイス要素の配置と操作に基づいており、他のオペレーティング システムに移行できません。

今後の展望 

01 より多くの自動化技術に対応

現時点では、Citrix 仮想化アプリケーションや RDP リモート デスクトップなど、互換性のない自動化テクノロジがまだいくつかあります。このようなシナリオでも、開発者はターゲットを絞った開発に対応するテクノロジーを採用する必要があります。その後の RPA インターフェイス要素のインテリジェント適応位置決めおよび制御テクノロジにより、より多くの自動化テクノロジのサポートが追加され、RPA 開発者のエクスペリエンスがさらに最適化されます。

02 より多くのOSに対応

現在、国産OSの発展が急速に進んでおり、Kirin、Tongxin、Zhongke Fangdeなどの国産OS市場が成長しており、これらの国産OS上でRPAプロセスを開発・実行する需要は今後ますます高まると考えられます。さらに、モバイル デバイスで RPA プロセスを実行するにはいくつかの要件もあります。これらのオペレーティング システムとの互換性も開発計画に含まれています。

03 画像による自動化技術の開発

ほとんどのアプリは自動化テクノロジーをサポートしていますが、サポートされていないアプリもまだいくつかあります。Daguan Almighty インターフェース要素の位置決めおよび操作技術は、自社開発の AI 機能に依存して、この問題を解決する画像自動化技術を開発します。この技術は、ユーザーインターフェイスをさまざまなレベルに応じてインテリジェントに分割し、さまざまなレベルの画像を要素オブジェクトとして抽出し、画像技術を通じてユーザーインターフェイスツリーを構築し、要素オブジェクトの属性情報を抽出します。このテクノロジーは、アプリケーションが自動化テクノロジーをサポートしていないという問題を完全に解決し、インターフェース要素の普遍的で非侵襲的な位置決めと操作を真に実現します。

著者について

Jin Ke: Daguan Data Technology 副社長、Daguan Data の RPA 製品チームの設立と開発を担当。Daguan に入社する前は、「Feiyu Cloud Communication」を共同設立し、CTO を務めました。システム エンジニアリング開発、大規模同時ネットワーク、Go 言語プログラミングで豊富な経験を持っています。Geersoft、Agfa Medical、Shanda で働いてきました。 Innovation Institute、Feiyu などの企業は 10 年以上のソフトウェア開発経験があり、チームを率いて情報セキュリティ、医療画像処理、クラウド ストレージ、支払いおよび請求システム、クラウド通信プラットフォームの研究開発に参加してきました。2021年上海「張江職人」受賞者。

おすすめ

転載: blog.csdn.net/DatagrandRS/article/details/128094544