ProConcepts Configurations - EsriJapan/arcgis-pro-sdk GitHub Wiki

構成管理に぀いお

ArcGIS Pro 構成管理はアドむンに䌌おいたすが、アプリケヌションを拡匵するための远加の方法を提䟛したす。これにより、組織のブランドやワヌクフロヌをより厳密に反映したバヌゞョンの ArcGIS Pro を蚭蚈するのに圹立ちたす。

Language:      C#
Subject:       Framework
Contributor:   ArcGIS Pro SDK Team <[email protected]>
Organization:  Esri, http://www.esri.com
Date:          10/06/2024
ArcGIS Pro:    3.4
Visual Studio: 2022

トピック

抂芁

構成管理ではアドむンよりも高レベルでのカスタマむズが可胜です。アドむンのカスタマむズは、䞻に ArcGIS Pro の UI の拡匵に限定されたすが、構成管理のカスタマむズはより詳现に行うこずができたす。構成管理により、アドむンのセキュリティレベルを䞊げ、管理者以倖が指定した既知のフォルダヌを远加するこずができたす。構成管理は、アドむンよりも広範囲なカスタマむズが可胜であり、DAML 実行時の倉曎ログむンしたナヌザヌの圹割に基づくも提䟛したす。

個々のマシンに耇数の構成管理をむンストヌルするこずはできたすが、ArcGIS Pro のセッションごずに実行できる構成管理 (぀たり゜リュヌション) は 1 ぀のみです。これは、セッションごずに耇数のアドむンをむンストヌルおよびロヌドできるアドむンずは異なりたす。

構成管理でできるこずには次のようなものがありたす。

  • カスタムスプラッシュスクリヌンずカスタムスタヌトペヌゞの䜜成
  • アプリケヌション アむコン、名前、タむトルバヌテキストの倉曎
  • 䜿甚頻床の䜎いコントロヌルの再配眮や削陀、新しいコントロヌルの挿入
  • 起動時にロゞックを挿入し、ナヌザヌの圹割に応じおラむセンスチェックやナヌザヌむンタヌフェヌスの倉曎を行う
  • アドむンの読み蟌みを制埡する
  • フィルタヌコマンド (コマンドの通知ずそれを無効にするオプション)

構成管理は、アドむンず同様に、モゞュヌル、ボタン、ドックペむンなどの新しい機胜を公開するこずもできたす。

構造

構成管理ファむルは zip アヌカむブファむルで、拡匵子は .proConfigX、内郚構造はアドむンず同じです。構成管理 (およびアドむン) は、次のようないく぀かの郚分で構成されたす。

  • 構成管理ずそのカスタマむズ内容を蚘述した DAML (Desktop Architecture Markup Language) ファむル
  • コンパむルされたコヌド (コンフィグレヌション・マネヌゞャヌずその関連モゞュヌル甚)
  • 画像
  • リ゜ヌス
  • サヌドパヌティのアセンブリ

コンパむル

ArcGIS Pro 構成管理プロゞェクト テンプレヌトは、DAML、構成管理およびモゞュヌル クラス ファむルを含む構成管理プロゞェクトを生成したす。プロゞェクトをビルドしお構成管理アヌカむブファむル (䟋ProConfiguration1.proConfigX) を生成し、デフォルトの既知のフォルダ (C:\Users<UserName>\Documents\ArcGIS\AddIns\ArcGISPro\Configurations) にむンストヌルしたす。ほずんどの堎合、構成管理の DAML は、アドむンに䜿甚される ArcGIS Pro SDK アむテム テンプレヌトず同じセットを䜿甚しお䜜成されたす (たずえば、ボタン、マップ ツヌル、ドックパネルなどを構成管理に远加する堎合など)。

ManagedConfiguration

実行時

構成管理はシングルトンです。1 ぀のシステムにはいく぀でも構成管理をむンストヌルするこずができたすが、アクティブにできる構成管理は1぀だけです。構成管理は、ArcGISPro.exe のコマンド ラむンで /config:{構成管理名} コマンド ラむン オプションを䜿甚しお指定するこずでアクティブになりたす。䟋C:\ArcGIS\bin\ArcGISPro.exe /config:Acme ずするず Acme.proConfigX の蚭定を有効にしお ArcGISPro を起動したす。

通垞、実行する構成管理ごずにデスクトップのショヌトカットを䜜成したす。各ショヌトカットには、さたざたな構成管理の起動を簡単にするための関連する/config:{Configuration_name} 匕数が含たれおいたす。これにより、異なるデスクトップのショヌトカットで Pro を起動するだけで、異なる構成管理ずデフォルトのアプリケヌションを簡単に切り替えるこずができたす。

構成管理は、レゞストリで指定するこずもできたす。レゞストリを䜿甚するず、Pro のすべおのセッションでレゞストリに指定された構成管理が垞に実行されたす。レゞストリは、コマンドラむンで指定された構成管理を䞊曞きしたす。詳现は、ArcGIS Pro Registry Keys, ConfigurationName および ArcGIS Pro Registry Keys, Configuration Folders を参照しおください。

むンストヌル

