Merge branch 'MVP' into MVP
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
import daemon
|
||||
from time import sleep
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
logging.basicConfig(filename="daemon_test.log",filemode="w",encoding='utf-8',force=True,
|
||||
level=logging.INFO,
|
||||
format='[%(asctime)s]%(name)s[%(levelname)s]: %(message)s')
|
||||
|
||||
def main_program():
|
||||
while True:
|
||||
logger.info("hello world")
|
||||
sleep(1)
|
||||
|
||||
with daemon.DaemonContext():
|
||||
main_program()
|
||||
@@ -0,0 +1,32 @@
|
||||
import asyncio
|
||||
import os
|
||||
import sys
|
||||
|
||||
directory = os.path.dirname(__file__)
|
||||
sys.path.append(directory + '/../src')
|
||||
|
||||
from aios_kernel import CalenderEnvironment,WorkflowEnvironment
|
||||
|
||||
|
||||
async def test_buildin_envs():
|
||||
c_env = CalenderEnvironment("calender")
|
||||
c_env.start()
|
||||
print(c_env.get_value("now"))
|
||||
async def show_event(eventid,event):
|
||||
print(event.data)
|
||||
c_env.attach_event_handler("timer",show_event)
|
||||
|
||||
w_env = WorkflowEnvironment("workflow",os.path.abspath(directory + "/../rootfs/workflow_env.db"))
|
||||
w_env.set_value("test","test_aaaa")
|
||||
print(w_env.get_value("test"))
|
||||
|
||||
await asyncio.sleep(10)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
#test_rstr = "abc is {abc}"
|
||||
#values = {"abc":"123"}
|
||||
#new_str = test_rstr.format_map(values)
|
||||
#print(new_str)
|
||||
|
||||
asyncio.run(test_buildin_envs())
|
||||
+80
-12
@@ -1,15 +1,83 @@
|
||||
# workflow实例场景
|
||||
# 能展示sub workflow
|
||||
# 能展示env的整合
|
||||
# 能展示filter的使用
|
||||
# 能展示function的调用
|
||||
# 能展示基于工作目标/KPI的sub workflow迭代流程
|
||||
# 多人场景安排
|
||||
|
||||
[authors]
|
||||
"buckyos.org" = {public="aaaa",name="BuckyOS Core Dev Team"}
|
||||
[authors."cyfs.com"]
|
||||
public="bbbb"
|
||||
name="CYFS Core Dev Team"
|
||||
# 例子:举办一个团队活动
|
||||
# 方案讨论(通过交互引导的方式收集主人的需求)与确定
|
||||
|
||||
[env]
|
||||
is_strict = false
|
||||
prefixs = ["default","../m/s","abc"]
|
||||
obj2 = {k1="bb",k2=300}
|
||||
[env.obj]
|
||||
k1="aa"
|
||||
k2=200
|
||||
# 活动前:
|
||||
# 通讯员,对接管理参加活动的人的情况 (email spider)
|
||||
# 酒店预订 简单:搜索(酒店评价) 处理异常
|
||||
# 行程(票务)预订 :搜索,处理异常
|
||||
# 餐饮预订:给出方案,确定细节,预订
|
||||
|
||||
# 活动中:
|
||||
# 进行统计和分析,调整设备
|
||||
# 安保,空调,音乐,拍照,录像
|
||||
# 响应紧急情况
|
||||
|
||||
# 活动结束后:
|
||||
# 整理照片,视频,进行必要的二次创作,发送给相关人员
|
||||
# 对活动进行总结,提出改件意见(指导下一次活动)
|
||||
|
||||
# 1. 人员
|
||||
# 主管,负责和客户沟通,并对每个环境的结果进行总结
|
||||
# 嘉宾对接
|
||||
# 酒店组
|
||||
# 行程组
|
||||
# 财务组
|
||||
# 多媒体组
|
||||
|
||||
|
||||
[filter]
|
||||
"*" = "manager"
|
||||
|
||||
[roles.manager]
|
||||
fullname = "经理"
|
||||
agent="manager"
|
||||
[[roles.manager.prompt]]
|
||||
role="system"
|
||||
content="""你是一个活动策划公司的经理,与客户对接并向团队下达指令。你的团队分为下面几个小组:嘉宾对接组,酒店预定组,行程预订组,财务组,活动摄像组。活动策划分为四个阶段:方案讨论,活动前,活动中,活动后。你会根据客户的需求,对团队进行分工,分别完成各个阶段的工作。你的基本工作模式是:\
|
||||
1. 收到客户的明确的指令后,基于客户的已有信息和客户商量活动方案,和活动策划公司无关的业务你会回答‘与我无关’。当和客户完成活动方案的确认后,你会将拆解后的任务分配给各个小组 \
|
||||
2. 根据目前已经确认的活动方案,你要根据时间适时的检查不同小组的工作情况。当收到小组的工作情况反馈后,你会站在全局的角度判断是否需要调整活动方案,如果需要调整,你会和客户商量重新确定方案,然后再将调整后的方案分配给各个小组。\
|
||||
3. 有时工作小组会主动与你沟通,反馈一些问题。你会站在全局的角度给与指导,适当的调整工作小组的工作目标。如果反馈的问题需要你和客户沟通,你会和客户沟通后重新确定方案。再将调整后的方案分配给受到影响各个小组。\
|
||||
4. 当你决定要和工作小组通信时,请使用`send_message({小组名称},{内容}`)的形式。"""}]
|
||||
|
||||
|
||||
|
||||
|
||||
[sub_workflows]
|
||||
[sub_workflows."嘉宾对接组"]
|
||||
# 展现读取email和发送email与嘉宾沟通的能力
|
||||
[sub_workflows."嘉宾对接组".environments.email]
|
||||
new_mail = "收到来自{event.data.from},标题为{event.data.subject}的邮件,内容为{event.data.content}的电子邮件" # 这里将new_mail事件转换为了一个来自环境的message
|
||||
|
||||
[sub_workflows."嘉宾对接组".roles.leader]
|
||||
name = "嘉宾对接组组长"
|
||||
[[sub_workflows."嘉宾对接组".roles.leader.prompt]]
|
||||
role="system"
|
||||
content="""你是一家活动策划公司的嘉宾对接组的组长,你的工作是基于已知信息,当前活动信息、公司经理的指令与嘉宾沟通,收集嘉宾的信息,然后将信息反馈给经理。在你看来,参加活动的多少有成员都是嘉宾,你可以通过你知道的信息给不同的成员进行分级。你的基本工作模式是:\
|
||||
1. 处理收到的邮件,如果邮件来自嘉宾,你会尝试从邮件的表态和内容中分享嘉宾的需要,并结合你对当前活动方案的理解判断是否需要和经理沟通,如果需要和经理沟通,你会将嘉宾的需求总结和告诉经理。不需要沟通的事项可以直接回复嘉宾。\
|
||||
2. 你总是通过`call_function(get_env,'parent.topic'`的形式查询当前的活动方案。等待函数返回后,你会根据函数的返回结果继续处理上一个对话。\
|
||||
3. 当你决定要和经理通信时,请使用`send_message(manager,{内容}`)的形式,内容的长度不超过200字。\
|
||||
4. 当你决定要回复嘉宾时,请使用`call_function(sendmail,{嘉宾邮件地址},{标题},{内容})的形式,内容的长度不超过500字。"""
|
||||
# 这里是孤立工作模式,组长只和经理沟通,也可以赋予其和其它组沟通的能力
|
||||
|
||||
[sub_workflows."酒店预定组"]
|
||||
# 展现使用搜索引擎,并调用预订酒店的能力
|
||||
[sub_workflows."酒店预定组".environments.email]
|
||||
|
||||
[sub_workflows."酒店预定组".roles.leader]
|
||||
name="酒店预定组组长"
|
||||
prompt = [{role="xxx",content="yyy"}]
|
||||
|
||||
[sub_workflows."酒店预定组".roles.research]
|
||||
name="酒店搜索专家"
|
||||
|
||||
[sub_workflows."行程预订组"]
|
||||
# 展现处理冲突并反推
|
||||
nam3="3"
|
||||
|
||||
Reference in New Issue
Block a user