openstack工作流workflows的使用原理是什么
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,今天就跟大家聊聊有关 openstack工作流workflows的使用原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Workflow
千家信息网最后更新 2024年11月23日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安全错误
数据库的锁怎样保障安全
数据库表操作失败
数据库连接的语法
理正数据库安装无响应
centos部署服务器
达梦数据库集群架构图
erp电商软件开发
软件开发全程实录陈丹丹
网络技术计划案例
软件开发和测试环境管理规范
5g通信网络技术是学什么的
财经学校计算机网络技术
运城网络安全协会倡议书
未检测到服务器或未安装安全模块
数据库表绑定显示控件
贺峻霖红绳数据库
数据库服务对象
上游软件开发
guns框架如何操作数据库
鬼泣巅峰之战张大仙在哪个服务器
互联网 高科技新闻
数据泵 数据库链
淘宝运用的网络技术
哔咔的服务器是哪里的
贵阳乌当鑫宝龙软件开发有限公司
vba数组写入数据库
2022年是网络安全元年
数据库可以考哪些证书 考什么
上海琳林网络技术有限公司
美多多互联网科技
世界网络安全大赛2019