インタラクションとアクティビティの実装
16 タスク
45 分
シナリオ
ケースを確認する場合、アカウントにアクセスした後、「Customer Information」ウィンドウに顧客のアカウント情報が表示されます。 インタラクションがアクティブの間は、アカウント情報を更新できます。 データの整合性を確保するために、アプリケーションで顧客情報を利用できない場合は、データをフレームワークに保管しないでください。
新しいアカウントウィンドウがCRMアプリケーションで表示されるたびに、ユーザーインタフェースが新しいアカウント情報で更新されます。 オートメーションでは、アカウント番号がコンボボックスで選択されるときに、値が現在アクティブかどうかを確認します。 値がアクティブの場合、アクションは不要です。 値がアクティブでない場合、CRMChildウィンドウをアクティブ化して、選択したアカウント情報でUIを更新します。 フレームワークでは、UIを表示または更新するために、アクティビティがCRMPrj、MainPrj、ACMESearchPrj間で通信する必要があります。 interaction-call.xmlには、この要件を満たすために必要なすべてのアクティビティが含まれているわけではありません。
ユーザーが複数のCRMアカウントウィンドウを開いているか、またはフレームワーク内に複数のインタラクションがある場合、ユーザーは非アクティブウィンドウをクリックして、CRMアプリケーションでウィンドウを切り替えることができます。 CRMウィンドウを手動でアクティブ化すると、UIアカウント情報が更新されて、新しいアクティブなインタラクションまたはアカウント情報のコンテキスト値を表示します。
ビジネスケースは、ユーザーが「Customer Information」ウィンドウでボタンをクリックすると、一番近いストアの検索が開始されることを示しています。 検索が完了し、一番近いストアの住所が「Customer Information」ウィンドウに表示されます。 既存のプロジェクトはインタラクションフレームワークを使用しているため、ACMESearchPrjも同様にインタラクションフレームワークを必要とします。 ボタンをクリックしてアクティビティが開始されると、ACMESystemで検索が開始されます。 アクティビティでは、MainPrjに戻るためにメッセージとブール値の結果が必要であるため、検索が正常に完了しなかった場合は、適切なメッセージがユーザーに表示されます。 ACMESearchPrjには検索を実行するためのオートメーションが含まれていますが、アクティビティおよびインタラクションフレームワークを更新するにはリファクタリングが必要です。
課題
ソリューションのこの部分では、以下のタスクを行います。
- プロシジャーオートメーション、Main_P_LoadCustInfoValuesを作成します。これは、インタラクションがフレームワーク内に存在する場合にのみ、顧客アカウントのコンテキスト値をフレームワークからユーザーインタフェースに移動させます。 値を更新するときに、アカウント番号/インタラクションキーをコンボボックスの選択した項目として使用します。
- 2つのアクティビティコンポーネントを_GC_CRMに追加して構成し、オートメーション、CRM_E_IntMgr_InteractionStartedを追加してアクティビティを開始します。
- フレームワークのインタラクションキーとCRMアプリケーションの顧客のアカウント情報が一致していることを検証します。
- 一致する場合は、フレームワークにアカウント情報を保存します。 一致が存在しない場合は、エンドユーザーにメッセージを表示します。
- コントローラープロジェクトで、フレームワークがUpdateDisplayアクティビティを開始したときにMain_P_LoadCustInfoValuesを呼び出すオートメーションを追加します。
- 2つのアクティビティをXMLファイルに追加します。
アクティビティ アクティビティパラメーター ActivateMDIWindow 文字列としてのstrAcctNum GetNearestStore 文字列としてのstrResult
ブール(値)としてのisSuccess
- オートメーション、CRM_E_CRMChild_Activatedを作成します。これは、ウィンドウがアクティブ化されると、インタラクションをアクティブ化します。
- オートメーション、Main_E_IntMgr_InteractionActivatedを作成します。これは、インタラクションがアクティブ化されると、UIを更新します。
- オートメーション、Main_E_cmbGetAcct_SelectedIndexChangedを作成します。これは、選択されたアカウント番号がアクティブでない場合にアクティビティを開始します。
- オートメーション、CRM_E_ActivateMDIWin_ActivityStartedを作成します。これは、アクティビティが開始されると、ウィンドウをアクティブ化します。
- 新しいアクティビティを_GC_Mainおよび_GC_ACMEに追加して、一番近いストアを取得します。
- オートメーション、Main_E_btnNearestStore_Clickを作成して、GetNearestStoreアクティビティを開始します。
- オートメーション、CRM_E_GetNearestStore_ActivityStartedを作成して、アカウントの郵便番号に基づいて一番近いストアの検索を実行します。
- 一番近いストアのアクティビティが失敗した場合にユーザーにメッセージを表示するオートメーションを作成します。
- インタラクションが同時に実行されている間に一番近いストアの値を表示するように、Main_P_LoadCustInfoValuesを変更します。
- コンテキスト値が変更されたときにユーザーインタフェースを更新するオートメーションを作成します。
詳細なタスク
1 ユーザーインターフェイスのコンテキスト値を表示するオートメーションを作成する
- ソリューションエクスプローラーで、「MainPrj」プロジェクトを右クリックして、「Add」>「New Folder」を選択し、フォルダーに名前を付けます。
- ソリューションエクスプローラーの「New Folder」フィールドで、「Procedures」を入力します。
- ソリューションエクスプローラーで、「Procedures」フォルダーを右クリックして「Add」 > 「New Automation」を選択し、「Add New Item」ウィンドウを表示します。
- 「Add New Item」ウィンドウの「Name」フィールドで、「Main_P_LoadCustInfoValues」を入力します。「Add」をクリックしてウィンドウを閉じ、デザインエリアでオートメーションを開きます。
- オートメーションで、右クリックして「Add Exit Point」を選択して、「Execute 」デザインブロックを表示します。
- 「Execute」デザインブロックで、「+」アイコンをクリックしてパラメーターを追加します。
- 「Execute」デザインブロックで、次のようにしてパラメーターを編集します。
- データタイプをStringに変更します。
- param1の名前をstrKeyに変更します。
- オートメーションで、右クリックして「Add Exit Point」を選択して、Exitオブジェクトを追加します。
- Exit1ポイントで、名前を「Exit」に変更します。
- オートメーションで、右クリックしてエリアを開き、「Add Label」を選択して、Labelオブジェクトを追加します。
- 「Label1」デザインブロックで、「Label1」をクリックして「Exit」を入力します。
- オートメーションで、右クリックして「Jump To」>「Exit」を選択し、「Jump To」デザインブロックを追加します。
- Object Hierarchyから、次のデザインブロックをオートメーションに追加します。
プロジェクト項目ソース コントロール 説明/設定 _GC_Main IntMgr.InteractionExistsメソッド - 次の図に示すように、オートメーションでデザインブロックを整理して、接続します。
- _GC_MainのObject Hierarchyで、IntMgrオブジェクトをオートメーションにドラッグし、「Select InteractionManager Member」ウィンドウを表示します。
- 「Select InteractionManager Member」ウィンドウで、次のIntMgrプロパティチェックボックスを選択します。
- AcctNum
- Address
- City
- Name
- State
- Zipcode
- 「Select InteractionManager Member」ウィンドウで、「OK」をクリックして「Select Member」ウィンドウを閉じ、デザインブロックを更新します。
- frmCustInfoのObject Hierarchyで、次のコントロールをオートメーションにドラッグします。 各コントロールの「Text property」デザインブロックが表示されます。
- MaintxtCurrentAcct
- MaintxtAddress
- MaintxtCity
- MaintxtName
- MaintxtState
- MaintxtZip
- オートメーションで、次のデザインブロックをMain_P_LoadCustInfoValuesオートメーションに追加します。
プロジェクト項目ソース コントロール 説明/設定 Customer Information MaincmbGetAcct.SelectedItemプロパティ Object Inspectorで、「Configure Type」を使用してプロパティを確認します。
Main_P_LoadCustInfoValues strKey.Thisプロパティ strKey入力パラメーターのプロキシを作成します - オートメーションで、右クリックして「Jump」>「To Exit」を選択し、新しい「Jump To」デザインブロックを追加します。
- オートメーションで、IntMgr.InteractionExists.True出力をIntMgr.Properties入力に接続して、プロパティデザインブロックで鍵アイコンを表示します。
- デザインブロックで、鍵アイコンをクリックして、ドロップダウンメニューを表示します。
- ドロップダウンメニューで、「Key」を選択して、デザインブロックにデータ入力パラメーターを表示します。
- オートメーションで、strKey.Thisデータ出力をIntMgr.Keyデータ入力に接続します。
- 次の図に示すように、オートメーションで残りのデザインブロックを接続します。
- メニューバーから、「File」>「Save All」を選択してオートメーションを保存します。
2 アクティビティコンポーネントを追加する
- ソリューションエクスプローラーで、「_GC_CRM.os」をダブルクリックし、デザインウィンドウで開きます。
- Toolboxで、「Interaction Management」セクションを展開します。
- 「Toolbox」で、2つのActivityコンポーネントをグローバルコンテナにドラッグします。
- _GC_CRM.osで、「activity1」をクリックしてオブジェクトをハイライトし、「Properties」ウィンドウを更新します。
- 「Properties」ウィンドウの「(Name) 」プロパティで、「CRMactGetCustInfo」と入力してアクティビティ名を変更します。
- 「Properties」ウィンドウの「Misc」>「Activity Name」プロパティドロップダウンで、「GetCustomerInformation」を選択します。
- 「_GC_CRM.os」で、「activity2」をクリックしてオブジェクトをハイライトし、「Properties」ウィンドウを更新します。
- 「Properties」ウィンドウの「(Name)」プロパティで、「CRMactUpdateDisplay」と入力してアクティビティ名を変更します。
- 「Properties」ウィンドウの「Misc」>「Activity Name」プロパティドロップダウンで、「Update Display」を選択します。
- メニューバーから、「File」>「Save All」を選択してアクティビティの編集内容を保存します。
3 アクティビティを開始するオートメーションを追加する
- CRMPrjのソリューションエクスプローラーで、「Events」を右クリックして「Add」>「New Automation」を選択し、「Add New Item」ウィンドウを表示します。
- 「Add New Item」ウィンドウの「Name」フィールドに、「CRM_E_IntMgr_InteractionStarted」と入力します。
- 「Add New Item」ウィンドウで、「Add」をクリックしてウィンドウを閉じ、デザインエリアでオートメーションを表示します。
- オートメーションで、次のデザインブロックを追加します。
プロジェクト項目ソース コントロール 説明/設定 _GC_CRM IntMgr.InteractionStartedイベント デザインブロックで下向き矢印をクリックして、インタラクションキーパラメーターを公開します。 _GC_CRM CRMactGetCustInfo.Startメソッド _GC_CRM CRMactUpdateDisplay.Startメソッド - 次の図に示すように、オートメーションでデザインブロックを接続します。
- メニューバーから、「File」>「Save All」を選択して作業内容を保存します。
4 インタラクションとアカウント番号の一致を検証するオートメーションロジックを追加する
プロジェクト項目ソース | コントロール | 説明/設定 |
---|---|---|
_GC_CRM | CRMactGetCustInfo.ActivityStartedイベント | デザインブロックで下向き矢印をクリックして、インタラクションキーパラメーターを公開します。 |
CRM | CRMlblAcctNum.Textプロパティ | アカウント番号を使用して、キー値と比較します。 |
- CRMPrjのソリューションエクスプローラーで、「Events」を右クリックして「Add」>「New Automation」を選択し、「Add New Item」ウィンドウを開きます。
- 「Add New Item」ウィンドウの「Name」フィールドに、「CRM_E_IntMgr_InteractionStarted」と入力します。
- 「Add New Item」ウィンドウで「Add」をクリックしてウィンドウを閉じ、デザインエリアでオートメーションを開きます。
- オートメーションで、次のデザインブロックをオートメーションに追加します。
- 次の図に示すように、オートメーションで、リンクを接続します。 CRMlblAcctNumに接続すると、鍵アイコンが表示され、「None」から「Key」への変更が示されます。
- Toolboxの「Comparisons and Expression」セクションで、Boolean Expressionコンポーネントをオートメーションに追加します。
- 「Properties」ウィンドウで、ブール式を次のように構成します。
- 「Expression」プロパティで、「a = = b」と入力します。
- 「Identifiers」プロパティで、省略符号をクリックして、両方のデータタイプを「Double」から「String」に変更します。
- オートメーションの「Boolean Expression」で、「result 」の青いデータポートを右クリックして「Make Decision」を選択し、デシジョンデザインブロックをオートメーションに追加します。
- 「Toolbox」ウィンドウの「Advanced」セクションで、「MessageDialog」コンポーネントをオートメーションにドラッグして、「Choose Method Overload」ウィンドウを表示します。
- 「Choose Method Overload」ウィンドウで、「(String message): Dialog Result」を選択します。
- 「Choose Method Overload」ウィンドウで、「OK」をクリックして、オートメーションおよび下にある「Local」タブに「MessageDialog」を表示します。
- messageDialog1デザインブロックで、「text Message」をクリックし、「Key/Account Number mismatch」を入力します。
- 次の図に示すように、オートメーションで、オートメーションリンクを接続します。
5 データをフレームワークに保管するオートメーションロジックを追加する
- Object Hierarchyで、次のコントロールをオートメーションにドラッグして、それぞれの「Text property」デザインブロックを追加します。
- CRMlblAcctNum
- CRMtxtStreetAdd
- CRMtxtCity
- CRMtxtName
- CRMtxtState
- CRMtxtZip
- Object Hierarchyの_GC_CRM itemで、IntMgrオブジェクトをオートメーションにドラッグして、「Select InteractionManager Member」ウィンドウを表示します。
- 「Select InteractionManager Member」ウィンドウで、次のプロパティチェックボックスを選択します。
- AcctNum
- Address
- City
- Name
- State
- Zipcode
- 「Select InteractionManager Member」ウィンドウで、「OK」をクリックしてデザインブロックを更新し、ウィンドウを閉じます。
- 次の図に示すように、オートメーションで、オートメーションリンクを接続します。 IntMgrプロパティデザインブロックに接続すると、鍵アイコンが表示され、「None」から「Key」に変更したことが示されます。
- メニューバーから、「File」>「Save All」を選択して作業内容を保存します。
6 アクティビティを_GC_Mainに追加する
- ソリューションエクスプローラーで、「_GC_Main.os」をダブルクリックし、デザインエリアでファイルを開きます。
- 「Toolbox」の「Interaction Management」セクションで、Activityコンポーネントをグローバルコンテナにドラッグします。
- 「_GC_CRM.os」で、「activity1」をクリックして選択し、「Properties」ウィンドウを更新します。
- 「Properties 」ウィンドウの「(Name) 」プロパティで、「MainactUpdateDisplay」を入力します。
- 「Properties」ウィンドウの「Misc」>「Activity Name」プロパティドロップダウンリストで、「UpdateDisplay」を選択します。 このアクティビティをMainPrjインタラクションに追加すると、フレームワークがCRMPrjでのアクティビティの開始に応答できるようになります。
- メニューバーから、「File」>「Save All」をクリックして編集内容を保存します。
7 ユーザーインターフェイスを更新するためのオートメーションを作成する
- MainPrjのソリューションエクスプローラーで、「Events」を右クリックして「Add」>「New Automation」を選択し、「Add New Item」ウィンドウを表示します。 。
- 「Add New Item」ウィンドウの「Name」フィールドに、「Main_E_UpdateDisplay_ActivityStarted」を入力します。
- 「Add New Item」ウィンドウで「Add」をクリックしてウィンドウを閉じ、デザインエリアでオートメーションを開きます。
- オートメーションで、次のデザインブロックを追加します。
プロジェクト項目ソース コントロール 説明/設定 _GC_Main MainActUpdateDisplay.ActivityStartedイベント - Object Hierarchyで、「Main_P_LoadCustInfoValues」をクリックして、オートメーションをハイライトします。
- Object Inspectorで、「Show Methods Only」(ボックス)アイコンをクリックします。
- Object Inspectorで、Executeメソッドをオートメーションにドラッグします。
- 次の図に示すように、オートメーションでデザインブロックを接続します。
- メニューバーから、「File」>「Save All」を選択して作業内容を保存します。
- メニューバーから、「Debug」>「Start Debugging」を選択して、ソリューションをテストします。
- CRMアプリケーションが起動し、John Smithアカウントが開きます。
- 「frmCustInfo」ウィンドウが表示されます。
- John Smithアカウント情報がfrmCustInfoに表示されます。
- CRMアプリケーションで、「User 2」をクリックして2番目のアカウントを開き、frmCustInfoを更新します。
- 「frmCustInfo」ウィンドウのドロップダウンリストから、「23453」を選択します。 ウィンドウおよびCRMアプリケーションでは何も変更されません。
- メニューバーから、「Debug」>「Stop Debugging」を選択して、ソリューションのテストを停止します。
8 アクティビティをinteraction-call.xmlに追加する
- ソリューションエクスプローラーで、「_GC_Main」をダブルクリックし、デザインウィンドウに表示します。
- 「_GC_Main」ウィンドウで、「IntMgr」を右クリックし、「Modify Configuration」を選択して、デザインエリアでinteraction-call.xmlを開きます。
- interaction-call.xmlで、ファイルを移動して「Activities」セクションを見つけます。
- 「Activities」セクションの最後のアクティビティ項目の後に、次の情報を入力します。
<Activity Name=”ActivateMDIWindow”>
<Value Name=”AcctNumber” Type=”String” />
</Activity>
<Activity Name="GetNearestStore">
<Value Name="strResult" Type="String" />
<Value Name="isSuccess" Type="Boolean" />
</Activity>
- メニューバーから、「File」>「Save All」をクリックして編集内容を保存します。
- メニューバーから、「Build」>「Clean Solution」を選択して、メモリーキャッシュを削除します。
- メニューバーから、「Build」>「Rebuild Solution」を選択して、メモリーキャッシュを新しいXMLデータで作成し直します。
9 ウィンドウがアクティブ化されると、インタラクションをアクティブ化するオートメーションを作成します。
- CRMPrjのソリューションエクスプローラーで、「Events」を右クリックして「Add」>「New Automation」をクリックし、「Add New Item」ウィンドウを表示します。
- 「Name」フィールドに「CRM_E_CRMChild_Activated」を入力します。
- 「Add New Item」ウィンドウで、「Add」をクリックしてウィンドウを閉じ、デザインエリアでオートメーションを表示します。
- オートメーションで、次のデザインブロックを追加します。
プロジェクト項目ソース コントロール 説明/設定 CRM CRMChild.Activatedイベント ウィンドウがアクティブ化されると、オートメーションが開始します。
CRM CRMlblAcctNum.Textプロパティ アクティブ化されたウィンドウのテキストプロパティには、フレームワーク内の正しいインタラクションをアクティブ化するために必要なインタラクションキーが含まれています。 _GC_CRM IntMgr.ActivateInteractionメソッド - 次の図に示すように、オートメーションでデザインブロックを接続します。
- メニューバーから、「File」>「Save All」を選択してオートメーションを保存します。
10 インタラクションがアクティブ化されるとUIを更新するオートメーションを作成する
- MainPrjのソリューションエクスプローラーで、「Events」を右クリックして「Add」>「New Automation」を選択し、「Add New Item」ウィンドウを表示します。
- 「Name」フィールドに「Main_E_IntMgr_InteractionActivated」と入力します。
- 「Add New Item」ウィンドウで、「Add」をクリックしてウィンドウを閉じ、デザインエリアでオートメーションを表示します。
- オートメーションで、次のデザインブロックを追加します。
プロジェクト項目ソース コントロール 説明/設定 _GC _Main IntMgr.InteractionActivatedイベント インタラクションがアクティブ化されると、オートメーションが開始します。 下向き矢印をクリックして、インタラクションを公開します。
Main_P_LoadCustInfoValuesオートメーション Main_P_LoadCustInfoValues.Executeメソッド UIを更新するためのプロシジャーオートメーションはすでに存在するため、そのオートメーションを呼び出します。
- 次の図に示すように、オートメーションでデザインブロックを接続します。
- メニューバーで、「File」>「Save All」を選択してオートメーションを保存します。
- メニューバーから、「Debug」>「Start Debugging」を選択して、ソリューションをテストします。
- John Smithの情報が「Customer Information」ウィンドウに表示されます。
- CRMアプリケーションで、「User 2」をクリックします。 2番目のアカウントが「Customer Information」ウィンドウで更新されます。
- CRMアプリケーションで、John Smithのウィンドウをクリックして、ウィンドウをアクティブ化します。 「Customer Information」ウィンドウがJohn Smithのアカウントで更新されます。
- CRMアプリケーションで、ウィンドウを閉じます。 「Customer Information」ウィンドウが最新のアクティブウィンドウで更新され、閉じたアカウント番号がコンボボックスから削除されます。
- メニューバーから、「Debug」>「Stop Debugging」を選択して、ソリューションのテストを停止します。
11 選択されたアカウント番号がアクティブでない場合にアクティビティを開始するオートメーションを作成する</h3>
- ソリューションエクスプローラーで、「_GC_Main.os」をダブルクリックし、デザインエリアでファイルを開きます。
- 「Toolbox」の「Interaction Management」セクションで、Activityコンポーネントをグローバルコンテナにドラッグします。
- 「_GC_CRM.os」で、「activity1」をクリックしてオブジェクトを選択し、「Properties」ウィンドウを更新します。
- 「Properties 」ウィンドウの「(Name) 」プロパティで、「MainactActivateMDIWin」を入力します。
- 「Properties」ウィンドウの「Misc」>「Activity Name」プロパティドロップダウンリストで、「ActivateMDIWindow」を選択します。
- MainPrjのソリューションエクスプローラーで、「Events」を右クリックして「Add」>「New Automation」をクリックし、「Add New Item」ウィンドウを表示します。
- 「Name」フィールドに「Main_E_cmbGetAcct_SelectedIndexChanged」を入力します。
- 「Add New Item」ウィンドウで、「Add」をクリックしてウィンドウを閉じ、デザインエリアでオートメーションを表示します。
- オートメーションで、次のデザインブロックを追加します。
プロジェクト項目ソース コントロール 説明/設定 Customer Information MaincmbGetAcct.SelectedIndexChangedイベント コンボボックスのインデックスが変更されると、オートメーションが開始します。 「SelectedIndexChanged」が「Configure Type」ウィンドウの「Behavior」カテゴリーに含まれています。
_GC_Main IntMgr.IsKeyActiveメソッド インタラクションキーがアクティブかどうかを判断するために確認します。 「Result」を展開します。
Customer Information MaincmbGetAcct.Textプロパティ Textは、CRMウィンドウをアクティブ化するための値を提供します。
_GC_Main MainactActivateMDIWin.Startメソッド - 次の図に示すように、オートメーションでデザインブロックを接続します。
- メニューバーで、「File」>「Save All」を選択してオートメーションを保存します。
12 アクティビティが開始されるとウィンドウをアクティブ化するオートメーションを作成する
- ソリューションエクスプローラーで、「_GC_CRM.os」をダブルクリックし、デザインエリアでファイルを開きます。
- 「Toolbox」の「Interacation Management」セクションで、Activityコンポーネントをグローバルコンテナにドラッグします。
- 「_GC_CRM.os」で、「activity1」をクリックしてオブジェクトを選択し、「Properties」ウィンドウを更新します。
- 「Properties 」ウィンドウの「(Name) 」プロパティで、「CRMactActivateMDIWin」を入力します。
- 「Properties」ウィンドウの「Misc」>「Activity Name」プロパティドロップダウンで、「ActivateMDIWin」を選択します。
- CRMPrjのソリューションエクスプローラーで、「Events」を右クリックして「Add」>「New Automation」を選択し、「Add New Item」ウィンドウを表示します。
- 「Name」フィールドに「CRM_E_ActivateMDIWin_ActivityStarted」を入力します。
- 「Add New Item」ウィンドウで、「Add」をクリックしてウィンドウを閉じ、デザインエリアでオートメーションを表示します。
- オートメーションで、次のデザインブロックを追加します。
プロジェクト項目ソース コントロール 説明/設定 _GC_CRM CRMactActivateMDIWin.ActivityStartedイベント アクティビティが開始されると、オートメーションが開始します。 下向き矢印をクリックして、インタラクションキーを公開します。
CRM CRMChild.IsKeyAssignedメソッド CRMウィンドウが存在するかどうかを判断するために確認します。 「Result」を展開します。
CRM CRMChild.Activateメソッド(パラメーターなし) - 次の図に示すように、オートメーションでデザインブロックを接続します。 オートメーションリンクに接続すると、鍵アイコンが表示されます。
- Toolboxの「Advanced」セクションで、MessageDialog」コンポーネントをオートメーションにドラッグして、「Overwrite」ウィンドウを表示します。
- 「Overwrite」ウィンドウで、2番目のラジオボタンを選択し、「OK」をクリックしてコンポーネントをオートメーションに追加します。
- MessageDialog1コンポーネントで、「message」をクリックし、「The key is not found」を入力します。
- オートメーションで、CRMChild.IsKeyAssignedのFalse出力をMessageDialog1入力に接続します。
- メニューバーで、「File」>「Save All」を選択してオートメーションを保存します。
- メニューバーから、「Debug」>「Start Debugging」を選択して、ソリューションをテストします。
- John Smithの情報が「Customer Information」ウィンドウに表示されます。
- CRMアプリケーションで、「User 2」をクリックします。 2番目のアカウントが「Customer Information」ウィンドウで更新されます。
- 「Customer Information」ウィンドウで、「Get Account」コンボボックスから「23453」を選択します。 Customer InformationがJohn Smithのアカウントで更新されます。 CRMアプリケーションで、John Smithのウィンドウがアクティブ化されます。
- メニューバーから、「Debug」>「Stop Debugging」を選択して、ソリューションをテストします。
13 新しいアクティビティとフレームワークのプロジェクトを更新する
- MainPrjおよびACMESearchPrjのグローバルコンテナで、新しいアクティビティを各グローバルコンテナに追加し、次の表の情報に基づいてアクティビティのプロパティを更新します。
グローバルコンテナ プロパティ 値 _GC_Main (Name)
ActivityName
MainactGetNearestStore
GetNearestStore
_GC_ACME (Name)
ActivityName
ACMEactGetNearestStore
GetNearestStore
- メニューから、「File」>「Save All」を選択してアクティビティを保存します。
14 ボタンをクリックするとアクティビティが開始されるオートメーションを作成する
- MainPrjのソリューションエクスプローラーで、「Events」を右クリックして「Add」>「New Automation」を選択し、「Add New Item」ウィンドウを表示します。
- 「Add New Item」ウィンドウの「Name」フィールドに、「Main_E_btnNearestStore_Click」を入力します。
- 「Add New Item」ウィンドウで「Add」をクリックしてウィンドウを閉じ、デザインエリアでオートメーションを開きます。
- オートメーションで、次のデザインブロックを追加します。
ソースプロジェクト項目 Design Name 説明 Customer Information MainbtnNearestStore.Clickイベント ユーザーがボタンをクリックすると、オートメーションが開始されます。 Customer Information MaincmbGetAcct.Textプロパティ コンボボックスのテキストプロパティによって、activity._GC_Mainのアクティブインタラクションを確認します。 _GC_Main MainactGetNearestStore.Startメソッド ボタンをクリックすると、アクティビティが開始されます。 - 次の図に示すように、オートメーションでオートメーションとデータリンクを接続します。
- メニューバーから、「File」>「Save All」を選択してオートメーションを保存します。
15 アクティビティを実行したり、ACMESearchSystemを検証したりするためのオートメーションを作成する
- ACMESearchPrjプロジェクトのソリューションエクスプローラーで、「Events」を右クリックして「Add」>「New Automation」を選択し、「Add New Item」ウィンドウを表示します。
- 「Add New Item」ウィンドウの「Name」フィールドに、「ACME_E_GetNearestStore_ActivityStarted」と入力します。
- 「Add New Item」ウィンドウで「Add」をクリックしてウィンドウを閉じ、デザインエリアでオートメーションを開きます。
- オートメーションで、次のデザインブロックを追加します。
ソースプロジェクト項目 Design Name Description_GC_ACME _GC_ACME ACMEactGetNearestStore.ActivityStartedイベント デザインブロックで下向き矢印をクリックして、インタラクションキーパラメーター、_GC_ACMEを公開します。 _GC_ACME
IntMgr.ZipCodeプロパティ これにより、フレームワークから郵便番号が収集され、検索オートメーションを通して渡されます。 ACME_P_GetNearestStore Executeメソッド これにより、アカウントの郵便番号、_GC_ACMEに基づいて一番近いストアの検索を実行するためのロジックが呼び出されます。
_GC_ACME
IntMgr.NearestStoreプロパティ これは、フレームワークコンテキスト値に住所を保管するために使用されます。 - Object Hierarchyで、ACMEactGetNearestStoreアクティビティコンポーネントをオートメーションにドラッグして、「Select Activity Member」ウィンドウを表示します。
- 「Select Activity Member」ウィンドウで「isSuccess」および「strResult」チェックボックスを選択し、「OK」をクリックしてウィンドウを閉じ、デザインブロックを更新します。
- オートメーションで、ACMEactGetNearestStoreプロパティデザインブロックをコピーして貼り付け、2番目のデザインブロックを作成します。
- オートメーションで、次のように2つのデザインブロックを設定します。
- IsSuccessプロパティの1つのデザインブロックで、「True」を選択します。 他のデザインブロックで、IsSuccessプロパティを「False」に設定します。
- 次の図に示すように、オートメーションで、オートメーションおよびデータリンクを接続します。
- メニューバーから、「File」>「Save All」を選択します。
16 作業の確認
- メニューバーから、「Debug」>「Start Debugging」を選択して、ソリューションをテストします。
- 「Customer Information」ウィンドウで、「Find Store」をクリックします。
- ウェブアプリケーションが起動し、ログインして、郵便番号に基づいて一番近いストアを検索します。
- 予期したとおり、「Customer Information」ウィンドウに住所が返されません。
- メニューバーから、「Debug」>「Stop Debugging」を選択して、ソリューションをテストします。
エラーメッセージをユーザーに表示するためのオートメーションを作成する
- MainPrjプロジェクトのソリューションエクスプローラーで、「Events」を右クリックして「Add」>「New Automation」を選択し、「Add New Item」ウィンドウを表示します。
- 「Add New Item」ウィンドウの「Name」フィールドに、「Main_E_actGetNearestStore_ActivityCompleted」を入力します。
- 「Add New Item」ウィンドウで「Add」をクリックしてウィンドウを閉じ、デザインエリアでオートメーションを開きます。
- オートメーションで、次のデザインブロックを追加します。
ソースプロジェクト項目 Design Name Description_GC_Main _GC_Main
MainactGetNearestStore.ActivityCompletedイベント アクティビティスレッドが完了すると、このオートメーションを開始します。 _GC_Main
MainactGetNearestStore.isSuccessプロパティ _GC_Main
MainactGetNearestStore.strResultプロパティ - Toolboxの「Advanced」セクションで、MessageDialog」コンポーネントをオートメーションにドラッグして、「Overflow」ウィンドウを表示します。
- 「Overflow」ウィンドウで、3番目のラジオボタンを選択して文字列メッセージとキャプションを表示し、「OK」をクリックしてデザインブロックを作成します。
- messageDialog1デザインブロックで、「Caption」をクリックし、「Unable to process request」と入力します。
- 次の図に示すように、オートメーションでオートメーションとデータリンクを接続します。
- メニューバーから、「File」>「Save All」を選択してオートメーションを保存します。
一番近いストアを表示するように、Main_P_LoadCustInfoValuesを変更します。
- ソリューションエクスプローラーで、「Main_P_LoadCustInfoValues」オートメーションをダブルクリックして、デザインエリアでオートメーションを表示します。
- _GC_MainのObject Hierarchyで、「IntMgr」をクリックして、コンポーネントをハイライトします。
- Object Inspectorで、「Show Properties Only」をクリックして、コンポーネントのプロパティをフィルタします。
- Object Inspectorで、NearestStoreプロパティをオートメーションの_GC_Main.IntMgrデザインブロックにドラッグします。 _GC_Main_IntMgrデザインブロックが黒い点線で囲まれます。
- frmCustInfoオブジェクトのObject Hierarchyで、MainlblNearestStoreオブジェクトをオートメーションにドラッグして、そのTextプロパティを追加します。
- オートメーションで、_GC_Main.IntMgr.NearestStoreデータ出力をfrmCustInfo.MainlblNearestStore.Textデータ入力に接続します。
- メニューバーから、「File」>「Save All」を選択してオートメーションの編集内容を保存します。
コンテキスト値が変更されたらユーザーインタフェースを更新する
- MainPrjプロジェクトのソリューションエクスプローラーで、「Events」を右クリックして「Add」>「New Automation」を選択し、「Add New Item」ウィンドウを表示します。
- 「Add New Item」ウィンドウの「Name」フィールドに、「Main_E_IntMgr_TextChanged」と入力します。
- 「Add New Item」ウィンドウで「Add」をクリックしてウィンドウを閉じ、デザインエリアでオートメーションを開きます。
- オートメーションで、次のデザインブロックを追加します。
ソースプロジェクト項目 Design Name 説明 _GC_Main
IntMgr.OnNearestStoreChangedイベント 一番近いストアの値が変更されると、このオートメーションが開始されます。 _GC_Main
IntMgr.IsKeyActiveメソッド 値がアクティブキーから変更される場合、その値が直ちに表示されます。 値がアクティブキーから変更されない場合、Main_P_LoadCustInfoValuesオートメーションから表示されます。 Customer Information MainlblNearestStore.Textプロパティ - 次の図に示すように、オートメーションでオートメーションとデータリンクを接続します。
- メニューバーから、「File」>「Save All」を選択してオートメーションを保存します。
- メニューバーから、「Debug」>「Start Debugging」を選択して、ソリューションをテストします。
- 「frmCustInfo」ウィンドウで、「Find Store」をクリックしてブラウザーを起動し、一番近いストアを見つけます。
- 「frmCustInfo」ウィンドウに、ストアの住所が表示されます。
- メニューバーから、「Debug」>「Stop Debugging」を選択して、ソリューションをテストします。