diff --git a/wfcommons/wfinstances/logs/ro_crate.py b/wfcommons/wfinstances/logs/ro_crate.py index dfd44b3a..c6a84f73 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,9 +203,14 @@ 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']) + # 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 - 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,