Home > docs > plugins v1 > Resource Task
The resource
task provides methods to persist data to a file in the scope of a
process as well as to load data from files. The resource
task supports JSON,
YAML and string
formats.
The task is provided automatically by Concord and does not require any external dependencies.
The asJson
method of the resource
task can read a JSON-file resource and
create a json
object.
flows:
default:
- expr: ${resource.asJson('sample-file.json')}
out: jsonObj
# we can now use it like a simple object
- log: ${jsonObj.any_key}
The asString
method can read a file resource and create a string
object with
the content.
- log: ${resource.asString('sample-file.txt')}
The asYaml
method supports reading files using the YAML format.
flows:
default:
- expr: ${resource.asYaml('sample-file.yml')}
out: ymlObj
# we can now use it like a simple object
- log: ${ymlObj.any_key}
The writeAsJson
method of the resource
task can write a JSON object into a
JSON-file resource.
flows:
default:
- set:
newObj:
name: testName
type: testType
- log: ${resource.writeAsJson(newObj)}
The writeAsString
method is used to write a file with string
content.
- log: ${resource.writeAsString('test string')}
The writeAsYaml
method supports the YAML format.
The writeAs*
methods return the path of the newly created file as
result. These values can be stored in a variable later be used to read content
back into the process with the read methods.
The fromJsonString
method of the resource
task can parse a JSON string to a
corresponding Java object.
flows:
default:
- set:
jsonString: '{"name":"Concord"}'
- expr: ${resource.fromJsonString(jsonString)}
out: jsonObj
- log: "Hello ${jsonObj.name}!"
The printJson
method of the resource
task serializes a given object, or JSON
string, to a condensed JSON-formatted string. This can be useful for generating
JSON string for other tasks. This is more memory-efficient than the
prettyPrintJson
method.
- set:
jsonString: ${resource.printJson('{"testKey":"testValue"}')}
The prettyPrintJson
method of the resource
task allows you to create a
version of a JSON string or an object, that is better readable in a log or other
output.
- log: ${resource.prettyPrintJson('{"testKey":"testValue"}')}
flows:
default:
- set:
newObj:
name: testName
type: testType
- log: ${resource.prettyPrintJson(newObj)}
The prettyPrintYaml
method can be used to format data as YAML with an option
to add additional indentation:
flows:
default:
- set:
data:
x: 1
y:
a: 10
b: 20
- set:
result: |
data: ${resource.prettyPrintYaml(data, 2)} # adds 2 spaces to each line
- log: |
-------------------------------------------
${result}