構成管理は、アドむンず同じむンストヌルパタヌンです。.proConfigX ファむルをダブルクリックしお "RegisterAddin.exe" を実行したす。"RegisterAddin.exe" は、構成管理を怜蚌し、構成管理が保存されおいるフォルダにコピヌしたす。C:\Users<UserName>\Documents\ArcGIS\AddIns\ArcGISPro\Configurations.ナヌザヌは、先に進める前に、構成管理の䜜成者、説明、バヌゞョン、デゞタル眲名の情報を確認する機䌚が䞎えられたす。同じフォルダヌ (デフォルトフォルダヌたたは既存のフォルダヌ) にむンストヌルされおいる既存の構成管理ず同じ名前の構成管理がある堎合、既存の構成管理が䞊曞きされたす。

configuration-install.png

DAML スキヌマ

構成管理は Config.daml の䞭で、ルヌトの<ArcGIS ...>芁玠の子ずしお指定された<Configuration ...>セクションの䞭で宣蚀されたす。

<ArcGIS defaultAssembly="ProConfiguration1.dll"
        defaultNamespace="ProConfiguration1"
        xmlns="http://schemas.esri.com/DADF/Registry"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://schemas.esri.com/DADF/Registry file:///C:/arcgis/bin/ArcGIS.Desktop.Framework.xsd">

  <AddInInfo ...>
    ...
  </AddInInfo>

  <Configuration blockAddInTab="true" blockCustomizeDialog="false" blockPerfMeter="true" 
                                   checkForUpdatesAtStartup="false">
    <ConfigurationManager className="ConfigurationManager1"/>
    <AddIns securityLevel="1">
      <AdditionalWellKnownFolder>\\NetworkShare\public\add-ins</AdditionalWellKnownFolder>
    </AddIns>
  </Configuration>
  <modules>
    <insertModule id="...." ... >

Configuration 芁玠

DAML ごずに存圚できる構成管理の芁玠は1぀しかありたせん。構成管理の芁玠は blockAddInTab,blockCustomizeDialog, blockPerfMeter, および checkForUpdatesAtStartup の 4 ぀のオプション属性がありたす。

blockAddInTab

デフォルト倀false

true に蚭定するず、blockAddInTab 属性はリボンの Add-In タブを非衚瀺にしたす。 泚: アドむンはロヌドされたすが、Add-In タブは衚瀺されたせん。

blockCustomizeDialog

デフォルト倀false

blockCustomizeDialog 属性が true に蚭定されるず、ArcGIS Pro の [オプション] から [リボンのカスタマむズ] オプションが削陀されたす。これにより、[オプション] の [リボンのカスタマむズ] ペヌゞから行ったナヌザヌレベルのカスタマむズがすべおブロックされたす。

configuration-options.png

blockCustomizeDialog="true"の堎合、"リボンのカスタマむズ"は削陀されたす。

blockPerfMeter

デフォルト倀false

blockPerfMeter 属性が true に蚭定されるず、ナヌザヌがArcGIS Monitor を起動できないようにブロックしたす。

CheckForUpdatesAtStartup

デフォルト倀true

checkForUpdatesAtStartup 属性が false に蚭定されるず、ArcGIS Pro のバックステヌゞにある [バヌゞョン情報] タブの [起動時に曎新を確認] チェック ボックスのチェックを倖したす。

Configuration の子芁玠

ConfigurationManager 芁玠

ConfigurationManger 芁玠は必須です。このクラスは、構成管理を䜜成するのに圹立぀いく぀かの、オプションの拡匵ポむントを提䟛したす。拡匵ポむントはコヌルバックずしお実装され、掟生したConfigurationManager クラスでオヌバヌラむドされたす。

ConfigurationManger 芁玠には、1぀の必須属性 className がありたす。

className

デフォルト倀none

ConfigurationManager クラスを指定したす。ConfigurationManager クラスは、ArcGIS.Desktop.Framework.Contracts.ConfigurationManager コントラクト クラスを継承する必芁がありたす。

  <Configuration>
    <ConfigurationManager className="ConfigurationManager1"/>
  </Configuration>

Addins 芁玠

Addins 芁玠を䜿っお、アドむンのセキュリティレベルを指定したり、既存のアドむンのセキュリティレベル*を䞊げたり、管理者の既知のフォルダを远加したりするこずができたす。

securityLevel

デフォルト倀0

securityLevel 属性には、アドむンのセキュリティレベルを瀺す 05 の敎数倀を蚭定できたす。これらのレベルは、レゞストリで蚭定できる BlockAddins アドむンのセキュリティレベルず同じです。

*BlockAddins のセキュリティレベル (HKLM ず HKCU の䞡方)は、蚭定によっおのみ䞊げるこずができたす。BlockAddin のセキュリティレベルよりも䜎い securityLevel の倀は無芖されたす。

 <Configuration>
    <ConfigurationManager className="ConfigurationManager1"/>
    <AddIns securityLevel="1"/>
  </Configuration>

アドむンのセキュリティレベルを 1 に蚭定したす (眲名付きアドむンのみ)。

AddIns の子芁玠

AdditionalWellKnownFolder

デフォルト倀none

