数据网关配置文件
配置文件是根据已配置的数据网关设置和输出创建的。如下所述,它们由三个主要部分组成:输入、输出和筛选器。
此部分由 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* * * * *"`
这可决定 SQL 查询从 BPADataPipelineInput 表请求数据的频率。可以更新默认值(每三秒一次),用所需的值来代替 3 即可。
`statement => "delete top(3000)from BPADataPipelineInput with (rowlock, readpast) output deleted.eventdata"`
这是针对 Blue Prism 数据库执行的 SQL 语句,用于从 BPADataPipelineInput 表中提取事件。该值用于控制每个时间间隔从 BPADatapipelineInput 表中提取的最大行数。如果需要,可以更改默认值 (3000)。
筛选器可用于对事件执行中间处理。这些可以是在将事件的某些字段发送到输出之前对其执行的添加、删除或修改等操作(例如删除会话日志的 AttributeXML 字段)。
以下网址中列出了所有可用的筛选器插件:https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
默认情况下,Blue Prism 生成的配置将包含一个筛选器:
filter{
json {
source => "eventdata"
target => "event"
}
}
默认情况下,配置包含单个 JSON 筛选器,用于解析和扩展包含已配置数据类型(会话日志、仪表盘等)的 JSON 字符串,以便可以在配置文件中访问内容。
可以编辑此部分以添加和删除筛选器,但不应删除或修改默认的 JSON 筛选器。
输出决定事件发送到的位置。如果已使用数据网关向导配置了输出,则它们会在此处列出。处理的每个事件都将发送到配置中列出的每个输出。
output {
file {
path => "C:\data.txt"
}
csv {
path => "C:\data.csv"
}
}
在上面的示例中,指定了 .txt 文件和 .csv 输出。发送到数据网关系统的每个事件都将写入文本文件 C:\data.txt 和 csv 文件 C:\data.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”字段下的字段。
例如:
[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] |
作为数据来源的操作—始终是“发送自定义数据”。 |
在将会话日志和仪表盘数据发送到单独的文本文件时,可将条件语句应用于输出,只有当输出满足其中的一个或多个条件时,系统才会将事件传递给输出。这样一来,在高级编辑器中自定义或在外部文本编辑器中创建的输出可以支持在数据网关配置向导中未提供的 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 数据库中提取的事件结构的信息,请参阅事件结构。
在向导中配置的数据库输出必须符合预期格式:
- 必须有一个类型为 integer 的 eventType 列—它存储事件的类型。
- 必须有一个类型为 nvarchar(max) 的 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]"]
}
}
}
有关所有事件的完整列表以及有关事件结构的更多信息,请参阅事件结构。
使用条件语句筛选事件并转移输出
在此示例中,[event][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}"}
}
}
}
根据会话日志流程名称发送事件
在此示例中,基于会话日志中的流程名称将事件发送到特定输出。输出有两种:
- 发送所有事件到 C:\allevents.txt 文本文件
- 此外,将 Process123 流程中的会话日志事件发送到指定 HTTP 端点。
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"
}
}
如果配置中需要凭据或其他敏感数据,则应将其添加到 Blue Prism 凭据,然后按凭据名称在配置中进行引用。
创建用于数据网关配置的 Blue Prism 凭据时,凭据类型必须是数据网关凭据。这些凭据只能由数据网关系统访问,Blue Prism 流程无法访问。
可以使用语法 <%{credentialname}.{property}%> 在配置中引用凭据,其中 {credentialname} 是凭据的名称,{property} 是凭据中属性的名称。
例如,要使用名为 cred1 的凭据的用户名,配置代码应分别为 <%cred1.username%> 和 <%cred1.password%>。
可以使用属性名称访问凭据自定义属性。