From b6ffc8eb58803d3f3cef1d0a3cb018ebfd1779b8 Mon Sep 17 00:00:00 2001 From: Henri Casanova Date: Mon, 20 Jul 2026 14:13:45 -1000 Subject: [PATCH 1/4] Modified the RO-Crate log parser so that it generates wfchef-friendly task IDs (with "ID_xxxxxx" as a suffix) --- wfcommons/wfinstances/logs/ro_crate.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wfcommons/wfinstances/logs/ro_crate.py b/wfcommons/wfinstances/logs/ro_crate.py index dfd44b3a..d90a766e 100644 --- a/wfcommons/wfinstances/logs/ro_crate.py +++ b/wfcommons/wfinstances/logs/ro_crate.py @@ -160,6 +160,7 @@ def _create_tasks(self, create_actions, main_workflow_id): # Object to track task's "instrument" for further dependencies instruments = {} + task_idx = 1 for create_action in create_actions: # Handle overall workflow create_action then skip if create_action["name"] == f"Run of workflow/{main_workflow_id}": @@ -202,7 +203,9 @@ def _create_tasks(self, create_actions, main_workflow_id): if not start_time or not end_time: start_time, end_time = self.task_runtimes.get(create_action['name'], (None, None)) - task_id = self._sanitize_task_id(create_action['name'] + "_" + create_action['@id']) + # task_id = self._sanitize_task_id(create_action['name'] + "_" + create_action['@id']) + task_id = self._sanitize_task_id(create_action['name'] + f"_ID{task_idx:07d}") + task_idx += task_idx task = Task(name=create_action['name'], # task_id=create_action['name'], From 06f6e74adbabd3c44829e58bc174d3c3e0230a2b Mon Sep 17 00:00:00 2001 From: Henri Casanova Date: Mon, 20 Jul 2026 14:56:37 -1000 Subject: [PATCH 2/4] Modified the RO-Crate log parser so that it generates wfchef-friendly task names (with "ID_xxxxxx" as a suffix) --- wfcommons/wfinstances/logs/ro_crate.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/wfcommons/wfinstances/logs/ro_crate.py b/wfcommons/wfinstances/logs/ro_crate.py index d90a766e..91549c54 100644 --- a/wfcommons/wfinstances/logs/ro_crate.py +++ b/wfcommons/wfinstances/logs/ro_crate.py @@ -204,10 +204,12 @@ def _create_tasks(self, create_actions, main_workflow_id): start_time, end_time = self.task_runtimes.get(create_action['name'], (None, None)) # task_id = self._sanitize_task_id(create_action['name'] + "_" + create_action['@id']) - task_id = self._sanitize_task_id(create_action['name'] + f"_ID{task_idx:07d}") + task_name = self._sanitize_task_id(create_action['name'] + f"_ID{task_idx:07d}") + task_id = f"_ID{task_idx:07d}" task_idx += task_idx - task = Task(name=create_action['name'], + task = Task(#name=create_action['name'], + name=task_name, # task_id=create_action['name'], task_id=task_id, task_type=TaskType.COMPUTE, From 3e3bfb2729f086cd8903339efbd5de12b785f5bf Mon Sep 17 00:00:00 2001 From: Henri Casanova Date: Mon, 20 Jul 2026 15:44:31 -1000 Subject: [PATCH 3/4] In RO-Crate log parser, make it that all generated tasks have the same name and id. --- wfcommons/wfinstances/logs/ro_crate.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wfcommons/wfinstances/logs/ro_crate.py b/wfcommons/wfinstances/logs/ro_crate.py index 91549c54..1995a707 100644 --- a/wfcommons/wfinstances/logs/ro_crate.py +++ b/wfcommons/wfinstances/logs/ro_crate.py @@ -205,7 +205,7 @@ def _create_tasks(self, create_actions, main_workflow_id): # task_id = self._sanitize_task_id(create_action['name'] + "_" + create_action['@id']) task_name = self._sanitize_task_id(create_action['name'] + f"_ID{task_idx:07d}") - task_id = f"_ID{task_idx:07d}" + task_id = task_name task_idx += task_idx task = Task(#name=create_action['name'], From 734937d2cab991c1a30bff7c14629cb0a09d5f60 Mon Sep 17 00:00:00 2001 From: Henri Casanova Date: Mon, 20 Jul 2026 16:09:12 -1000 Subject: [PATCH 4/4] Comments++ --- wfcommons/wfinstances/logs/ro_crate.py | 1 + 1 file changed, 1 insertion(+) diff --git a/wfcommons/wfinstances/logs/ro_crate.py b/wfcommons/wfinstances/logs/ro_crate.py index 1995a707..c6a84f73 100644 --- a/wfcommons/wfinstances/logs/ro_crate.py +++ b/wfcommons/wfinstances/logs/ro_crate.py @@ -204,6 +204,7 @@ def _create_tasks(self, create_actions, main_workflow_id): start_time, end_time = self.task_runtimes.get(create_action['name'], (None, None)) # task_id = self._sanitize_task_id(create_action['name'] + "_" + create_action['@id']) + # Using this name/id scheme below is WfChef-friendly task_name = self._sanitize_task_id(create_action['name'] + f"_ID{task_idx:07d}") task_id = task_name task_idx += task_idx