「Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- Open棟梁v02-30以降のリポジトリ分割後の手順(非同期処理サービスv01-00)。
- 旧手順(v02-20以前)はコチラを参照。
準備 †
環境を準備する。
- Visual Studio 2015 以上の任意のエディション
- SQL Server 以上の任意のバージョンとエディション
- 非同期処理サービス v01-00 以上のテンプレート
本ページの作成と検証には、
- Windows 10
- Visual Studio 2015
- SQL Server 2016
を使用した。
手順 †
前提ソフトウェアのインストール †
以下をインストール
- Visual Studio 2015 の任意のエディション
- SQL Server 2016 の任意のエディション
非同期処理サービスのテンプレート †
取得 †
デプロイ †
rootをC:\rootにデプロイ。
ビルド †
ビルドを行う。
- C:\root\programs\CS\3_Build_Framework.bat
- C:\root\programs\VB\3_Build_Framework.bat
データベースの準備 †
作成 †
- AsyncProcessingServiceDBというデータベースを作成する。
セキュリティ設定 †
サービス・アカウントからSQL Serverにログインする。
なので、以下の手順に従って、
ローカル・システム・アカウントのログインと権限付与をする。
- システム・アカウントのユーザを作成する。
- Windows ユーザー
- NT AUTHORITY\SYSTEM
- アクセス権限を付与する。
- 「所有されているスキーマ」に”db_owner”を追加する。
- 「メンバーシップ」に”db_owner”を追加する。
テーブルの作成 †
非同期処理サービス †
設定 †
app.configファイルの接続文字列を設定する。
<connectionStrings>
<!-- SQL Server / SQL Client用 -->
<add name="ConnectionString_SQL" connectionString="Data Source=localhost\sqlexpress;Integrated Security=SSPI;Initial Catalog=AsyncProcessingServiceDB;"/>
</connectionStrings>
ビルド †
AsyncProcessingService?をビルドする。
インストール †
ビルド出力(*.exe)をWindowsサービスとしてインストールする。
- 管理ツールのサービス(コマンドからはservices.msc)を起動し、
サービスの一覧にAsyncProcessingService?が登録されていることを確認する。
非同期処理タスク †
非同期処理タスクのクライアントとサーバを開発する。
以下のソリューションファイルを開くと、2つのプロジェクトが開く。
C:\root\programs\CS\Samples\AsyncSvc_sample\AsyncSvc_sample.sln
非同期処理タスクを投入するクライアント †
TestAsyncSvc_Sample
非同期処理をキューに登録するプログラム。
- ビルド
- Visual Studioからビルド
- もしくは、batでビルド
- C:\root\programs\CS\5_Build_AsyncSvcSample?.bat
- C:\root\programs\VB\5_Build_AsyncSvcSample?.bat
サーバで実行される非同期処理タスク †
AsyncSvc_sample
登録された非同期処理を取り出しディスバッチする先のビジネスロジック。
- ビルド
- Visual Studioからビルド
- もしくは、batでビルド
- C:\root\programs\CS\5_Build_AsyncSvcSample?.bat
- C:\root\programs\VB\5_Build_AsyncSvcSample?.bat
非同期処理サービスの実行 †
実行 †
- AsyncProcessingService?をSCMから開始する。
- 非同期処理タスクを投入する。
確認 †
- 非同期処理管理テーブルを監視して非同期処理が遂行されることを確認する。
- 非同期処理サービスが実行されない場合は以下のログを分析する。
"C:\root\files\resource\AsyncProcessingService?\Log\"
- 非同期処理サービス
- ASYNC-SERVICE.log
- ACCESS-ASYNC.YYYY-MM-DD.log
- SQLTRACE-ASYNC.YYYY-MM-DD.log
- クライアント
- ACCESS.YYYY-MM-DD.log
- SQLTRACE.YYYY-MM-DD.log
非同期処理サービスの開発方法 †
引数・戻り値、B層、D層 †
非同期処理サービス本体 †
非同期処理タスクの開発方法 †
https://github.com/OpenTouryoProject/AsynchronousProcessingService/blob/develop/root/programs/CS/Samples/AsyncSvc_sample/AsyncSvc_sample/LayerB.cs
MyApsBaseLogic? †
DamKeyforABT †
業務テーブルにアクセスする場合に使用するDam
DamKeyforAMT †
非同期処理管理テーブルにアクセスする場合に使用するDam
接続文字列 †
- 非同期処理管理テーブルと業務テーブルが同じデータベース内にある場合は、
DamKeyforABTとDamKeyforAMTの接続文字列には同じ接続文字列を使用する。
- 非同期処理管理テーブルと業務テーブルが異なるデータベース内にある場合は、
以下をカスタマイズして、DamKeyforABTとDamKeyforAMTの接続文字列を分割する。
UOC_Start(UOC_XXXX) †
概要 †
設定 †
インプロセス呼び出しの定義は以下のファイルの中に定義にされている。
https://github.com/OpenTouryoProject/AsynchronousProcessingService/blob/develop/root/files/resource/AsyncProcessingService/Xml/TMInProcessDefinition.xml
処理の流れ †
- Updateメソッドにより業務処理を行う。
- 処理を抜けた場合、正常終了の扱いとなる。
業務処理メソッド †
業務処理(Updateメソッド) †
- 取得したCommandIDをチェックする。
- Stop:業務例外をthrowして処理をリトライする。
- Abort:システム例外をthrowして処理をABENDする。
- その他:
- 補足
- 必要に応じてループで実装する。
- サンプルでは一定の確率で
確率計算メソッド †
ダミーの業務処理。
- GenerateProgressRate?メソッド
ランダムに進捗率を返す。
- Fortuneメソッド
ランダムに真/偽を返す。
Utilityメソッド †
v02-30から、Utilityメソッドの実装を以下に移動。
GetCommandValue?メソッド †
非同期処理管理テーブルから本非同期タスクのTaskIDに対応するCommandIDを取得する。
ResumeProcessing?メソッド †
非同期処理管理テーブルの本非同期タスクのTaskIDに対応するCommandIDを、
UpdateTaskCommandメソッドによって「0」クリアする。
UpdateProgressRate?メソッド †
非同期処理管理テーブルの本非同期タスクのTaskIDに対応する進捗率をアップデートする。
UpdateTaskCommand?メソッド †
非同期処理管理テーブルの本非同期タスクのTaskIDに対応するCommandIDを更新する。