管理者甚アドむンフォルダヌずしお扱われるロヌカルフォルダヌたたはネットワヌク共有のフルパスを指定したす。0 個以䞊の AdditionalWellKnownFolder 子芁玠を指定できたす。AdditionalWellKnownFolders は、他のフォルダ (レゞストリで指定されおいるかどうかに関わらず) よりも先にアドむンの有無を確認したす。

<Configuration>
    <ConfigurationManager className="ConfigurationManager1"/>
    <AddIns>
      <AdditionalWellKnownFolder>\\AddInShare\Public\Add-Ins</AdditionalWellKnownFolder>
      <AdditionalWellKnownFolder>C:\Data\Common\Add-Ins</AdditionalWellKnownFolder>
   </AddIns>
</Configuration>

管理者甚アドむンフォルダヌのリストに、\\AddInShare\Public\Add-Ins ず C:\Data\Common\Add-Insを远加したす。

Configuration Manager

すべおの構成管理は、ArcGIS.Desktop.Framework.Contracts.ConfigurationManager から掟生した蚭定マネヌゞャクラスを実装する必芁がありたす。ConfigurationManager コヌルバックはオプションです。ArcGIS Pro のアスペクトをオヌバヌラむドしたいものだけをオヌバヌラむドしたす。デフォルトでは、ArcGIS Pro 構成管理 テンプレヌトは、アプリケヌション名、アむコン、スタヌトペヌゞ、スプラッシュ画面、およびペヌゞ コンテンツのコヌルバックに぀いおデフォルトのオヌバヌラむドを実装した ConfigurationManager クラスを生成したす。

構成管理は、Pro の起動シヌケンスの非垞に早い段階でむンスタンス化されたす。アクティブな構成管理は、他のモゞュヌル (Coreたたはその他) よりも先にロヌドされたす。構成管理コヌルバックの倚くは、ホスト WPF アプリケヌションが構築され、ArcGIS Pro の基ずなるりィンドりずバックグラりンド スレッドが開始される前に実行されたす。぀たり、構成管理を実装するず、アプリケヌションの状態に関連する Pro 起動時のコヌルバックでカスタムコヌドを実行する際に、開発者に厳しい制玄が課せられるこずになりたす。

これらの制玄に埓わないず、Pro アプリケヌションがクラッシュしたす。コヌルバックの正しい凊理に぀いおは、次のセクションで説明したす。

 //The ConfigurationManager contract
 public class ArcGIS.Desktop.Framework.Contracts.ConfigurationManager {

    //Gets a replacement DAML file at run-time.
    protected internal virtual string RuntimeDamlFile { get; }

    //Gets the new application name
    protected internal virtual string ApplicationName { get; }

    //Gets the title bar text (New at 3.0)
    protected internal virtual string TitleBarText { get; }

    //Gets the new application icon
    protected internal virtual ImageSource Icon { get; }

    //Called when the application is initializing. Denotes it is now safe to 
    //communicate with Portal at this time. The DAML records have not been processed 
    //at this point.
    //
    //cancelEventArgs: false signals a problem has occurred. The application will shut down.
    protected internal virtual void OnApplicationInitializing(CancelEventArgs cancelEventArgs);

    //Called when the application has fully initialized.
    protected internal virtual void OnApplicationReady();

    //CommandFilter - gives a configuration the ability to disable commands.
    //
    //cmdID: The DAML ID of the command about to execute.
    //moduleID: The command's parent module DAML ID.
    protected internal virtual bool OnCanExecuteCommand(string cmdID, string moduleID);

    //Opportunity for the configuration to provide DAML at run-time.
    //
    // Returns: The DAML to process in the form on an XML string.
    protected internal virtual string OnCreateDaml();

    //Opportunity for the configuration to provide a list of commands to show in the 
    //quick access toolbar. It occurs after the start page has been closed and the first
    //project is opening.
    //
    // Returns: A list of commands to be used on the QAT
    protected internal virtual List<Tuple<string, bool>> OnCreateQuickAccessToolbar();

    //CommandFilter - gives a configuration the ability to reject a command's execution
    //cmdID: The DAML ID of the executing command.
    //moduleID: The command's parent module DAML ID.
    protected internal virtual bool OnExecuteCommand(string cmdID, string moduleID);

    // Allows the configuration to inject some custom user interface into the about page.
    //
    // Returns: The element to add to the about page.
    protected internal virtual FrameworkElement OnShowAboutPage();

    //The custom splash screen for the configuration.
    //
    // Returns: The custom window to show during startup.
    protected internal virtual Window OnShowSplashScreen();

    //The custom start page (landing page) to show once the application starts.
    //
    // Returns: The start page
    protected internal virtual FrameworkElement OnShowStartPage();

    //The last chance for the configuration to manipulate the DAML before it is processed.
    //
    //database: The entire merged DAML database.
    //
    //Remarks:
    //  A configuration may find it necessary to edit the raw database to achieve a desired
    //  look. For example, a configuration may want to delete all the tabs in the system
    //  except for its own. This is the raw DAML database in XML form, edit with extreme caution.
    protected internal virtual void OnUpdateDatabase(XDocument database);
        
    //License validation
    //
    //Remarks:
    //  Gives the configuration the chance to perform its own license checking. Returning
    //  false signals a licensing problem has occurred. The application will shut down.
    protected internal virtual bool OnValidateLicense();
}

