データゲートウェイ構成ファイル
構成ファイルは、構成済みのデータゲートウェイ設定と出力から作成されます。このファイルは、以下で概説するとおり、入力、出力、フィルターの3つの主要セクションで構成されます。
このセクションはBlue Prismデータベースの設定に基づき、Blue Prismによって自動生成されます。処理のためにデータゲートウェイエンジンにイベントが投入される方法を決定します。以下の例では、それらはBlue PrismデータベースのBPADataPipelineInputテーブルから取得されています。
input {
jdbc {
jdbc_driver_library => "..\sqljdbc_4.2\enu\jre8\sqljdbc42.jar"
jdbc_connection_string => "jdbc:sqlserver://SQL_SERVER_INSTANCE:1433;databaseName=BP_DATABASE;"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_user => "<%Data Gateways BP Database SQL User.username%>"
jdbc_password => "<%Data Gateways BP Database SQL User.password%>"
statement => "delete top(3000)from BPADataPipelineInput with (rowlock, readpast) output deleted.eventdata"
schedule => "*/3* * * * *"
}
}
入力の次のエリアは、必要な設定に合わせて適宜編集できます。
`schedule => "*/3* * * * *"`
これにより、BPADataPipelineInputテーブルからデータをリクエストするSQLクエリを実行する頻度が決まります。3秒ごとのデフォルト値は、「3」を必要な値に置き換えることによって更新できます。
`statement => "delete top(3000)from BPADataPipelineInput with (rowlock, readpast) output deleted.eventdata"`
このSQLステートメントは、Blue Prismデータベースに対して実行され、BPADataPipelineInputテーブルからイベントを抽出します。この値は、BPADatapipelineInputテーブルから間隔ごとに抽出される行の最大数をコントロールします。デフォルト値は3,000ですが、適宜変更できます。
フィルターはイベントの中間処理を実行するために使用できます。中間処理には、データを出力に送信する前にイベントの特定フィールドを追加、削除、変更するなどのアクションがあります。たとえば、セッションログのAttributeXMLフィールドを削除します。
利用可能なすべてのフィルタープラグインの一覧はこちらを参照してください。https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
デフォルトでは、Blue Prismによって生成される構成にフィルターが1つ含まれます。
filter{
json {
source => "eventdata"
target => "event"
}
}
デフォルトでは、構成にJSONファイル用のフィルターが1つ含まれます。これは、構成済みデータ型(セッションログ、ダッシュボードなど)を含むJSON文字列を解析および展開して、構成ファイルでコンテンツをアクセス可能にするために使用されます。
このセクションを編集して、フィルターを追加および削除できますが、デフォルトのJSONフィルターは削除も修正もしないでください。
出力によってイベントの送信先が決まります。データゲートウェイウィザードを使用して出力が構成された場合、ここに含められます。処理される各イベントは構成に一覧表示されるすべての出力に送信されます。
output {
file {
path => "C:\data.txt"
}
csv {
path => "C:\data.csv"
}
}
上記の例では、.txtファイルと.csvファイルでの出力が指定されています。データゲートウェイシステムに送信される各イベントは、C:\data.txt にテキストファイル形式で書き込まれます。また、C:\data.csvにもcsvファイル形式で書き込まれます。
利用可能な出力の一覧は、こちらを参照してください。https://www.elastic.co/guide/en/logstash/current/output-plugins.html
このセクションでは、Blue Prismから受信した後のLogstashのイベント構造について詳しく説明します。この情報は、Logstash構成で条件文を構築して、コンテンツに基づきイベントを出力に迂回させるか、出力のカスタムメッセージ形式を作成するために使用できます。
イベント(セッションログまたはパブリッシュされたダッシュボード)はJSON文字列としてBlue Prismデータベースに保存されます。このJSON文字列をLogstashで使用可能なフィールドセットに変換するには、JSONフィルターを構成に追加します。
filter{
json{source => "eventdata"
target => "event"}
}
これにより、[イベント]フィールドにネストされるフィールドとしてセッションログ/パブリッシュされたダッシュボードが追加されます。
例:
[event][eventType]には、イベントのタイプ(セッションログ、パブリッシュされたダッシュボード、またはカスタムオブジェクトデータ)が含まれます。
[event][EventData]には、ネストされたフィールドとしてイベントのデータが含まれます。
[event][EventData][SessionNumber]には、これがセッションログイベントである場合、セッション番号が含まれます。
「ProcessA」と名付けられたプロセスからのセッションログのみをテキストファイルに送信するには、出力に関する条件文を使用できます。
output{
If [event][eventType] == 1 and [event][EventData][ProcessName] == “ProcessA” {
file {
path => “C:\log.txt”
}
}
}
利用可能なフィールドの全リストは、次のテーブルを参照してください。
一般
イベント |
説明 |
---|---|
[event][eventType] |
以下の番号は次のイベントタイプを表します。 1 = セッションログ 2 = パブリッシュされたダッシュボード 3 = カスタム 4 = ワークキュー分析 |
[event][EventData] |
イベントのデータ。このデータの構造はイベントタイプに応じて変わります。 |
イベントタイプ - セッションログ
イベント |
説明 |
---|---|
[event][EventData][StartDate] |
ISO 8601表記でフォーマットされたプロセスステージの開始日。例:"2019-02-11T07:59:54.829674+00:00" |
[event][EventData][SessionNumber] |
このセッションログが属するセッションのセッション番号。 |
[event][EventData][ResultType] |
プロセスステージの結果タイプ。 |
[event][EventData][Result] |
プロセスステージの結果。 |
[event][EventData][AttributeXML] |
XMLにシリアル化されたステージの入力および出力パラメーター。 |
[event][EventData][ProcessName] |
このステージが属するプロセス名。これはビジネスオブジェクトから記録される場合、空になります。 |
[event][EventData][ObjectName] |
このステージが属するビジネスオブジェクトの名前。これはセッションログがプロセスから記録される場合、空になります。 |
[event][EventData][ActionName] |
このログがアクションステージからのものである場合、これはそのアクションの名前です。その他の場合は、空になります。 |
[event][EventData][PageName] |
このセッションログを作成したこのステージが属するページ名。 |
[event][EventData][StageType] |
このセッションログを作成したステージのタイプ。 |
[event][EventData][StageId] |
このセッションログを作成したステージのID。 |
イベントタイプ - パブリッシュされたダッシュボード
イベント |
説明 |
---|---|
[event][EventData][Source] |
パブリッシュされたダッシュボードの名前。 |
[event][EventData][Subject] |
データを生成したダッシュボードタイルの名前。 |
[event][EventData][Values] |
ダッシュボードタイルからのデータ。 |
イベントタイプ - カスタムオブジェクトデータ
イベント |
説明 |
---|---|
[event][EventData][CustomDataCollection] |
送信されるプロセスからのカスタムデータ。 |
[event][EventData][SessionNumber] |
データの送信元のプロセスのセッション番号。 |
[event][EventData][StageID] |
このアクションの呼び出し元のステージID。 |
[event][EventData][StageName] |
[カスタムデータを送信]アクションステージの名前。 |
[event][EventData][StageType] |
[カスタムデータを送信]アクションステージのタイプ。 |
[event][EventData][StartDate] |
[カスタムデータを送信]アクションが実行されるセッションの開始日。 |
[event][EventData][ProcessName] |
アクションの呼び出し元のプロセス名。 |
[event][EventData][PageName] |
カスタムデータアクションが実行されるプロセスのページ名。 |
[event][EventData][ObjectName] |
データの送信元のオブジェクト - 常に「データゲートウェイ」。 |
[event][EventData][actionName] |
データの送信元のアクション - 常に「カスタムデータを送信」。 |
セッションログとダッシュボードデータが別々のテキストファイルに送信される場合、出力が条件文の1つ以上の条件を満たす場合にのみイベントをパスする出力に条件文を適用できます。これにより、詳細エディターでカスタマイズされた、または外部のテキストエディターで作成された出力は、データゲートウェイ構成ウィザードでは提供されていないLogstash機能をサポートできます。たとえば、指定されたプロセスまたはダッシュボードタイルにのみデータが送信されるように出力を編集できます。
この例では、ファイル出力に関する条件文によって特定の[EventType]値が確認されます。セッションログのイベントタイプは「1」、ダッシュボードのイベントタイプは「2」に設定されています。
input {
jdbc {
jdbc_driver_library => "..\sqljdbc_4.2\enu\jre8\sqljdbc42.jar"
jdbc_connection_string => "jdbc:sqlserver://localhost\sqlexpress:1433;databaseName=a;"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_user => "<%Data Gateways BP Database SQL User.username%>"
jdbc_password => "<%Data Gateways BP Database SQL User.password%>"
statement => "delete top(3000)from BPADataPipelineInput with (rowlock, readpast) output deleted.eventdata"
schedule => "*/3 * * * * *"
}
}
filter {
json {
source => "eventdata"
target => "event"
}
}
output {
if [event][EventType] == 2 and [event][EventData][Source] == "Dashboard 1" {
file {
path => "C:\dashboardlogs.txt"
codec => line { format => "%{event}"}
}
}
if [event][EventType] == 1 {
file {
path => "C:\sessionlogs.txt"
codec => line { format => "%{event}"}
}
}
}
Blue Prismデータベースから抽出されるイベント構造の詳細については、「イベント構造」を参照してください。
ウィザードで構成されるデータベース出力は、次の所定のフォーマットに従う必要があります。
- 整数タイプの[eventType]列を設ける必要があります - この列にはイベントのタイプが保存されます。
- nvarchar(最大)タイプの[eventData]列を設ける必要があります - この列にはJSON文字列にシリアル化されるイベントが保存されます。
詳細な構成では、テーブルの列とテーブルに挿入されるデータをカスタマイズできます。
この例では、セッションログイベントからの特定のフィールドは、データベースのtableabcテーブルに送信されます。
jdbcデータベース出力では、セッションログのセッション番号、プロセス名、およびattributexmlフィールドが、tableabcテーブルの適切な列に挿入されます。
input {
jdbc {
jdbc_driver_library => "..\sqljdbc_4.2\enu\jre8\sqljdbc42.jar"
jdbc_connection_string => "jdbc:sqlserver://localhost\sqlexpress:1433;databaseName=a;"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_user => "<%Data Gateways BP Database SQL User.username%>"
jdbc_password => "<%Data Gateways BP Database SQL User.password%>"
statement => "delete top(3000)from BPADataPipelineInput with (rowlock, readpast) output deleted.eventdata"
schedule => "*/3 * * * * *"
}
}
filter {
json {
source => "eventdata"
target => "event"
}
}
output {
if [event][EventType] == 1 {
bpjdbc {
connection_string => "jdbc:sqlserver://TheServer;databaseName=MyDB;integratedSecurity=true;"
driver_jar_path => "..\sqljdbc_4.2\enu\jre8\sqljdbc42.jar"
driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
statement => ["insert into tableabc(EventType, EventData) values(?, ?)", "[event][EventType]", "[event][EventData]"]
}
}
}
すべてのイベントの完全なリストとイベント構造の詳細については、「イベント構造」を参照してください。
条件文を使用して、イベントをフィルタリングし、出力を迂回させる
この例では、[イベント][EventType]フィールドがイベントタイプを別のファイルに送信するために使用されています。送信先ファイルは、イベントタイプがセッションログ(EventType == 1)であるか、パブリッシュされたダッシュボード(EventType == 2)であるかに応じて決まります。
カスタムオブジェクトデータのイベントタイプ(EventType == 3)は指定されないため、データゲートウェイエンジンにあるこの型のデータは[破棄済み]に含まれません。
input {
jdbc {
jdbc_driver_library => "..\sqljdbc_4.2\enu\jre8\sqljdbc42.jar"
jdbc_connection_string => "jdbc:sqlserver://localhost\sqlexpress:1433;databaseName=a;"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_user => "<%Data Gateways BP Database SQL User.username%>"
jdbc_password => "<%Data Gateways BP Database SQL User.password%>"
statement => "delete top(3000)from BPADataPipelineInput with (rowlock, readpast) output deleted.eventdata"
schedule => "*/3 * * * * *"
}
}
filter {
json {
source => "eventdata"
target => "event"
}
}
output {
if [event][EventType] == 2 and [event][EventData][Source] == "Dashboard 1" {
file {
path => "C:\dashboardlogs.txt"
codec => line { format => "%{event}"}
}
}
if [event][EventType] == 1 {
file {
path => "C:\sessionlogs.txt"
codec => line { format => "%{event}"}
}
}
}
セッションログのプロセス名に基づいてイベントを送信する
この例では、セッションログのプロセス名に基づいてイベントが特定の出力に送信されます。出力には次の2種類あります。
- すべてのイベントはC:\allevents.txtテキストファイルに送信されます
- 「Process123」プロセスのセッションログイベントは指定のHTTPエンドポイントに追加で送信されます。
input {
jdbc {
jdbc_driver_library => "..\sqljdbc_4.2\enu\jre8\sqljdbc42.jar"
jdbc_connection_string => "jdbc:sqlserver://localhost:1433;databaseName=ExampleDB;"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_user => "<%SQL Serv.username%>"
jdbc_password => "<%SQL Serv.password%>"
statement => "delete top(3000)from BPADataPipelineInput with (rowlock, readpast) output deleted.eventdata"
schedule => "*/3 * * * * *"
}
}
filter {
json {
source => "eventdata"
target => "event"
}
}
output {
if [event][EventType] == 1 {
file {
path => "c:\allevents.txt"
codec => line { format => "%{event}"}
}
}
if [event][EventType] == 1 and [event][EventData][ProcessName] == "Process123" {
bphttp {
url => "localhost:8080/api/post"
http_method => "post"
headers => {"Authorization" => "Basic <base64><%SQL Serv.username%>:<%SQL Serv.password%></base64>"}
}
}
}
認証情報などの機密データが構成で必要とされる場合は、それらがBlue Prism認証情報に追加され、構成で認証情報名により参照されます。
データゲートウェイ構成で使用するためにBlue Prism認証情報を作成する場合、その認証情報のタイプはデータゲートウェイ認証情報である必要があります。これらの認証情報にアクセスできるのはデータゲートウェイシステムのみです。これらの認証情報ではBlue Prismプロセスにアクセスできません。
認証情報は、「<%{credentialname}.{property}%>」という構文を使用して構成内で参照できます。この構文の「{credentialname}」の部分は認証情報の名前、「{property}」の部分は認証情報のプロパティ名を指します。
たとえば、「cred1」と名付けられた認証情報のユーザー名を使用するには、構成コードはそれぞれ、「<%cred1.username%>」および「<%cred1.password%>」となります。
認証情報のカスタムプロパティには、プロパティ名を使用してアクセスできます。