Search data service leverages Elasticsearch to execute searches based on indexed keys, using existing mechanisms.

Using the Search data service

Use case

  • Search for data within other processes
  • Display results indicating where the search key was found in other processes

For our example, two process definitions are necessary:

  • one process used to search data in another process - in our example “search_process_CDN”

  • one process where we look for data - in our example “add_new_clients”

Add data process example

Firstly, create a process where data will be added. Subsequently, the second process will be used to search for data in this initial process.

In the “Add Data Process Example” it’s crucial to note that we add mock data here to simulate existing data within real processes.

Example of MVEL Business Rule:

output.put ("application", {
  "date": "22.08.2022",
    "client": {
      "identificationData": {
        "firstName": "John",
        "lastName": "Doe",
        "cityOfBirth": "Anytown",
        "primaryDocument": {
          "number": 123456,
          "series": "AB",
          "issuedCountry": "USA",
          "issuedBy": "Local Authority",
          "issuedAt": "01.01.2010",
          "type": "ID",
          "expiresAt": "01.01.2030"
        },
        "countryOfBirth": "USA",
        "personalIdentificationNumber": "1234567890",
        "countyOfBirth": "Any County",
        "isResident": true,
        "residenceAddress": {
          "country": "USA",
          "city": "Anytown",
          "street": "Main Street",
          "streetNumber": 123
        },
        "mailingAddress": {
          "country": "USA",
          "city": "Anytown",
          "street": "Main Street",
          "streetNumber": 123
        },
        "pseudonym": null
      },
    }
    }
);

Now we can play with this process and create some process instances with different states.

Search process example

Configure the “Search process” to search data in the first created process instances:

1

Create process

Create a process using the Process Designer.

2

Displaying the results (optional)

Add a Task node within the process. Configure this node and add a business rule if you want to customize the display of results, e.g:

output.put("searchResult", {"result": []});
output.put("resultsNumber", 0);

For displaying results in the UI, you can also consider utilizing Collections UI element.

3

Configure the search node

Add a user task and configure a send event using a Kafka send action. Configure the following parameters:

Example (dummy values extracted from a process):

4

Performing the search

A custom microservice (a core extension) will receive this event and search the value in the Elasticsearch.

5

Receiving the response

It will respond to the engine via a Kafka topic (defined at KAFKA_TOPIC_DATA_SEARCH_OUT env variable in your deployment). Add the topic in the Node config of the User task where you previously added the Kafka Send Action.

Response

The response’s body message will look like this:

If there is no result:

{
	"result": [],
	"searchKey": "application.client.name.identificationData.lastName",
	"tooManyResults": "false",
	"searchValue": "random"

}

Example (dummy values extracted from a process):

To access the view of your process variables, tokens and subprocesses go to FLOWX.AI Designer > Active process > Process Instances. Here you will find the response.

If there is a list of results:

{

	"searchKey": "application.client.identificationData.personalIdentificationNumber"
	"result":[{
			"processInstanceUUID": "UUID",
			"status": "FINISHED",
			"processStartDate": date,
			"data" : {"all data in elastic for that process"}
	}],
	"tooManyResults": true|false
}

NOTE: Up to 50 results will be received if tooManyResults is true.

Example with dummy values extracted from a process:

Developer

Enabling Elasticsearch indexing requires activating the configuration in the FlowX Engine. Check the indexing section for more details.

Search data setup guide

For deployment and service setup instructions