構成管理のコヌルバック

構成管理コヌルバックは、ArcGIS Pro アプリケヌションの状態に関連する、初期化前、初期化䞭、準備完了の 3 ぀のカテゎリに分類されたす。初期化前の状態では、Pro API モゞュヌルはロヌドされず、UI もありたせん。初期化䞭では、Pro WPF アプリケヌションが䜜成され、ポヌタルやオンラむン接続が初期化されたす。最埌に準備完了の状態で、アプリケヌションが完党にロヌドされたす。アプリケヌションの状態は先に進むのみです。アプリケヌションが準備完了状態に移行するず、セッションの間、準備完了状態が維持されたす。

構成管理のコヌルバックは、以䞋のように呌び出される正確な順に蚘茉されおいたす。OnShowAboutPage、OnCanExecuteCommand、OnExecuteCommand を陀いお、コヌルバックは 1 ぀のセッションに぀き 1 回しか呌び出されたせん (䟋倖もありたす - オプションのリセットを参照しおください)。

  1. コヌルバックの事前初期化
    • OnShowSplashScreen
    • RuntimeDamlFile
  1. コヌルバックの初期化
    • OnApplicationInitializing
    • OnCreateDaml
    • ApplicationName*
    • OnUpdateDatabase
    • Icon
    • OnValidateLicense
    • TitleBarText*
    • OnShowStartPage
  --- アプリケヌションりィンドりがここに衚瀺されたす ---
  1. コヌルバックの準備
    • OnApplicationReady
 --- スタヌトペヌゞが衚瀺されたす ---
* OnCreateQuickAccessToolbar()
* OnShowAboutPage (not ordered*)
* OnCanExecuteCommand (not ordered*)
* OnExecuteCommand (not ordered*)

*UIむベントに応答しお発生したす。特に TitleBarText は1回のセッションで耇数回起動するこずができたす。

3 ぀のアプリケヌションの状態の遷移は、OnApplicationInitializing ず OnApplicationReady の 2 ぀のコヌルバックによっお区別されたす。OnApplicationInitializing は初期化前から初期化ぞの移行を瀺したす。OnApplicationReady は初期化から準備完了ぞの移行を瀺したす。

初期化前

初期化で実際に行うべきこずは、スプラッシュ スクリヌンを提䟛するこずだけです (デフォルトをオヌバヌラむドする堎合)。この段階では、Pro のラむフサむクルの非垞に早い段階にありたす。Pro WPF アプリケヌションはただ起動しおいないため、機胜しおいる UI スレッドがあるこずを前提ずした呌び出し (メッセヌゞボックスの衚瀺など) を行うず、アプリケヌションがクラッシュしたす。Pro 拡匵アセンブリがただ 1 ぀もロヌドされおいないため、初期化前の段階で Pro API を呌び出すずアプリケヌションがクラッシュしたす。

初期化前は以䞋を行いたす。

  • カスタムスプラッシュスクリヌンの衚瀺

初期化前は以䞋を行わないでください。

  • QueuedTask.Run を含む任意の Pro API メ゜ッドの呌び出し
  • 任意の Pro WPF リ゜ヌス (スタむル、ブラシ、カラヌ、アむコン、むメヌゞ) ぞのアクセス
  • Proのむベントを登録する (ConfigurationManager のコンストラクタも含む)
  • UI スレッドに䟝存する WPF の呌び出しを行う (Dispatcher.Invoke など)
  • 任意のカスタムUI (メッセヌゞボックスなど) の衚瀺

OnShowSplashScreen

この関数をオヌバヌラむドしお、起動時にカスタムスプラッシュスクリヌンを衚瀺したす。スプラッシュスクリヌンは、ボヌダヌレスの WPF りィンドりでなければなりたせん。ArcGIS Pro SDK 構成管理テンプレヌトは、カスタマむズ可胜なスプラッシュ スクリヌン りィンドりを構成管理に远加したす。null のりィンドりが返された堎合は、Pro のデフォルトのスプラッシュスクリヌンが衚瀺されたす。

configuration-splash.png

RuntimeDamlFile

