This is an automated email from the ASF dual-hosted git repository.

fjtiradosarti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-docs.git


The following commit(s) were added to refs/heads/main by this push:
     new f3972fc9c [KOGITO-7257] Documenting workflow metainfo (#531)
f3972fc9c is described below

commit f3972fc9c3cbb847f41c665bb98c3dabfecb5946
Author: Francisco Javier Tirado Sarti 
<[email protected]>
AuthorDate: Thu Feb 15 12:06:49 2024 +0100

    [KOGITO-7257] Documenting workflow metainfo (#531)
    
    * [KOGITO-7257] Documenting workflow metainfo
    
    * Update 
serverlessworkflow/modules/ROOT/pages/core/understanding-jq-expressions.adoc
    
    Co-authored-by: Kalyani Desai <[email protected]>
    
    * Update 
serverlessworkflow/modules/ROOT/pages/core/understanding-jq-expressions.adoc
    
    Co-authored-by: Kalyani Desai <[email protected]>
    
    * Update 
serverlessworkflow/modules/ROOT/pages/core/understanding-jq-expressions.adoc
    
    Co-authored-by: Kalyani Desai <[email protected]>
    
    * Update 
serverlessworkflow/modules/ROOT/pages/core/understanding-jq-expressions.adoc
    
    Co-authored-by: Kalyani Desai <[email protected]>
    
    * Update 
serverlessworkflow/modules/ROOT/pages/core/understanding-jq-expressions.adoc
    
    Co-authored-by: Kalyani Desai <[email protected]>
    
    ---------
    
    Co-authored-by: Kalyani Desai <[email protected]>
---
 serverlessworkflow/antora.yml                      |  1 +
 .../pages/core/understanding-jq-expressions.adoc   | 39 ++++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git a/serverlessworkflow/antora.yml b/serverlessworkflow/antora.yml
index 4824117e8..1bf585a9c 100644
--- a/serverlessworkflow/antora.yml
+++ b/serverlessworkflow/antora.yml
@@ -68,6 +68,7 @@ asciidoc:
     kogito_sw_operator_examples_url: 
https://github.com/apache/incubator-kie-kogito-examples/tree/main/serverless-operator-examples
     kogito_examples_url: 
https://github.com/apache/incubator-kie-kogito-examples.git
     kogito_apps_url: 
https://github.com/apache/incubator-kie-kogito-apps/tree/main
+    kogito_runtimes_url: 
https://github.com/apache/incubator-kie-kogito-runtimes/tree/main
     quarkus_cli_url: https://quarkus.io/guides/cli-tooling
     spec_website_url: https://serverlessworkflow.io/
     spec_doc_url: 
https://github.com/serverlessworkflow/specification/blob/0.8.x/specification.md
diff --git 
a/serverlessworkflow/modules/ROOT/pages/core/understanding-jq-expressions.adoc 
b/serverlessworkflow/modules/ROOT/pages/core/understanding-jq-expressions.adoc
index 675c53c86..f3d3d8390 100644
--- 
a/serverlessworkflow/modules/ROOT/pages/core/understanding-jq-expressions.adoc
+++ 
b/serverlessworkflow/modules/ROOT/pages/core/understanding-jq-expressions.adoc
@@ -199,6 +199,45 @@ You can find an example of event data filtering in the 
link:{kogito_sw_examples_
 The previous example of the event filter copies the content of CloudEvent data 
`result` field into the workflow model `move` field.
 --
 
+== Workflow secrets, constants and context
+
+As per specification, you can use 
link:{spec_doc_url}#workflow-constants[Workflow Constants] and 
link:{spec_doc_url}#workflow-secrets[Workflow Secrets] whenever an expression 
is accepted. 
+In {product_name} you can use `$SECRET` to access any configuration property, 
not just sensitive ones.
+So, assuming you have added to your `application.properties` a line with the 
`myname=john` property, the following function will append the string `my name 
is john` to the `message` variable
+----
+{
+      "name": "secretMessage",
+      "type": "expression",
+      "operation": ".message |= \"my name is \"+$SECRET.my_name"
+}
+----
+
+Besides constants and secrets, you might access contextual information of the 
running workflow by using the $WORKFLOW reserved word.
+{product_name} supports the following contextual keys:
+ * `id`: The id of the running workflow definition
+ * `name`: The name of the running workflow definition
+ * `instanceId`: The id of the running workflow instance
+ * `headers`: Optional map containing the headers, if any, of the invocation 
that started the running workflow instance 
+ * `prevActionResult`: In a `foreach` state, give access the result of the 
previous loop iteration output. 
+ * `identity`: Quarkus security identity
+ 
+ Therefore, the following function, for a serverless workflow definition whose 
id  is `expressionTest`, will append the string `worklow id is expressionTest` 
to the `message` variable
+
+----
+{
+      "name": "contextMessage",
+      "type": "expression",
+      "operation": ".message |= \"workflow id is \"+$WORKFLOW.id"
+}
+----
+ 
+=== Customizing workflow context
+
+In addition to the predefined keys mentioned previously, you can add your own 
keys to workflow context using Java Service Loader mechanism, by providing an 
implementation of class 
link:{kogito_runtimes_url}/kogito-serverless-workflow/kogito-serverless-workflow-utils/src/main/java/org/kie/kogito/serverless/workflow/utils/KogitoProcessContextResolverExtension.java[KogitoProcessContextResolverExtension]
 
+
+This feature was used to add quarkus security identity support, you can check 
source code as reference 
link:{kogito_runtimes_url}/quarkus/extensions/kogito-quarkus-serverless-workflow-extension/kogito-quarkus-serverless-workflow/src/main/java/org/kie/kogito/serverless/workflow/QuarkusKogitoProcessContextResolver.java[here].
+
+
 == Additional resources
 
 * link:{jq_play} [JQ Play offline]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to