This repository contains building blocks or components for Qorus Integration Engine®
building blocks in any supported language can be used by code in other languages, so just because you are working with a code in Python, you don't have to restrict yourself to Python-based building blocks, Java, Python, and Qore-based building blocks can be mixed in any solution.
Building blocks are meant to provide reusable elements to solve technical challenges in a generic way to reduce development effort - ideally to eliminate development and transform the delivery of complex functionality to simply configuration.
NOTE: Building blocks here require Qorus 5.1.25+ for full functionality
NOTE: The building blocks here are made available under the Apache license 2.0:
Copyright 2021 Qore Technologies, s.r.o.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Contact Qore Technologies (info@qoretechnologies.com) if you need support for these building blocks.
Qorus must be installed, and the command-line environment must be set up for Qorus as well; also GNU make should be available in the PATH
.
After cloning the repository, type make load-bb
NOTE: Some building blocks have dependencies in other building blocks, modules, and/or data types; when deploying
single building blocks, ensure that all dependencies are deployed at the same time. Keep in mind that modules often
require system option changes in $OMQ_DIR/etc/options
(ex: qorus.dataprovider-modules
) which require a Qorus
restart to take effect.
NOTE: Qorus must be restarted after installing the full building block release or any release with module dependencies
where the qorus.dataprovider-module
option was updated for the first time in order for system option changes to take
effect.
NOTE: Qorus types must be deployed first in Qorus before they can be used in the IDE in mappers or workflow static data types, etc.
**NOTE: If step building blocks are subclassed, make sure and either remove the primary()
or validation()
method
or override it and make an explicit call to the parent class method in the child class
**NOTE: Qorus implements a significant quantity of powerful generic functionality in data provider factories; the
qorus-api
factory implements Qorus-specific functionality
(see https://qoretechnologies.com/manual/qorus/current/qorus/finite_state_machines.html#fsm_qorus_api_calls), and Qore
and modules implement other generic functionality as well. These APIs can be browsed and used in Qorus flows (Finite
State Machines) in API call states where documentation for each API call (request - response data provider) is also
displayed.
The following building blocks are available:
Building Block | Description |
---|---|
BBM_OndewoBpiServer | ONDEWO Business Process Integration server building block with event-based connectors for intent handling |
BBM_OndewoIntentHandler | ONDEWO intent handler helper class |
BBM_OndewoNluClient | ONDEWO Natural Language Understanding client class |
BBM_OndewoVtsiClient | ONDEWO VTSI client class |
Building Block | Description |
---|---|
BBM_AutoMapper | base building block for running a mapper in autonomous mode; includes an input/output connector |
BBM_AutoMapperRecord | base building block for running a mapper in autonomous mode with request/record-based recovery logic |
BBM_AutoMapperRecordStep | step building block to map record-based data from an output provider to an input provider with config-based error recovery support; runs a mapper in autonomous mode |
BBM_AutoMapperRequest | base building block for running a mapper in autonomous mode with request/response-based recovery logic |
BBM_CsvReadDataProvider | base building block for processing CSV data as input; implements an output connector |
BBM_DataProviderRecordCreateProcessor | building block for a data provider output pipeline processor |
BBM_DataProviderSearchRecordIterator | building block class with a connector returning a record iterator that can be used to populate a pipeline |
BBM_ExcelReadDataProvider | base building block for processing Excel spreadsheet data as input; implements an output connector |
BBM_GenericMapper | building block for generic data transformation support based on a mapper; includes an input/output connector; use this building block to use a mapper that will not run in autonomous mode (for example where input data can be used directly) |
Building Block | Description |
---|---|
BBM_GetPipelineData | building block for providing a data pipeline with initial processing data from configuration |
BBM_SimpleFilterPipelineData | building block for filtering records in a data pipeline |
Building Block | Description |
---|---|
BBM_FsEventBase | generic class for services for event-driven file actions on the local filesystem |
Building Block | Description |
---|---|
BBM_FtpPollerBase | generic base class for polling for files from an FTP server with a polling connector |
BBM_FtpPollerCreateOrder | class for polling for files from an FTP server and creating a workflow order from them |
BBM_FtpPollerCreateOrderJob | base class for FTP polling jobs that create workflow orders for files received |
Building Block | Description |
---|---|
BBM_DataSerialization | transforms input data into a serialized string, includes an input/output connector |
BBM_GetArray | returns a list of data based on configuration, meant to be used to provide array input for an array step, provides an input/output connector |
BBM_InternalIterator | allows for iteration of internal data; converts a hash with an internal list into a list of hashes having common top-level data with the interior element repeated |
BBM_JavaConfig | sets Java configuration based on configuration items |
BBM_ListCache | a simple cache class holding a list of data items with connectors to control the cache |
BBM_PauseDataPassthru | executes a configurable and optionally skippable pause or delay, includes an input/output connector |
BBM_RegularExpressions | helper building block used by other building blocks for for regular expression configuration item handling |
Building Block | Description |
---|---|
BBM_AwsSnsServiceBase | Base AWS Simple Notification Service abstract class building block |
BBM_AwsSnsServiceEventSource | AWS Simple Notification Service class building block with an event-based connection |
BBM_CorsBase | base class for CORS functionality used by other building blocks |
BBM_HttpAuthenticatorBase | base class for HTTP authentication used by other building blocks |
BBM_HttpFileHandler | generic building block for serving files from the filesystem via HTTP/S |
BBM_HttpServiceGenericBase | base class for HTTP handler services; meant as a base class for higher-level HTTP-based server building blocks |
BBM_HttpReverseProxyService | a reverse proxy building block supporting 1:1 forwarding of chunked transfer encoding and protocol handlers such as WebSockets |
BBM_HttpServiceBase | base class for HTTP handler services; can be used directly |
BBM_QorusUiExtension | building block for Qorus UI extension server services |
Building Block | Description |
---|---|
BBM_KafkaConsumer | Kafka message consumer building block, includes input/output connectors |
BBM_KafkaProducer | Kafka message producer building block, includes input/output connectors |
Building Block | Description |
---|---|
BBM_MqttPahoClient | MQTT Paho client base building block |
BBM_MqttPahoPublisher | MQTT Paho client publisher building block with connectors for publishing MQTT messages |
BBM_MqttPahoSubscriber | MQTT Paho client subscriber building block with an event-based connector for listening to MQTT messages / topics |
Building Block | Description |
---|---|
BBM_RestAction | generic class for making a REST request, includes input/output connectors |
BBM_RestActionStep | generic step class for making a REST request, includes input/output connectors |
BBM_RestActionWithRecovery | generic class for making a REST request, includes recovery logic and config as well as input/output connectors |
BBM_RestServiceBase | base class for REST handler services |
Building Block | Description |
---|---|
BBM_SalesforceStreamBase | base class for Salesforce streaming API support, provides an event source connector |
BBM_SalesforceStreamCreateOrder | base class for creating workflow orders based on Salesforce events |
Building Block | Description |
---|---|
BBM_SftpPollerBase | generic base class for polling for files from an SFTP server with a polling connector |
BBM_SftpPollerCreateOrder | class for polling for files from an SFTP server and creating a workflow order from them |
BBM_SftpPollerCreateOrderJob | base class for SFTP polling jobs that create workflow orders for files received |
Building Block | Description |
---|---|
BBM_SnmpServiceTrapEventSource | SNMP trap event source with an event connector |
Building Block | Description |
---|---|
BBM_WebSocketServiceBase | base class for WebSocket handler services |
BBM_WebSocketServiceEventSource | base class for WebSocket handler services with an event connector |
BBM_WebSocketServiceDataEventSource | base class for WebSocket handler services with an event connector based on serialized event data (JSON or YAML) |
Building Block | Description |
---|---|
BBM_WsgiHandlerBase | WSGi HTTP server handler base building block; serves any Python-based WSGi server service from a Qorus service, also providing the Qorus API to the WSGi server as well as dynamic Java imports |
BBM_WsgiServer | WSGi HTTP server building block; serves any Python-based WSGi server service from a Qorus service, also providing the Qorus API to the WSGi server as well as dynamic Java imports |
BBM_WsgiUiExtension | Allows for serving a WSGi server as a Qorus UI extension based on configuration |
These building blocks are deprecated as their functionality has been replaced with functionality implemented directly
in the Qorus server using the qorus-api
data provider factory.
Building Block | Description |
---|---|
BBM_BindSubworkflow | binds a subworkflow in a subworkflow step; the subworkflow data is provided as input data, includes input/output connectors; use the util/workflow/bind-subworkflow API data provider in the qorus-api factory instead |
BBM_BindSubworkflowStatic | binds a subworkflow in a workflow step based on configuration in the building block, includes input/output connectors; use the util/workflow/bind-subworkflow API data provider in the qorus-api factory instead |
BBM_Break | building block that throws an FSM-BREAK exception for flow control in FSMs; includes an input connector; use the util/break API data provider in the qorus-api factory instead |
BBM_Continue | building block that throws an FSM-CONTINUE exception for flow control in FSMs; includes an input connector; use the util/continue API data provider in the qorus-api factory instead |
BBM_CreateOrder | creates a new workflow order; the workflow order data is provided as input data, includes input/output connectors; use the workflows/create-order API data provider in the qorus-api factory instead |
BBM_CreateOrderStatic | creates a new workflow order based on configuration in the building block, includes input/output connectors; use the workflows/create-order API data provider in the qorus-api factory instead |
BBM_DataProviderRecordCreate | building block for record-based data providers for creating records, includes an input/output connector; use the data-provider/create API data provider in the qorus-api factory instead |
BBM_DataProviderRecordCreateBase | base building block for record-based data providers for record creation; use the data-provider/create API data provider in the qorus-api factory instead |
BBM_DataProviderRecordUpdate | building block for record-based data providers for updating records, includes an input/output connector; use the data-provider/update API data provider in the qorus-api factory instead |
BBM_DataProviderRecordUpdateBase | base base class for record-based data providers for creating records; use the data-provider/update API data provider in the qorus-api factory instead |
BBM_DataProviderRequest | building block for request-based data providers; the request message body is created from config, includes an input/output connector; use the data-provider/do-request API data provider in the qorus-api factory instead |
BBM_DataProviderRequestBase | base class for using the data-provider request API to make requests; use the data-provider/do-request API data provider in the qorus-api factory instead |
BBM_DataProviderRequestWithRecovery | building block for request-based data providers with recovery logic; supports recovery with a single value, includes connectors for using in workflow steps for fault-tolerant operation; use the data-provider/do-request API data provider in the qorus-api factory instead |
BBM_DataProviderRequestWithRecoveryStep | step building block for request-reply data providers with config-based error recovery support; use the data-provider/do-request API data provider in the qorus-api factory instead |
BBM_DataProviderSearch | performs a search in a record-based data provider and returns the result, includes input/output connectors; use the data-provider/search API data provider in the qorus-api factory instead |
BBM_DataProviderSearchBase | base class for using the data provider search API; use the data-provider/search API data provider in the qorus-api factory instead |
BBM_DeleteFilePath | deletes a file based on configuration, includes an input/output connector; includes an input connector; use the delete API data provider in the file factory instead |
BBM_ExecSyncWorkflow | executes a workflow synchronously; the workflow order data is provided as input data, includes input/output connectors; use the workflows/exec-sync API data provider in the qorus-api factory instead |
BBM_ExecSyncWorkflowStatic | executes a workflow synchronously based on configuration in the building block, includes input/output connectors; use the workflows/exec-sync API data provider in the qorus-api factory instead |
BBM_GetData | returns arbitrary data based on configuration, provides an input/output connector; includes an input connector; use the util/get-data API data provider in the qorus-api factory instead |
BBM_LogMessage | logs a message based on configuration; use the util/log-message API data provider in the qorus-api factory instead |
BBM_OutputData | writes data to output location according to configuration giving the data to write and the output locations, includes an input/output connector; use the util/write-output API data provider in the qorus-api factory instead |
BBM_QorusServiceMethodCaller | calls a Qorus service method and returns the result, includes an input/output connector; use the services/call-method API data provider in the qorus-api factory instead |
BBM_SmtpEmailSender | building block class with a connector for sending emails; use the send-email API data provider in the smtpclient factory instead |
BBM_ThrowException | building block that throws an exception according to configuration; includes an input connector; use the util/throw-exception API data provider in the qorus-api factory instead |
BBM_UpdateOrderDynamicData | building block that can be used to write data to a workflow order's dynamic data hash, includes an input/output connector; use the util/write-output API data provider in the qorus-api factory instead |
Event streaming support for Salesforce.com using the streaming API
Base class for running a mapper in autonomous mode, meaning that the input and output data are provided by data providers configured in the mapper.
This building block is not suitable for mapping input data and returning output data, for that use BBM_GenericMapper
or a mapper in an FSM, a data pipeline, or in a class connection in an interface.
Use this object's configuration to provide input or search filtering as well as to tune the output data handling.
This connector runs the mapper in autonomous mode.
The input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
).
See BBM_GenericMapper
Base class for running a mapper with a record-based output data provider in autonomous mode, meaning that the input and output data are provided by data providers configured in the mapper. This building block also supports recovery logic and a validation connector.
This building block is not suitable for mapping input data and returning output data, for that use BBM_GenericMapper
or a mapper in an FSM, a data pipeline, or in a class connection in an interface.
Use this object's configuration to provide input or search filtering as well as to tune the output data handling.
This connector runs the mapper in autonomous mode.
The input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
).
This connector is suitable for step validation logic; it returns a string providing the validation status, either COMPLETE
or RETRY
, depending if output data was found in the output data provider or not.
The input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
).
See BBM_GenericMapper
Step base class for running a mapper with a record-based output data provider in autonomous mode, meaning that the input and output data are provided by data providers configured in the mapper.
Use this object's configuration to provide input or search filtering as well as to tune the output data handling.
There are no connectors in this building block, as it is already a step class with the primary()
and validation()
methods implemented to execute the auto mapper configuration.
Base class for running a mapper with a request/response-based output data provider in autonomous mode, meaning that the input and output data are provided by data providers configured in the mapper. This building block also supports recovery logic and a validation connector.
This building block is not suitable for mapping input data and returning output data, for that use BBM_GenericMapper
or a mapper in an FSM, a data pipeline, or in a class connection in an interface.
Use this object's configuration to provide input or search filtering as well as to tune the output data handling.
This connector runs the mapper in autonomous mode.
Local data for the call to UserApi::expandTemplatedValue()
is the input argument data for the connector available as $local:input
.
This connector is suitable for step validation logic; it returns a string providing the validation status, either COMPLETE
or RETRY
, depending if output data was found in the output data provider or not.
Local data for the call to UserApi::expandTemplatedValue()
is the input argument data for the connector available as $local:input
.
See BBM_GenericMapper
Base AWS [Simple Notification Service][Simple Notification Service] handler service abstract base class.
This class is not meant to be used directly.
See BBM_AwsSnsServiceEventSource
Base AWS [Simple Notification Service][Simple Notification Service] handler service event source class.
Provides SNS event information when it's received by this class.
See BBM_AwsSnsServiceBase
Binds a subworkflow in a subworkflow step.
This building block uses the input data for binding; for a building block that binds based on configuration, see BBM_BindSubworkflowStatic
This building block is useful only in limited use cases; BBM_BindSubworkflowStatic
can do everything this building block can do and more; it's recommended to use BBM_BindSubworkflowStatic
instead.
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the util/workflow/bind-subworkflow
API data provider in the qorus-api
factory instead
Binds the subworkflow based on the input data; configuration is only used to identify the workflow and to specify output data handling.
Binds a subworkflow in a subworkflow step based on configuration.
This building block uses configuration for all binding data; for a building block that binds purely based on input data, see BBM_BindSubworkflow
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the util/workflow/bind-subworkflow
API data provider in the qorus-api
factory instead
Binds the subworkflow based on configuration.
The input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
).
Building block that throws an FSM-BREAK
exception to provide a break
action when executing an FSM.
There is no configuration
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the util/break
API data provider in the qorus-api
factory instead
Throws an FSM-BREAK
exception to provide a break
action when executing an FSM.
Input data is ignored
Building block that throws an FSM-CONTINUE
exception to provide a continue
action when executing an FSM.
There is no configuration
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the util/continue
API data provider in the qorus-api
factory instead
Throws an FSM-CONTINUE
exception to provide a continue
action when executing an FSM.
Input data is ignored
Base class for HTTP CORS handlers; there is no configuration and no connectors; this class is a helper class meant to be used by classes providing HTTP handling functionality.
Building block for creating a workflow order from input data.
This building block uses the input data for creating the new workflow order; for a building block that binds based on configuration, see BBM_CreateOrderStatic
This building block is useful only in limited use cases; BBM_CreateOrderStatic
can do everything this building block can do and more; it's recommended to use BBM_CreateOrderStatic
instead.
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the workflows/create-order
API data provider in the qorus-api
factory instead
Creates a new workflow order based on the input data; configuration is only used to identify the workflow and to specify output data handling.
Building block for creating a workflow order from configuration.
This building block uses configuration to create the new workflow order; for a building block that binds purely based on input data, see BBM_CreateOrder
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the workflows/create-order
API data provider in the qorus-api
factory instead
Create the workflow order based on configuration.
The input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
).
Provides a config-based data provider object for data from CSV input data
Creates a CSV read data provider object and returns the records parsed.
Local data for the call to UserApi::expandTemplatedValue()
for all config items is the input argument data for the connector available as $local:input
.
Building block for creating records in record-based data providers.
The record to be created is determined by the value of the config item dataprovider-create-input
; ex:
name: $static:name
description: $static:description
For a data provider supporting the returning
create option (like DbTableDataProvider
, for example), the output data can return values created implicitly in the record creation action such as column values populated by sequences from a trigger using the dataprovider-create-options
config item - ex: returning: customer_id
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the data-provider/create
API data provider in the qorus-api
factory instead
Inserts data from the input argument, or, if there is none, from config item dataprovider-create-input
Inserts data solely from config item dataprovider-create-input
.
The input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
).
This connector is suitable for step validation logic; it returns a string providing the validation status, either COMPLETE
or RETRY
, depending if output data was found in the output data provider or not.
The input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
).
Base class for building block classes for creating records in record-based data providers.
This base class has no configuration; see BBM_DataProviderRecordCreate
for a usable building block with connectors and configuration.
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the data-provider/create
API data provider in the qorus-api
factory instead
See BBM_DataProviderRecordCreate
Provides a data provider record creation processor, suitable for use as an output element in a data pipeline.
Accepts input data and writes the output to the configured data provider.
Supports bulk processing; all input records are passed 1:1 as output after processing.
Provides transaction safety; all output in the pipeline will be performed in a single tractionaction, if the data provider supports transaction management.
Building block to make an update in record-based data providers.
Used to make an update in a record-based data provider based on input data providing the update hash; if no input data is provided, then the update hash is taken from config item dataprovider-update-set
.
The output data is a hash with the single key count
giving the number of records updated.
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the data-provider/update
API data provider in the qorus-api
factory instead
Used to make an update in a record-based data provider based on config item dataprovider-update-set
providing the update hash.
Input data is available as $local:input
when resolving config items with this connector.
The output data is a hash with the single key count
giving the number of records updated.
building block for record-based data providers
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the data-provider/update
API data provider in the qorus-api
factory instead
Building block base class for request-reply-based data providers.
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the data-provider/do-request
API data provider in the qorus-api
factory instead
This connector makes a request using the input data for the request body.
This connector makes a request using configuration to provide the request body.
The input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
).
See BBM_DataProviderRequestWithRecovery
Base class for using the data-provider request API to make requests; no configuration
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the data-provider/do-request
API data provider in the qorus-api
factory instead
See BBM_DataProviderRequest
and BBM_DataProviderRequestWithRecovery
forbuilding blocks with configuration and connectors based on this base class.
Building block for request-based data providers with recovery logic; supports recovery with a single request
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the data-provider/do-request
API data provider in the qorus-api
factory instead
This connector makes a request using the input data for the request body.
This connector makes a request using configuration to provide the request body.
Local data for the call to UserApi::expandTemplatedValue()
is the input argument data for the connector available as $local:input
.
This connector is suitable for step validation logic; it returns a string providing the validation status, either COMPLETE
or RETRY
, depending if output data was found in the output data provider or not.
The input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
).
Building block for request-based data providers with recovery logic; supports recovery with a single request
This class has no connectors as it is meant to be directly usable as a normal step class; the primary()
and validation()
logic is implemented already in this class.
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the data-provider/do-request
API data provider in the qorus-api
factory instead
Performs a search in a record-based data provider and returns the result
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the data-provider/search
API data provider in the qorus-api
factory instead
This connector executes the search using the input data for the search parameters; the search must return a single record (or no result).
With this connector, the local data (i.e. $local:*
) for the dataprovider-search-output-data
config item is the record returned if any data is returned; if no data is returned from the search, no output data can be stored; the internal call to UserApi::updateOutputData()
is not executed in this case.
This connector executes the search using configuration for search parameters; the search must return a single record (or no result).
The input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
) except dataprovider-search-output-data
.
With this connector, the local data (i.e. $local:*
) for the dataprovider-search-output-data
config item is the record returned if any data is returned; if no data is returned from the search, no output data can be stored; the internal call to UserApi::updateOutputData()
is not executed in this case.
This connector executes the search using the input data for the search parameters; the search can return multiple records; output data is the list of hashes representing the records retrieved, or no data, in case no records were matched.
With this connector, the local data for the dataprovider-search-output-data
config item is the records returned in $local:records
).
This connector executes the search using configuration for search parameters; the search can return multiple records; output data is the list of hashes representing the records retrieved, or no data, in case no records were matched.
The input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
) except dataprovider-search-output-data
.
With this connector, the local data for the dataprovider-search-output-data
config item is the records returned in $local:records
).
See BBM_DataProviderSearchBase
Base class for using the data provider search API; no configuration or connectors
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the data-provider/search
API data provider in the qorus-api
factory instead
See BBM_DataProviderSearch
Provides a building block that outputs a record iterator suitable for use as an input element in a data pipeline.
Performs the search and returns a bulk record iterator for use as input to a data pipeline, for example.
Input data is available as $local:input
when resolving config items with this connector.
Serializes data to a specific format according to the data-serialization-format
configuration item:
- JSON: serialize to a JSON string
- XML: serialize to an XML string
- XML-RPC: serialize to an XML string in XML-RPC format
- YAML: serialize to a YAML string
Use the data-serialization-verbose-output
config item to use multi-line serialization for more human-readable results for complex data structures if necessary.
Input data is available as local context data during the resolution of all config item as $local:input
.
The output data includes the serialized data in the output
key of the hash returned.
Deletes a file from the filesystem
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the delete
API data provider in the file
factory instead
Deletes the file identified by the delete-file-path
config item.
Local data used when resolving config items for this connector is the input argument data for the connector available as $local:input
.
Provides a config-based data provider object for data from a Microsoft Excel spreadsheet.
Creates an Excel read data provider object and returns the records parsed.
Local data for the call to UserApi::expandTemplatedValue()
for all config items is the input argument data for the connector available as $local:input
.
Executes a synchronous workflow order and returns the results.
This building block is useful only in limited use cases;BBM_ExecSyncWorkflowStatic
can do everything this building block can do and more; it's recommended to use BBM_ExecSyncWorkflowStatic
instead.
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the workflows/exec-sync
API data provider in the qorus-api
factory instead
Creates a new workflow order based on the input data; configuration is only used to identify the workflow and to specify output data handling.
Class for executing a synchronous workflow order from configuration.
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the workflows/exec-sync
API data provider in the qorus-api
factory instead
Creates and executes a workflow order synchronously from the configuration data.
The input data is available as $local:input
for all config items resolved with this connector (in internal calls to `UserApi::expandTemplatedValue()).
generic class for event-driven file actions on the local filesystem
Generic building block class for polling for files from an FTP server.
This class is meant to be used as a base class for interfaces (normally a job or a service) that provide FTP polling as an event connector.
If config item ftp-polling-file-connection
is set, then files are streamed efficiently to the given local file system location and not stored in memory. If this config item is not set, then all files are transferred and stored in main memory, which can cause problems with very large files.
If uploads to the FTP server are not atomic, the ftp-polling-minage
config item can be used to ensure that files are only polled after they have been present on the FTP server for a defined period of time, which should be greater than the maximum time required to transfer the largest files.
Note that this class can be used in either a job or a service to provide regular polling for files from an FTP server. Use in a job is encouraged, as the job schedule is easily controlled by operational users and is the pollijng schedule, additionally the results of each polling operation are exposed in the UI and in the API as job results, making it easier to monitor the FTP polling status.
Used to poll for files once and return file data as output for all files polled; this connector is useful in a job to poll for files regularly according to the job's schedule. Input data is ignored.
This connector can be used in a service to poll in a service's start()
method in a background thread. In order to use this class's ftpFileEvent
connector, this connector must be used as the service's start()
method.
Input data is ignored and passed through to the output data.
This connector can be used in a service to stop polling in a service's stop()
method. In order to use this class's ftpFileEvent
connector, this connector must be used as the service's stop()
method.
Input data is ignored and passed through to the output data.
This event connector can be used in a service to process file events once they have been polled and fully transferred to the server. In order to use this connector, the start
and stop
connectors must be used in a service's start()
and stop()
methods to start and stop the polling thread, respectively.
See:
- class building block:
BBM_FtpPollerCreateOrder
- job base class:
BBM_FtpPollerCreateOrderJob
Building block class for polling for files from an FTP server and creating a workflow order from files polled.
The local context data for the internal workflow order creation call is the file event data as described by data type qoretechnologies/building-blocks/ftp/event
; therefore this information can be used when creating the order; for example create-workflow-staticdata
= $local:*
would set the initial static order data to the file event hash.
Duplicates can be detected from order keys, i.e. if one of the following config items is used:
create-workflow-specific-unique-key
create-workflow-unique-key
create-workflow-global-unique-key
In this case this object also contains configuration that allows for an alternative "duplicate-file-handling" workflow order to be created. See config items in the FTP Polling Workflow Creation Duplicate File Handling group for more information.
See BBM_FtpPollerCreateOrderJob
for a class designed to be used as the base class for a job
Building block job base class for polling for files from an FTP server and creating a workflow order from files polled.
The local context data for the internal workflow order creation call is the file event data as described by data type qoretechnologies/building-blocks/ftp/event
; therefore this information can be used when creating the order; for example create-workflow-staticdata
= $local:*
would set the initial static order data to the file event hash.
Duplicates can be detected from order keys, i.e. if one of the following config items is used:
create-workflow-specific-unique-key
create-workflow-unique-key
create-workflow-global-unique-key
In this case this object also contains configuration that allows for an alternative "duplicate-file-handling" workflow order to be created. See config items in the FTP Polling Workflow Creation Duplicate File Handling group for more information.
Note The ftp-polling-interval-secs
config item is always ignored in this class; this class must be used as the base class for a job, and the job's schedule determines the polling interval.
This is a generic mapper class building block that can be used to make generic data transformations.
This connector uses the configured mapper to transform the input data; the output data is the result of the map operation.
Input data is available as $local:input
when resolving config items with this connector.
Note that input data used for the mapper is always the connector input data if present.
This connector uses the configured mapper to transform the input data; the output data is the result of the map operation.
Note that input data used for the mapper is always taken from the automapper-input
config item; input data is only used as context data (i.e. as $local:input
) when resolving config item template values.
Returns an array from the configuration data
This connector returns a list defined by the value of the get-array-output
config item; if this config item returns a non-list value, then it is converted to a list before returning.
The input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
).
Returns data from configuration data
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the util/get-data
API data provider in the qorus-api
factory instead
Returns the value of the get-data
config item.
Input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
).
Returns the value of the get-data
config item, converted to a single-element list if necessary.
Input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
).
Provides input data to a data pipeline; note that this class ignores input data passed to it but rather only provides data to the next element based on its configuration.
This class is suitable for using as the first step in a pipeline to pass existing data into a pipeline for processing.
Uses input data only for resolving the output data from config item get-pipeline-data
; the input data is not passed through to the next element in the pipeline unless it's referenced in the get-pipeline-data
config item.
Local data (in this case, the processor's input data) for the call to UserApi::expandTemplatedValue()
is the input argument data for the connector available as `$local:input.
Base building block class for providing authenticators.
This class has no connectors or configuration but is rather used by other service building block classes providing HTTP and related network services that can optionally require authentication (REST, WebSocket, etc).
A generic building block for HTTP file handling for use in Qorus services.
This class can be used to expose files from the filesystem to HTTP clients iin a Qorus service.
It contains no connectors; it is driven entirely by configuration.
Initialization is performed automatically when the class is instantiated.
Reverse HTTP proxy building block for use in a Qorus service.
Provides HTTP and also WebSocket proxying functionality; also chunked transfers are forwarded directly as well.
There are no connectors; this building block class is driven entirely by configuration.
Abstract base class for HTTP handler services.
As an abstract class, it cannot support connectors; it is entirely driven by configuration.
Abstract base class for HTTP handler services.
As an abstract class, it cannot support connectors; it is entirely driven by configuration.
Building block that allows for iteration of internal data; converts a hash with an internal list into a list of hashes having common top-level data with the interior element repeated
Accepts the input data and returns a list of records according to the internal-iterator-key-path
config item, designating the position in the input data to iterate.
Input data is furthermore available as $local:input
when resolving config items with this connector.
Helper class that sets Java configuration based on configuration items
It does not provide any connectors; it is entirely driven by configuration.
Kafka message consumer building block; provides a Kafka message event source to Qorus.
This building block class is designed to be used in a Qorus service.
Provides Kafka messages as events.
Event connectors can only be used in Qorus services.
Starts listening to Kafka messages; meant to be assocated with a service's start()
method.
Input data is ignored; returns true
if the Kafka listening thread was started, false
immediately if already running. This connector returns true
at the end of listening; the start()
method runs for the lifetime of the object until stopped.
Stops listening to Kafka messages; means to be associated with a service's stop()
method.
Input data is ignored; returns null
(NOTHING
if called from Qore, None
if called from Python).
Kafka message producer building block for sending Kafka messages from Qorus.
Sends a message synchronously; the input data is used to send the message and must correspond to the given input type.
Output data provides information about the message sent.
Sends a message asynchronously; the input data is used to send the message and must correspond to the given input type.
Output data is a Future
object regarding the asynchronous message sent.
A building block class that implements a simple cache of a list of data items of any type
This connector adds data to the cache by resolving the list-cache-data
config item.
The input data is available as $local:input
for all config items resolved with this connector (in the call to UserApi::expandTemplatedValue()
).
The input data is returned as output data as well.
Returns the data cached; input data is ignored as no configuration is used in this connector.
The cache is emptied; input data is ignored; the cache contents are returned as output data.
Output a message to the current log file.
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the util/log-message
API data provider in the qorus-api
factory instead
Logs a message to the log file according to the values of the configuration; input data to the connector is available as $local:input
.
Ouput data is the messages logged in a hash in the msg
key.
MQTT Paho client for publishing and listening to MQTT messages.
This class is the base class for the publishing and listening classes. There are no connectors; it is driven entierly by configuration.
MQTT Paho client for publishing messages to an MQTT topic
Used to publish a message from config item mqtt-paho-message-body
.
The input data is available as $local:input
for all config items resolved with this connector (in the call to UserApi::expandTemplatedValue()
).
Message data is converted to a binary for publishing, if necessary by first converting to a string.
The output data is the org.eclipse.paho.client.mqttv3.MqttMessage
object published.
Used to publish a message from data passed as input; if no value is passed, then the message data is taken from config item mqtt-paho-message-body
.
The input data is converted to a binary if necessary, if necessary by first converting to a string.
The output data is the org.eclipse.paho.client.mqttv3.MqttMessage
object published.
Is is recommended to use the publishFromConfig
connector instead.
MQTT Paho client for receiving messages from an MQTT server
Raised when the connection is lost; event hash keys:
class_name
: (string
) the full exception class namemessage
: (string
) the exception messagecause
: (java.lang.Throwable
) the exception object itself
Raised when a message has been successfully delivered; event hash keys:
topics
(list<string>
) the topic or topics for the messageid
: (string
) the message ID deliveredpayload
: the message payload, decoded according to config itemmqtt-paho-message-format
qos
: (int
) the QoS code for the messageduplicate
: (bool
) if the message is a duplicateretained
: (bool
) if the message was retainedmessage
: (org.eclipse.paho.client.mqttv3.MqttMessage
) the message object itself
Raised when a message arrives from a topic matching config item mqtt-paho-message-topics
; event hash keys:
topic
(string
) the topic for the messageid
: (string
) the message ID deliveredpayload
: the message payload, decoded according to config itemmqtt-paho-message-format
qos
: (int
) the QoS code for the messageduplicate
: (bool
) if the message is a duplicateretained
: (bool
) if the message was retainedmessage
: (org.eclipse.paho.client.mqttv3.MqttMessage
) the message object itself
Passes through any input given. Can be used as the start method of a service. Only returns when stop()
is called.
Passes through any input given. Stops listening and disconnects the connection.
Building block for an ONDEWO Business Process Integration server service in Qorus
ONDEWO intent handler
Building block that returns an ONDEWO NLU / Conversational AI client from an ondewonlu://
Qorus connection
Building block that returns an ONDEWO VTSI client from an ondewovtsi://
Qorus connection
Writes output data to locations provided by config item output-data-hash
, which should be assigned a hash in the following format:
- key: data to store -> value: location to store it in
The keys in the hash are expanded with calls to UserApi::expandTemplatedValue()
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the util/write-output
API data provider in the qorus-api
factory instead
This connector executes the output write data operation.
Input data is available as $local:input
when resolving config items with this connector.
It is recommended to use this connector instead of the similar writeOutputData
connector, as this connector support standard handling of the local input data, and the writeOutputData
connector does not.
This connector executes the output write data operation.
Local data for the call to UserApi::expandTemplatedValue()
is the input argument data for the connector; if the input data is a hash, then it is used directly as the local context data for the $local:
template. If the input data is not a hash, then it is stored in the input
key of the local data hash.
This connector differs from writeOutput
only in the non-standard handling of the local input data.
It is recommended to use the writeOutput
connector instead, as it uses standard input data handling.
$local:input: $dynamic:data
-> store the input data in thedata
key of dynamic data'$info:started': '$pstate:started'
-> store thestarted
key from the$info:
template into thestarted
key of the persistent state hash for the current interface'$local:*': '$jinfo:result'
-> store the entire local context data hash in theresult
key of the$jinfo:
(job info) hash
A building block that executes a configurable pause or delay.
The pause
connector passes through any data as-is when used in a connection.
Note that if the interface shuts down while the pause is in action, a RETRY-ERROR
will be thrown to ensure a retry when used in a workflow context.
Performs a configurable pause based on the config item values resolved.
Input data is available as $local:input
when resolving config items with this connector.
This building block allows for Qorus service methods to be called based on configuration
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the services/call-method
API data provider in the qorus-api
factory instead
Qorus web UI extension handlindler service building block. Allows a Qorus service to provide a UI extension with configuration.
The UI resources files should be provided as service resources; the default resource will be served according to config item ui-extension-default-resource
.
Initializes the service according to configurqation; input data is returned as-is but is otherwise ignored.
Generic object defining constants for regular expression configuration item handling.
This building block class has no configuration or connectors; it is designed to be used by other building blocks providing regular expression support.
Building block class for making a REST request.
Use the rest-output-data
config item to write the results of the REST call to an output location; ex: body: $dynamic:rest_results
would write the response body to the rest_results
key of the dynamic data hash in a workflow order.
Note that there is inline retry configuration for I/O errors; by default this object will make 3 retries spaced 5 seconds apart if configured socket errors are encountered; see config items for more information.
Output data for all connectors is a hash with the following keys:
body
: the response message body, if anyrequest-uri
: the request URI string sent (ex:GET /services/async/38.0/job HTTP/1.1
)request-headers
: hash of outgoing HTTP request headersrequest-serialization
: message serialization used in the request bodyresponse-code
: the HTTP response coderesponse-uri
: the HTTP response URIresponse-headers
: a hash of processed incoming HTTP headers in the response with keys converted to lower case and with additional information addedresponse-serialization
: message serialization used in the response bodyresponse-chunked
:true
if the response body was sent chunked
This connector uses the input data as a hash to provide the following values for the REST call:
body
: the request message body (note that requests withGET
andHEAD
methods should not contain a message body)uri_path
the request URI pathhdr
: any headers to include in the request
This connector takes all configuration for the REST call from config items.
The input data is available as $local:input
for all config items resolved with this connector (in internal calls to UserApi::expandTemplatedValue()
).
generic step for making a transaction-safe REST request
Class for making a transaction-safe REST request
Base class for REST handler services
There are no connectors; this class is driven entirely by configuration.
Base class for Salesforce streaming API support; reports events; can only be used in services
Provides information about events in a Salesforce instance in Qorus services.
Service building block class for Salesforce.com streaming API support; creates a workflow order for each event received according to the configuration.
There are no connectors; it is entirely driven by configuration.
Generic building block class for polling for files from an SFTP server.
This class is meant to be used as a base class for interfaces (normally a job or a service) that provide SFTP polling as an event connector.
If config item sftp-polling-file-connection
is set, then files are streamed efficiently to the given local file system location and not stored in memory. If this config item is not set, then all files are transferred and stored in main memory, which can cause problems with very large files.
If uploads to the SFTP server are not atomic, the sftp-polling-minage
config item can be used to ensure that files are only polled after they have been present on the FTP server for a defined period of time, which should be greater than the maximum time required to transfer the largest files.
Note that this class can be used in either a job or a service to provide regular polling for files from an SFTP server. Use in a job is encouraged, as the job schedule is easily controlled by operational users and is the pollijng schedule, additionally the results of each polling operation are exposed in the UI and in the API as job results, making it easier to monitor the SFTP polling status.
Used to poll for files once and return file data as output for all files polled. Input data is ignored.
This connector can be used in a service to poll in a service's start()
method in a background thread. In order to use this class's sftpFileEvent
connector, this connector must be used as the service's start()
method.
Input data is ignored and passed through to the output data.
This connector can be used in a service to stop polling in a service's stop()
method. In order to use this class's sftpFileEvent
connector, this connector must be used as the service's stop()
method.
Input data is ignored and passed through to the output data.
This event connector can be used in a service to process file events once they have been polled and fully transferred to the server. In order to use this connector, the start
and stop
connectors must be used in a service's start()
and stop()
methods to start and stop the polling thread, respectively.
See:
- class building block:
BBM_SftpPollerCreateOrder
- job base class:
BBM_SftpPollerCreateOrderJob
Building block class for polling for files from an SFTP server and creating a workflow order from files polled.
The local context data for the internal workflow order creation call is the file event data as described by data type qoretechnologies/building-blocks/sftp/event
; therefore this information can be used when creating the order; for example create-workflow-staticdata
= $local:*
would set the initial static order data to the file event hash.
Duplicates can be detected from order keys, i.e. if one of the following config items is used:
create-workflow-specific-unique-key
create-workflow-unique-key
create-workflow-global-unique-key
In this case this object also contains configuration that allows for an alternative "duplicate-file-handling" workflow order to be created. See config items in the SFTP Polling Workflow Creation Duplicate File Handling group for more information.
See BBM_SftpPollerCreateOrderJob
for a class designed to be used as the base class for a job
Building block job base class for polling for files from an SFTP server and creating a workflow order from files polled.
The local context data for the internal workflow order creation call is the file event data as described by data type qoretechnologies/building-blocks/sftp/event
; therefore this information can be used when creating the order; for example create-workflow-staticdata
= $local:*
would set the initial static order data to the file event hash.
Duplicates can be detected from order keys, i.e. if one of the following config items is used:
create-workflow-specific-unique-key
create-workflow-unique-key
create-workflow-global-unique-key
In this case this object also contains configuration that allows for an alternative "duplicate-file-handling" workflow order to be created. See config items in the SFTP Polling Workflow Creation Duplicate File Handling group for more information.
Note The sftp-polling-interval-secs
config item is always ignored in this class; this class must be used as the base class for a job, and the job's schedule determines the polling interval.
Runs the poll action once.
This building block provides a pipeline processor element that does simple record filtering. It supports bulk processing.
This building block's pipeline processor uses each data record as local context and then evaluates simple-filter-criteria
on each record. If the result of the evaluation is boolean true
, then the record is accepted and passed on for further processing. If not, the record is ignored.
Ex: If the input record is {key1: value, type: 2}
, simple-filter-criteria
= $qore-expr:{$local:type == 1}
, then the filter criteria config item will result in False
which will result in the record being rejected. The example filter criteria only accepts records where type == 1
(if you want to also reject records without a type, then you could use $qore-expr:{$local:type??{0} == 1}
).
Bulk processing is supported in the same manner, and the "hash of lists" is rebuilt without references to the discarded records.
Boolean Evaluation Table
Data | Example Values | Description |
---|---|---|
True or False |
True | direct interpretation |
empty string, hash, list, or binary value | "" , {} , [] |
False |
int, float, number, or string 0 | 0 , 0.0 , "0" |
False |
non-empty string and not "0" |
"string" |
True |
non-empty hash, list, or binary value | {key: value} |
True |
A building class to send one or more emails through an SMTP server.
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the send-email
API data provider in the smtpclient
factory instead
Sends an email to the recipient based on configuration.
Input data is available as $local:input
when resolving config items with this connector.
Building block providing a base class for working with SNMP traps
Building block providing an event source for SNMP traps
A Python-based text analysis building block class using tensorflow, keras, and numpy to apply a pre-trained model on text input to classify the user's intent.
Processes the input directly; input must be a string.
The output is any action string associated wiht the input.
Process input data identified as by the text-analysis-hash-event-key
config item which designates a key in the input hash holding the input data.
Output data is a hash with a result
key giving the action associated with the input.
Process input data identified by the text-analysis-input
config item, where the input data to this connector is available as $local:input
/
Output data is a hash with a result
key giving the action associated with the input.
Throws an exception
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the util/throw-exception
API data provider in the qorus-api
factory instead
This connector throws an exception according to the configuration.
Input data is available as $local:input
when resolving config items with this connector.
Updates the dynamic data of a workflow order based on configuration.
NOTE: This building block's functionality has been superceded by an API (request - response) data provider; it's recommended to use the util/write-output
API data provider in the qorus-api
factory instead
Performs the update of dynamic data according to configuration.
Input data is available as $local:input
when resolving config items with this connector.
Provides the hash data updated in the given order as output data.
NOTE: the update performed uses UserApi::updateDynamicOrderData()
and therefore is atomic
A base class for WebSocket handler services in Qorus services
There are no connectors; it is entirely driven by configuration, and WebSocket server services are initialized when the object is created.
A data event source for WebSocket events in Qorus services, supporting serialized data for events.
The class's constructor initializes the object, so if it's used as an event source (or generally in any connection) or as the primary service class, there is no need to use the init
connector.
The default data serialization is json
, as this is the most common serialization used; yaml
is also supported.
Provides a hash event when a WebSocket message is received from a client.
Must be used to initialize the object in a service if this class is not used as an event source (or generally in any connection) or as the primary service class.
Sends a message or a response to a client; the client is identified by the cid
key in the input hash.
No ouput data is provided.
Broadcasts a message to all clients; the message is provided as the msg
key in the input data.
No ouput data is provided.
An event source for WebSocket events in Qorus services
This class is designed to be used as an event source for services.
The class's constructor initializes the object, so if it's used as an event source (or generally in any connection) or as the primary service class, there is no need to use the init
connector.
Provides a hash event when a WebSocket message is received from a client.
Must be used to initialize the object in a service if this class is not used as an event source (or generally in any connection) or as the primary service class.
Sends a message or a response to a client; the client is identified by the cid
key in the input hash.
No ouput data is provided.
Broadcasts a message to all clients; the message is provided as the msg
key in the input data.
No ouput data is provided.
WSGi HTTP Server Handler Base Building Block for Qorus
This class is written in Qore instead of Python to be thread-safe and scalable.
The WsgiAppHelper
class is used to initialize the WSGi app with the same syntax as Gunicorn
WSGi Server Building Block for Qorus
This class is written in Qore instead of Python to be thread-safe and scalable.
The WsgiAppHelper
class is used to initialize the WSGi app with the same syntax as Gunicorn
WSGi Qorus UI Extension Building Block for Qorus
This class is written in Qore instead of Python to be thread-safe and scalable.
The WsgiAppHelper
class is used to initialize the WSGi app with the same syntax as Gunicorn
Helper class for salesforce event sources in Qorus
Helper class for salesforce event sources in Qorus
Used to create the WSGi application object for a WSGi server