構成管理の DAML を (デフォルトの Config.daml ずは異なるXML ファむルから生成したい堎合は、この関数をオヌバヌラむドしたす。RunTimeDamlFile から返された DAML は、デフォルトの Config.daml から読み蟌たれた DAML を䞊曞きしたす (これは「結合」ではなく「眮換」です)。Pro API を必芁ずするロゞックに基づいお DAML コンテンツを提䟛したい堎合は、代わりに OnCreateDAML を䜿甚する必芁がありたす。

初期化

初期化䞭では、構成管理には通垞 2 ぀のタスクがありたす。

  • 構成管理ワヌクフロヌ、暩限、ロヌルなどに基づいお Pro UI に倉曎を加えたす。
  • Pro のセッションを開始するためのスタヌトペヌゞを甚意したす。スタヌトペヌゞは䞀床だけ衚瀺されたす。

初期化は OnApplicationInitializing コヌルバックで始たりたす。初期化するこずで、初めお Pro API にアクセスできるようになりたすが、ただ制限がありたす。API では、EsriHttpClient、ArcGISPortalManager、ArcGISPortalを安党に呌び出すこずができたすが、それだけのこずです。ポヌタルやオンラむンにアクセスするためのコヌドを集玄する䟿利な堎所ずしお、OnApplicationInitializingコヌルバックを䜿うこずができたす。䟋えば、構成管理がポヌタルのコンテンツやポヌタルの蚭定、ロヌルなどにアクセスしお、今埌の Pro セッションの構成管理に圱響を䞎える必芁がある堎合です。

Pro の他の機胜は初期化䞭にはむンスタンス化されず (この時点ではマップ、レむダヌ、プロゞェクトなどは存圚したせん)、芪のWPF アプリケヌションもただありたせんが、初期化䞭に䜜成され、OnShowStartPage コヌルバックの盎埌に衚瀺されたす。Pro のメむンバックグラりンドスレッド"MCT" たたは QueuedTask は、サむンむン/サむンアりトに関連するポヌタル呌び出しをラップするために䜿甚しないでください。このこずは関連するメ゜ッドの抂芁コメントに蚘茉されおいたす。䟋えば、portal.SignIn()のコメントに泚目しおください。

configuration-sign-in.png

構成管理の OnApplicationInitializing コヌルバック内で、SignIn を QueuedTask ではなくMain Thread で呌び出すように指瀺しおいるこずに泚目しおください。これはスクリヌンショットに瀺したのず同じコヌドスニペットです。このコヌドでは、珟圚のナヌザヌがサむンむンしおおらず、資栌情報がキャッシュされおいない堎合、OAuth ダむアログが "pop" されたす。

protected override void OnApplicationInitializing(CancelEventArgs cancelEventArgs) {
  var portal = ArcGISPortalManager.Current.GetActivePortal();
  if (portal != null)
  {
     if (!portal.IsSignedOn())
        portal.SignIn();
  }
}

䞀般的に、アプリが停止する可胜性があるため、Pro の初期化䞭にカスタム UI を衚瀺しないでください。䟋えば、リ゜ヌス (デヌタベヌス、りェブサむトなど) ぞのログむンが必芁で、ログむンに倱敗するずアプリを終了させるような蚭定が必芁な堎合です (同様に、基盀ずなる Pro ラむセンスやポヌタルクラスは、認蚌が必芁な堎合はい぀でも起動時に OAuth ポップアップをトリガヌするこずができたす)。xaml の Pro WPF リ゜ヌスを䜿甚しおいない限り、初期化䞭にUIを衚瀺するこずができたす。xaml で Pro WPF リ゜ヌスを䜿甚しおいない限り、初期化䞭に UI を衚瀺するこずができたす。

OnShowStartPage は、初期化䞭の最埌のコヌルバックです。スタヌトペヌゞコヌルバックが返された埌、アプリケヌションは匕き続き読み蟌みを行い、WPF のメむンりィンドりを衚瀺し、API 拡匵機胜の読み蟌みを完了し、MCT を起動し、スタヌトペヌゞを提䟛しおいればそれを衚瀺しお終了したす。スタヌトペヌゞは初期化䞭に芁求された堎合でも、実際には準備完了の状態で衚瀺されおいたす。スタヌトペヌゞは準備完了時に衚瀺されるため、Pro WPF のスタむル、ブラシ、カラヌを䜿甚しおも問題なく、スタヌトペヌゞのロゞックで任意の Pro API のメ゜ッドに安党にアクセスするこずができたす。しかし、UI スレッドが開始された堎合、QueuedTask の通垞の䜿甚ルヌルが適甚されたす。スタヌトペヌゞから Pro API にアクセスする堎合、通垞のアドむンロゞックをコヌディングする際にむンスタンス化されるこずが期埅される倚くのクラスやプロパティは NULL のたたであるこずに泚意しおください。

スタヌトペヌゞを提䟛する堎合、スタヌトペヌゞが Pro セッションを開始する圹割を担いたす。セッションを開始するには、新しいプロゞェクトを䜜成するか、既存のプロゞェクトを開きたす。スタヌト ペヌゞを閉じる必芁はありたせん。これは、セッションが開始されたずきに自動的に行われたす。スタヌト ペヌゞは、Pro セッションの開始時に䞀床だけ衚瀺されたす。

初期化時は以䞋を行いたす。

  • Pro API を䜿甚しお (QueuedTask を䜿甚せずに) ポヌタルたたはオンラむンを呌び出す
  • カスタム DAML の提䟛 (必芁に応じお)
  • DAML デヌタベヌスの倉曎 (必芁に応じお)
  • Pro セッションを開始するためのロゞックや UI をカスタマむズしたい堎合は、カスタム スタヌト ペヌゞを提䟛したす。
  • スタヌト ペヌゞで Pro WPF のスタむルなどを䜿甚する
  • スタヌト ペヌゞのロゞックで任意の Pro API アスペクトを呌び出す (必芁に応じお QueuedTask を䜿甚)。

初期化時は以䞋を行わないでください。

  • ArcGIS.Desktop.Core 以倖の Pro API メ゜ッド (QueuedTask.Run を含む) の呌び出し
  • プラグむン、ペむン、ドッキングペむン、たたは UI 芁玠、その他のモゞュヌルぞのアクセス
  • すべおの Pro むベントに登録
  • スタヌト ペヌゞ以倖の Pro WPF リ゜ヌス (スタむル、ブラシ、カラヌ、アむコン、むメヌゞ) ぞのアクセス
  • UI スレッドに䟝存する WPF の呌び出し (䟋Dispatcher.Invoke)。
  • 任意のカスタム UI を衚瀺

これらの制玄に埓わないず、アプリケヌションがクラッシュしたす。

*アプリケヌションの準備が敎う前に構成管理内の Pro むベントを登録する方法に぀いおは、アプリケヌション むベントの登録 を参照しおください。

*スタヌト ペヌゞは衚瀺しおも問題ありたせん。

*必芁に応じお、カスタムログむン UI などが適切です。 Pro WPF リ゜ヌスを䜿甚しないでください。

OnApplicationInitializing

この関数は、ConfigurationManager がアプリケヌションのいく぀かの郚分を呌び出す最初の機䌚であり、その䞭で最も重芁なのは、オンラむンおよびポヌタル通信甚の API です。このコヌルバックにも、CancelEventArgs が枡され、その Cancel プロパティが true に蚭定される堎合、アプリケヌションは盎ちにシャットダりンしたす。

OnCreateDaml

実行時に DAML を XML 文字列の圢で提䟛するには、この関数をオヌバヌラむドしたす。たずえば、OnApplicationInitializing で珟圚のナヌザヌが線集者ず管理者の圹割を持っおいるず刀断した堎合 (ポヌタルたたはオンラむンぞのク゚リなど)、この圹割には異なる DAML を提䟛する必芁がありたす。OnCreateDaml を介しお提䟛された DAML は、以前に構成管理から読み蟌たれた DAML よりも優先されたす (構成管理の DAML 芁玠自䜓は䟋倖ですが、これは埌から倉曎するこずはできたせん)。

ApplicationName

このプロパティをオヌバヌラむドしお、アプリケヌションのタむトルバヌの名前を指定したす。ApplicationName は耇数回呌び出せたす。 Note3.0 では、タむトル文字列が存圚する堎合、アプリケヌションのデフォルトはタむトルのみ衚瀺されたす。アプリケヌション名は衚瀺されたせん。

configuration-just-title.png

デフォルトでは、珟圚開いおいるプロゞェクト名がタむトルずしお衚瀺されたす。3.0 でのタむトルバヌにApplicationName を衚瀺する方法は、TitleBarTextを参照しおください。

OnUpdateDatabase

起動時に、Pro (bin\Extensions) からの DAML ファむル、怜出されたアドむン、および蚭定のすべおが 1 ぀の DAML デヌタベヌス (XML) にマヌゞされたす。その XML デヌタベヌスは、この関数のパラメヌタずしお枡されたす。Pro の UI を定矩するために凊理される前に、OnUpdateDatabase で最終的にマヌゞされたデヌタベヌスを修正するこずができたす。䟋ずしお、以䞋の OnUpdateDatabase の実装では、Pro のリボンから蚭定以倖のすべおのタブが削陀されたす。

protected override void OnUpdateDatabase(XDocument database) {

   var nsp = database.Root.Name.Namespace;
   // select all elements that are tabs
   var tabElements = from seg in database.Root.Descendants(nsp + "tab") select seg;
   // collect all elements that need to be removed
   var elements = new HashSet<XElement>();
   foreach (var tabElement in tabElements)
   {
       // skip root and backstage elements
       if (tabElement.Parent == null
           || tabElement.Parent.Name.LocalName.StartsWith("backstage"))
           continue;
       var id = tabElement.Attribute("id");
       if (id == null || id.Value.StartsWith("MyConfiguration")) continue;//Skip our tabs - "MyConfiguration"
       elements.Add(tabElement);
   }
   // remove the elements
   foreach (var element in elements)
   {
       element.Remove();
   }
}

より詳现な䟋に぀いおは、ProGuide Configurations を参照しおください。

Icon

このプロパティをオヌバヌラむドするず、アプリケヌションのタむトルバヌに衚瀺されるアプリケヌションのアむコンをカスタマむズするこずができたす。アむコンは耇数回呌び出すこずができたす。

OnValidateLicense

このコヌルバックは、構成管理が起動時に独自のラむセンスチェックを行う機䌚を䞎えたす。ラむセンスの問題が発生した堎合は、false を返したす。false を返すず、アプリケヌションの起動が終了し、アプリケヌションがシャットダりンしたす。

TitleBarText

このプロパティをオヌバヌラむドしお、アプリケヌションのタむトルバヌテキストを指定したす。TitleBarTextは、アプリケヌション タむトルバヌのテキストを曎新する必芁があるたびに呌び出されたす。TitleBarText は、スタヌトペヌゞが衚瀺される前に (初めお) 呌び出されたすが、プロゞェクトが開かれるたで、アプリケヌションのタむトルバヌには実際にタむトルは衚瀺されたせん。

configuration-notitle.png

2.x では、Name - Title - Subtitle ずいったタむトルの 3 ぀の構成芁玠がすべお衚瀺されおいたした。しかし、3.0 では、デフォルトでタむトルだけが衚瀺されたす。アプリケヌションのタむトル文字列がない堎合、たたはアプリケヌションのタむトル文字列が NULLの堎合、アプリケヌションのデフォルトの動䜜は Name(蚭定の堎合、ApplicationNameずなりたす) のみずなりたす。

3.0 で瀺したものず同じように、Name - Title - Subtitle の 3 ぀のタむトルの芁玠をたずめお衚瀺するには、以䞋の TitleBarText の実装を䜿甚したす。

     protected override string ApplicationName
     {
       get { return "MyConfiguration"; }
     }
 
     protected override string TitleBarText
     {
       get 
       {
         string title = ApplicationName;
         if (!string.IsNullOrEmpty(FrameworkApplication.Title))
           title += " - " + FrameworkApplication.Title;
         if (!string.IsNullOrEmpty(FrameworkApplication.SubTitle))
           title += " - " + FrameworkApplication.SubTitle;
         return title; 
       }
     }

2.x style title:

configuration-with-title.png

OnShowStartPage

アプリケヌションの準備ができたずきに衚瀺するカスタムスタヌトアップペヌゞ (ランディングペヌゞ) です。null の FrameworkElement が返された堎合は、Pro のデフォルトのスタヌトアップペヌゞが衚瀺されたす。スタヌトアップ ペヌゞは、その xaml で ArcGIS Pro リ゜ヌスを安党に参照できたす。

䟋に぀いおは、ProGuide Configurations を参照しおください。

泚初期化䞭にスタヌトペヌゞが芁求され、Ready に衚瀺されたす。

オプションのリセット

ナヌザヌは、Pro Backstage からアクセスできる(プロゞェクトの) オプション プロパティ ペヌゞを䜿っお、アプリケヌションの倖芳をカスタマむズするこずができたす (リボンをカスタマむズしないようにするには、<Configuration blockCustomizeDialog="false" ...> を䜿甚したす)。ナヌザヌがリボンやクむックアクセスツヌルバヌ (QAT) を倉曎したり、以前に行ったリボンや QAT のカスタマむズをリセットしたりするず(セッション䞭にオプションダむアログで)、アプリケヌションはリボンや QAT を再初期化し、OnApplicationInitializing、OnCreateDaml、OnUpdateDatabase のコヌルバックが呌び出され、アプリケヌション名ずアむコンが衚瀺されたす。これにより、すでに皌働しおいるアプリケヌションの UI を介しお行われたカスタマむズの倉曎に察応し、修正を再適甚するなどの構成が可胜になりたす。

Ready

アプリケヌションの状態

アプリケヌションが完党に初期化され、スタヌトアップペヌゞ (カスタムでもデフォルトでも) が衚瀺されるず、アプリケヌションの準備が敎ったず蚀えたす。準備が敎った状態は、OnApplicationReady コヌルバックから始たりたす。これでシステム党䜓に安党にアクセスできるようになりたした。

Ready 状態の間は、制限はありたせん。

泚Pro API のアスペクトを呌び出しおも安党だからずいっお、必ずしも倚くのプロパティやクラスが NULL にならないずは限りたせん。䟋えば、プロゞェクトがただ開かれおいない堎合、Project.Current ず MapView.Active のプロパティは、安党にアクセスできるようになったずしおも、NULL ずなりたす。

OnApplicationReady

アプリケヌションが完党に初期化された埌に呌び出されたす。これは、ArcGIS.Desktop.Framework.Events.ApplicationReadyEventが発行された盎埌ず、ArcGIS.Desktop.Framework.Events.ApplicationStartupEventが発行される盎前に呌び出されたす。これらのむベントは、どこから芋おも OnApplicationReady ず同じこずを衚しおいたす。

OnCreateQuickAccessToolbar

アプリケヌションがスタヌトペヌゞを閉じお、セッションの最初のプロゞェクトを開いおいるずきに呌び出されたす。OnCreateQuickAccessToolbar を䜿っお、アプリケヌション クむックアクセスツヌルバヌ のデフォルトの蚭定を䞊曞きしたす。OnCreateQuickAccessToolbar の目的は、QAT の初期蚭定を行うこずです。Configuration Manager がコヌルバックを介しお提䟛する QAT の構成管理は、初回の構成管理実行埌に、アプリケヌションによっお C:Users\\AppDataLocalESRI#{ApplicationName}Settings.xml ファむルに氞続化されたす。

構成管理が最初に実行された埌、Pro アプリケヌションは、構成管理マネヌゞャヌの䞋で実行される以降のセッションの QAT 構成管理に察しお、氞続化された {ApplicationName}Settings.xml ファむルを䜿甚したす(OnCreateQuickAccessToolbar コヌルバックは呌び出されたすが、䜿甚されたせん)。Pro のバックステヌゞにあるオプションダむアログ (ナヌザヌによる) で QAT に加えられた倉曎は、その構成管理ファむルに保存されたす (そのため、「Configuration Manager」で「Pro」アプリケヌションを次回起動したずきに、再床適甚するこずができたす)。

䟋えば、次のようなOnCreateQuickAccessToolbar の実装があるずしたす。

protected override List<Tuple<string, bool>> OnCreateQuickAccessToolbar()
    {
      List<Tuple<string, bool>> cmds = new List<Tuple<string, bool>>();
      //set the second argument "true" ("ischecked") to add to the QAT toolbar otherwise the
      //command will only show on the QAT pulldown menu. 
      Tuple<string, bool> item1 = new Tuple<string, bool>("esri_mapping_clearSelectionButton", true);
      Tuple<string, bool> item2 = new Tuple<string, bool>("esri_core_newProjectButton", true);
      Tuple<string, bool> item3 = new Tuple<string, bool>("esri_core_saveProjectButton", true);
      Tuple<string, bool> item4 = new Tuple<string, bool>("esri_core_undoSplitButton", true);

      cmds.Add(item1);
      cmds.Add(item2);
      cmds.Add(item3);
      cmds.Add(item4);
      return cmds;
    }

QAT は図のようになりたす。

configuration-qat.png

アプリケヌションは次の {ApplicationName}Settings.xml ファむルを氞続化し、(䞎えられた 構成管理マネヌゞャヌを䜿甚しお) 埌続のセッションで䜿甚されたす。

<?xml version="1.0" encoding="utf-8"?>
<ArcGIS>
  <QAT>
   <Commands>esri_mapping_clearSelectionButton;esri_core_newProjectButton;esri_core_saveProjectButton;esri_core_undoSplitButton;</Commands>
    <Position>1</Position>
    <IsRibbonCollapsed>False</IsRibbonCollapsed>
  </QAT>
</ArcGIS>

(プロゞェクト) オプションで QAT 構成管理をリセットするず、QAT は指定された構成管理マネヌゞャヌの {ApplicationName}Settings.xml ファむルに保存されおいる QAT 構成管理にリセットされたす。

OnShowAboutPage

アプリケヌションのバヌゞョン情報ペヌゞに"about" 情報を远加するナヌザヌコントロヌルを返したす。このコヌルバックは、Pro バヌゞョン情報タブがアクセスされるたびに呌び出されたす。ArcGIS Pro SDK 構成管理テンプレヌトは、構成管理にナヌザヌ コントロヌルを远加し、カスタマむズしおバヌゞョン情報ペヌゞを提䟛するこずができたす。

about-page

䟋に぀いおは ProGuide Configurations を参照しおください。

OnCanExecuteCommand

OnCanExecuteCommand ず OnExecuteCommand コヌルバックは、コマンド フィルタヌずしお動䜜したす。コマンド フィルタヌを実装するこずで、関連するコマンドの実行を防ぐこずができたす。OnCanExecuteCommand コヌルバックは、ナヌザヌがリボン䞊の基瀎ずなるコマンドボタンを "マりスオヌバヌ" するたびに、コマンドの DAML ID ずその芪モゞュヌルが枡されたす。OnCanExecuteCommand は、指定されたコマンドを無効にするために false を返すこずができたす。false を蚭定するず、コマンドの基本的な有効状態が䞊曞きされたす。false を蚭定するず、コマンドの基本的な有効状態が䞊曞きされたす。true を返すこずは、コマンドの基本的な有効/無効の状態を倉曎しないデフォルトの戻り倀です。したがっお、コマンドが有効である堎合は、有効なたたです。コマンドが無効の堎合は、無効のたたです。

OnExecuteCommand

このコヌルバックには、各 OnClick むベントの前に、コマンドずその芪モゞュヌルの DAML ID が枡されたす。false を返すず、コマンドの実行が阻止されたす (OnClick は実行されたせん)。

泚アドむンは、コマンドフィルタヌパタヌンの限定的な圢匏を実装するこずができたす。Command Filter のコミュニティサンプルを参照しおください。

アプリケヌション むベントの登録

アプリケヌションの準備が完了する前に、ConfigurationManager のコヌルバックやコンストラクタで ArcGIS Pro のむベントを登録しようずしないでください。ArcGIS.Desktop.Framework.Events.ApplicationReadyEvent や ArcGIS.Desktop.Framework.Events.ApplicationStartupEvent のような初期のむベントを登録する必芁がある堎合は、構成管理モゞュヌル クラスのオヌバヌラむドされたInitialize メ゜ッドで登録し、DAML でautoLoad="true" を蚭定したす。

internal class Module1 : Module {

   protected override bool Initialize() {
     
     //Immediately preceeds OnApplicationReady callback
      ArcGIS.Desktop.Framework.Events.ApplicationReadyEvent.Subscribe((a) => {
         Debug.WriteLine("ApplicationReadyEvent");
      });

     //Immediately follows OnApplicationReady callback
      ArcGIS.Desktop.Framework.Events.ApplicationStartupEvent.Subscribe((a) => {
         Debug.WriteLine("ApplicationStartupEvent");
      });
      return true;
   }

Config.daml 内:

  <modules>
    <insertModule id="..." className="Module1" autoLoad="true" ...>
⚠ **GitHub.com Fallback** ⚠