Add Workflow Executor Example (#892)
Signed-off-by: JoshuaL3000 <joshua.jian.ern.liew@intel.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
This commit is contained in:
70
WorkflowExecAgent/tools/components/workflow.py
Normal file
70
WorkflowExecAgent/tools/components/workflow.py
Normal file
@@ -0,0 +1,70 @@
|
||||
# Copyright (C) 2024 Intel Corporation
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import json
|
||||
from typing import Dict
|
||||
|
||||
from tools.components.component import Component
|
||||
|
||||
|
||||
class Workflow(Component):
|
||||
"""Class for handling EasyData workflow operations.
|
||||
|
||||
Attributes:
|
||||
workflow_id: workflow id
|
||||
wf_key: workflow key. Generated and stored when starting a servable workflow.
|
||||
"""
|
||||
|
||||
def __init__(self, request_handler, workflow_id=None, workflow_key=None):
|
||||
super().__init__(request_handler)
|
||||
self.workflow_id = workflow_id
|
||||
self.wf_key = workflow_key
|
||||
|
||||
def start(self, params: Dict[str, str]) -> Dict[str, str]:
|
||||
"""
|
||||
``POST https://SDK_BASE_URL/serving/servable_workflows/{workflow_id}/start``
|
||||
|
||||
Starts a workflow instance with the workflow_id and parameters provided.
|
||||
Returns a workflow key used to track the workflow instance.
|
||||
|
||||
:param dict params: Workflow parameters used to start workflow.
|
||||
|
||||
:returns: WorkflowKey
|
||||
|
||||
:rtype: string
|
||||
"""
|
||||
data = json.dumps({"params": params})
|
||||
endpoint = f"serving/servable_workflows/{self.workflow_id}/start"
|
||||
self.wf_key = self._make_request(endpoint, "POST", data)["wf_key"]
|
||||
if self.wf_key:
|
||||
return f"Workflow successfully started. The workflow key is {self.wf_key}."
|
||||
else:
|
||||
return "Workflow failed to start"
|
||||
|
||||
def get_status(self) -> Dict[str, str]:
|
||||
"""
|
||||
``GET https://SDK_BASE_URL/serving/serving_workflows/{workflow_key}/status``
|
||||
|
||||
Gets the workflow status.
|
||||
|
||||
:returns: WorkflowStatus
|
||||
|
||||
:rtype: string
|
||||
"""
|
||||
|
||||
endpoint = f"serving/serving_workflows/{self.wf_key}/status"
|
||||
return self._make_request(endpoint, "GET")
|
||||
|
||||
def result(self) -> list[Dict[str, str]]:
|
||||
"""
|
||||
``GET https://SDK_BASE_URL/serving/serving_workflows/{workflow_key}/results``
|
||||
|
||||
Gets the workflow output result.
|
||||
|
||||
:returns: WorkflowOutputData
|
||||
|
||||
:rtype: string
|
||||
"""
|
||||
|
||||
endpoint = f"serving/serving_workflows/{self.wf_key}/results"
|
||||
return self._make_request(endpoint, "GET")
|
||||
Reference in New Issue
Block a user