diff --git a/digdag-core/src/main/java/io/digdag/core/agent/RuntimeParams.java b/digdag-core/src/main/java/io/digdag/core/agent/RuntimeParams.java index 8caded40c9..0fc37a2f22 100644 --- a/digdag-core/src/main/java/io/digdag/core/agent/RuntimeParams.java +++ b/digdag-core/src/main/java/io/digdag/core/agent/RuntimeParams.java @@ -4,6 +4,10 @@ import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + import io.digdag.client.config.Config; import io.digdag.client.config.ConfigException; import io.digdag.client.config.ConfigFactory; @@ -71,8 +75,16 @@ public static Config buildRuntimeParams(ConfigFactory cf, TaskRequest request) params.set("retry_attempt_name", request.getRetryAttemptName().orNull()); + LinkedList taskNames = new LinkedList<>(Arrays.asList(request.getTaskName().split("\\+"))); + // Remove the head empty item + taskNames.remove(0); + String workflowName = taskNames.remove(0); + + // workflow_* + params.set("workflow_name", workflowName); + // task_* - params.set("task_name", request.getTaskName()); + params.set("task_name", taskNames); return params; } diff --git a/digdag-docs/src/workflow_definition.rst b/digdag-docs/src/workflow_definition.rst index d7fb2ee749..d302cb27f3 100644 --- a/digdag-docs/src/workflow_definition.rst +++ b/digdag-docs/src/workflow_definition.rst @@ -63,7 +63,8 @@ Name Description Exam **session_local_time** Local time format of session_time 2016-01-30 00:00:00 **session_tz_offset** Time zone offset part of session_time -0800 **session_unixtime** Seconds since the epoch time 1454140800 -**task_name** Name of this task +my_workflow+parent_task+child_task0 +**workflow_name** Name of this workflow my_workflow +**task_name** Parts of this task name separated with nest [parent_task,child_task3] =============================== =========================================== ========================== If `schedule: option is set `_, **last_session_time** and **next_session_time** are also available as following: diff --git a/digdag-tests/src/test/java/acceptance/BuiltInVariablesIT.java b/digdag-tests/src/test/java/acceptance/BuiltInVariablesIT.java index 7d8c56d3dc..15b3a2bf44 100644 --- a/digdag-tests/src/test/java/acceptance/BuiltInVariablesIT.java +++ b/digdag-tests/src/test/java/acceptance/BuiltInVariablesIT.java @@ -73,7 +73,9 @@ public void testRun() .put("next_session_local_time", is("2016-01-03 00:00:00")) .put("next_session_tz_offset", is("+0000")) .put("next_session_unixtime", is("1451779200")) - .put("task_name", is("+built_in_variables+get_variables+task_name")) + .put("workflow_name", is("built_in_variables")) + .put("task_name_full", is("[get_variables,task_name_full]")) + .put("task_name_edge", is("task_name_edge")) .build(); assertThat(values.entrySet().size(), is(expectedOutput.size())); diff --git a/digdag-tests/src/test/resources/acceptance/built_in_variables/built_in_variables.dig b/digdag-tests/src/test/resources/acceptance/built_in_variables/built_in_variables.dig index 1147b1200a..dc8ebe8c9e 100644 --- a/digdag-tests/src/test/resources/acceptance/built_in_variables/built_in_variables.dig +++ b/digdag-tests/src/test/resources/acceptance/built_in_variables/built_in_variables.dig @@ -50,5 +50,9 @@ schedule: sh>: "echo next_session_tz_offset: \\'${next_session_tz_offset}\\' >> output.yml" +next_session_unixtime: sh>: "echo next_session_unixtime: \\'${next_session_unixtime}\\' >> output.yml" - +task_name: - sh>: "echo task_name: \\'${task_name}\\' >> output.yml" + +workflow_name: + sh>: "echo workflow_name: \\'${workflow_name}\\' >> output.yml" + +task_name_full: + sh>: "echo task_name_full: \\'${task_name}\\' >> output.yml" + +task_name_edge: + sh>: "echo task_name_edge: \\'${task_name[task_name.length - 1]}\\' >> output.yml"