Workflow is almost done.

This commit is contained in:
Liu Zhicong
2023-09-01 00:39:36 -07:00
parent 27f163ddd3
commit b4990e4c57
11 changed files with 469 additions and 175 deletions
@@ -25,6 +25,20 @@ class WorkflowManager:
async def get_agent_default_workflow(self,agent_id:str) -> Workflow:
pass
async def _load_workflow_agents(self,workflow:Workflow) -> bool:
for v in workflow.role_group.roles.values():
agent = await AgentManager().get(v.agent_name)
if agent is None:
logger.error(f"load agent {v.agent_name} failed!")
return False
v.agent = agent
for sub_workflow in workflow.sub_workflows.values():
if await self._load_workflow_agents(sub_workflow) is False:
return False
return True
async def get_workflow(self,workflow_id:str) -> Workflow:
the_workflow : Workflow = self.loaded_workflow.get(workflow_id)
if the_workflow:
@@ -39,14 +53,9 @@ class WorkflowManager:
if the_workflow is None:
logger.warn(f"load workflow {workflow_id} from media failed!")
for v in the_workflow.role_group.roles.values():
agent = await AgentManager().get(v.agent_name)
if agent is None:
logger.error(f"load agent {v.agent_name} failed!")
return None
v.agent = agent
if await self._load_workflow_agents(the_workflow) is False:
return None
return the_workflow
async def _load_workflow_from_media(self,workflow_media:PackageMediaInfo) -> Workflow:
@@ -64,10 +73,12 @@ class WorkflowManager:
config_data = await config_file.read()
config = toml.loads(config_data)
result_workflow = Workflow()
result_workflow.db_file = self.db_file
if result_workflow.load_from_config(config) is False:
logger.error(f"load workflow from {workflow_media} failed!")
return None
result_workflow.db_file = self.db_file
return result_workflow
except Exception as e:
logger.error(f"read workflow.toml cfg from {workflow_media} failed! unexpected error occurred: {str(e)}")