openstack工作流workflows的使用原理是什么
发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,今天就跟大家聊聊有关 openstack工作流workflows的使用原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Workflow
千家信息网最后更新 2025年01月28日openstack工作流workflows的使用原理是什么
今天就跟大家聊聊有关 openstack工作流workflows的使用原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
Workflows
工作流是复杂的forms(表单)和tabs,每一个workflow必须包含 Workflow , Step 和 Action
下面举例讲解 workflow用法:
接下来的例子讲解了数据是如何从urls、views、workflows、templates之间互相传递的
在
urls.py中
, 定义了一个参数. 例如.resource_class_id
.RESOURCE_CLASS = r'^(?P
[^/]+)/%s$'urlpatterns = patterns('',url(RESOURCE_CLASS % 'update', UpdateView.as_view(), name='update')) 在views.py中,我们可以传递数据到template(模板)和action(form)中。(action 也能够传递数据到
get_context_data
方法或者template中)class UpdateView(workflows.WorkflowView): workflow_class = UpdateResourceClassdef get_context_data(self, **kwargs): context = super(UpdateView, self).get_context_data(**kwargs)# url中的数据通常在self.kwargs中,这里我们可以将数据传递给template.url
context["resource_class_id"] = self.kwargs['resource_class_id']# 数据来源于Workflow's Steps,且保存在context['workflow'].context列表中,我们同样可以在template 中使用它们
return contextdef _get_object(self, *args, **kwargs):#url中的数据通常在self.kwargs中,我们能够在这里加载感兴趣的对象resource_class_id = self.kwargs['resource_class_id']# eg:my_objects = api.nova.get_by_id(resource_class_id)
def get_initial(self): resource_class = self._get_object()# 此处的数据可以被Action的方法以及Workflow's handle方法使用,但是steps必须depend on该值return {'resource_class_id': resource_class.id,'name': resource_class.name,'service_type': resource_class.service_type}
在workflows.py中,我们处理数据,workflows本质就是一个更加复杂的django form(表单)
class ResourcesAction(workflows.Action):# 下述定义的name域值 在所有的action 方法中都可以获取# 假若我们期望此值能够在其他steps或者其他workflow中使用,它必须来源于当前step,且建立depend on在其他step中 name = forms.CharField(max_length=255, label=_("Testing Name"), help_text="", required=True)def handle(self, request, data):pass# 如果想使用url中参数值,在该Action对应的step中必须建立depend on关系
# 可以self.initial['resource_class_id'] or data['resource_class_id']获取值# 如果我们想使用其他step中的数据,那么其他step 必须contribute 数据,且两个step之间是有序的 class UpdateResources(workflows.Step):# 此处传递Workflow 的数据到action方法handle/clean中,action中想要使用的值,此处depends_on 必须要定义
# Workflow 的context 数据包括url中的数据以及从其他step中contributed 过来的数据depends_on = ("resource_class_id",)# 通过contributes 参数,此处的数据可以被其他workflow或者其他step使用,值得注意的是,object_ids key需要手动添加到contributes 中
contributes = ("resources_object_ids", "name")def contribute(self, data, context):# 此处能获取workflow的http request数据request = self.workflow.requestif data:# 只有在action中定义的数据此处才能获取,如果想获取其他值,则需要覆盖contribute 方法,手动添加到字典里context["resources_object_ids"] =\
request.POST.getlist("resources_object_ids")# 合并上面传递来的数据,也可以交给父类去合并context.update(data)return contextclass UpdateResourceClass(workflows.Workflow):
default_steps = (UpdateResources,)def handle(self, request, data):pass# 这个方法在最后执行(所有Action的handle方法之后)# 此处可以使用step中所有'contributes=' 和'depends_on=' 的数据# 此处可以处理复杂的业务逻辑#此处可用值: data["resources_object_ids"], data["name"] data["resources_class_id"]
看完上述内容,你们对 openstack工作流workflows的使用原理是什么有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
数据
方法
工作流
工作
复杂
内容
参数
原理
之间
手动
来源
表单
处理
有序
接下来
业务
两个
例子
兴趣
只有
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
浦东新区网络技术服务收费标准
在公司平时软件开发难吗
扫描与网络安全无关
电脑a7服务器是什么原因
睿恩佳讯网络技术北京
红猪科技互联网
网络安全大赛游戏下载
软件开发期的内容是
ps5复仇者联盟无法连接服务器
ps4网络服务器维护
宝山区正规软件开发包括什么
国家大力宣传网络安全的目的
杭州定制app软件开发企业
一学一做网络安全
我的世界服务器卫星插件
税务网络安全研讨材料
常州尖峰软件开发有限公司
第六章数据库设计理论思维导图
办公网络安全知识大赛
在数据库中投影运算的含义
突然没网提示dns服务器未响应
网络安全科技馆万维之旅
如何安装云桌面服务器
永劫无双连接服务器失败
数据库更改表的结构
生物信息学检索数据库
软件开发难还是人工智能难
计算机网络技术专业课包含高数吗
pvp服务器打不开
山西网络安全等级保护测评名单