openstack工作流workflows的使用原理是什么
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,今天就跟大家聊聊有关 openstack工作流workflows的使用原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Workflow
千家信息网最后更新 2026年11月03日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安全错误
数据库的锁怎样保障安全
博彦科技互联网金融
广州大一互联网络科技有限公司
科技互联网企业
互联网科技保险
麻工互联网科技
互联网与未来科技
广州宏创互联网科技
互联网科技视频
互联网金融 科技创新
一五八零互联网科技
盛创互联网科技有限公司
海南科技产业互联网平台
恒银科技与互联网金融
上海宁丞科技互联网
民营互联网公司国防科技
朱啸虎曾投资哪些互联网科技企业
世界互联网科技成果奖
米泉互联网科技专业怎么样
互联网的科技体现在哪里
武汉亿视互联网科技有限公司
互联网科技公司经营范围
中关村互联网科技集团
广州百单互联网科技有限公司
今日互联网科技
互联网和科技创新
盛创互联网科技有限公司
未来五年的互联网科技
互联网科技公司营业执照怎么办理
求路客互联网科技电话
科技信息时代互联网发展