脚本模块
脚本模块集成了 Octave 和 Python 引擎,允许用户在 Requirements & Systems Portal 内使用其中一种语言编写和运行计算。该模块旨在执行标准 ValiEngine 无法实现的复杂计算。
如果用户希望操作数值 Valis 以外的任何其他对象,则必须使用 Requirements & Systems Portal 的 Python API。用例包括
-
创建一个值并将其批量添加到多个区块中
-
批量编辑需求标识符
-
使用 Python 运行模拟
-
将功率值单位转换为千瓦。
-
根据自动触发器运行自定义工作流程行为
脚本模块流程
要使用该模块,用户需要创建一个新脚本,添加输入/输出,以 .m 或 .py 格式编写代码,并运行代码以获得所需的输出。
脚本模块工作流程。 创建新脚本
要创建新脚本,请单击脚本模块中的 "+ 脚本"(1) 选项。

此时将出现一个对话框,允许您输入脚本名称、选择引擎(Octave 或 Python),并提供其他选项供用户使用/重复使用模板。
创建新脚本选项创建新脚本后,用户还可以为脚本创建其他文本、JSON 和 YAML 文件。要添加新文件,请单击 "+添加文件"(1) 选项,添加文件名,并在对话框中选择文件类型。这样就为脚本添加了一个文件。
要使用任何额外创建的文件,用户必须在 main.py 文件顶部加入以下两行代码:
导入 site
site.addsitedir('script_code/')
这两行代码之后,就可以使用标准的
机密管理:
为了避免在使用连接到我们的 API 或其他工具的脚本时暴露使用必要的凭据,可以定义个人秘密变量,在脚本运行时调用这些变量,并通过将它们存储在脚本文件中,避免将它们暴露给部署中的其他用户。
如何添加以及在哪里添加
可在 "设置 "面板的 "用户秘密 "下定义秘密。这些秘密可在脚本中重复使用,以登录到 Requirements & Systems Portal。下面的视频短片演示了如何创建用户秘密。
顾名思义,这些秘密对每个用户都是独一无二的,只有定义它们的人才能访问。
如何在脚本中使用秘密
通过从".设置 "模块导入秘密名称,用户可以在脚本中使用秘密进行身份验证。
from .settings import USERNAME, PASSWORD #区分大小写,使用与用户秘密相同的单词。
LOGIN_DATA = {
域名': 'API_URL'、
用户名':USERNAME、
密码密码
}
运行时,脚本将从触发脚本的用户的用户设置中定义的秘密中获取这些变量的值,它们取决于该用户的权限。脚本不应包含这些变量的任何输出函数,以免暴露用户秘密。
设置为自动触发的一般使用脚本可由管理员级用户进行身份验证,该用户可取消所有其他用户的读取权限,从而保持脚本的隐藏性。
队列系统
利用队列系统,用户可以确保脚本始终运行,尤其是在预定义自动化定期触发自定义工作流程脚本的情况下。为此,请访问 "运行 "部分。您可以查看所有脚本的所有运行情况,也可以查看特定脚本的运行情况。
现在,所有脚本的运行情况都会保存在部署中,通过选择脚本模块树顶部的 "所有脚本 "选项,可以查看每个脚本或所有脚本的运行情况。
单击 "操作 "下拉菜单中的 "停止 "按钮,即可停止正在运行的脚本。
停止脚本的操作。 权限处理
脚本有自己的权限,可以直接从脚本模块或项目模块的 "权限 "下进行处理。
从仪表板运行脚本
用户还可以使用 "运行脚本 "按钮创建自定义交互仪表板。这些按钮与之前用于触发 REST 调用的 "请求 "按钮类似,但可以配置为按下按钮即可运行单个或多个脚本。
通过在调用的脚本中使用 Python API,可以设置自定义交互仪表盘,其中的标准文本框等元素可用作脚本的输入和输出字段,从而直接或间接地影响显示的其他元素。
为此,请进入项目模块并进入 "仪表盘"。然后进入自定义仪表板,点击右下角的加号图标。然后从 "操作 "下拉菜单中选择 "运行脚本 "选项。
这样就创建了一个按钮,可以运行脚本来更新仪表盘的特定区块。
一个有趣的用例是,通过和失败的测试运行都会被计数并显示在同一仪表板的文本块中。
脚本和自动化
预设自动化可触发脚本。例如,可将复杂的计算设置为在其定义的输入发生更改时自动运行。此外,通过使用 Requirements & Systems Portal 的 Python API,还可编程定制复杂行为,以建立自定义工作流程。
自动化不仅会触发脚本,还会传递触发对象的信息,这样脚本就可以直接作用于这些对象。对象信息可在 "kwargs "字典变量中的 "triggered_objects "键下找到,如下例所示:
object_data = kwargs['triggered_objects'][0]
如果没有权限查看脚本的用户触发了脚本,自动操作也会运行脚本,从而允许管理员用户自定义工作流和进行计算,同时限制对底层代码(如专有数学和物理模型)的访问。
工作流脚本示例可在 valifn 公共存储库的模板文件夹中找到。
自定义 Valifn 图像
内部部署用户还可以自定义他们的 Valifn 实例,以运行他们想要的任何 Python 软件包,前提是他们的服务器硬件能够处理这些软件包。内部部署用户还可以管理在脚本运行时使用的 Valifn 映像。
如图所示,该选项可在每个脚本的常规设置中作为文本字段使用。
如何创建自定义镜像
有关如何设置自己的 valifn 镜像的更多说明,请参阅公共存储库的文档页面:
Python 脚本示例
可在 Valicopter 5000(新部署)部署示例项目和ValiFn 的 Github 公共存储库中找到可用的脚本示例。
这些示例可以手动触发或自动触发(某些情况下是专用的),用户既可以按原样使用,也可以对其进行修改,以执行任何类型的定制行为。
这些示例中有许多是作为脚本模块和自动化的可能性演示而创建的,以创建定制的自动化工作流程。我们鼓励用户根据自己的需求定制任何现有脚本,并与 ValiFn 的公共存储库分享任何通用脚本和改进。
儿童可疑警报(自动化)
合理
该脚本由自动化触发,必须设置为由对现有需求的更改触发,因为该脚本根据已编辑需求的属性采取行动。其当前定义的操作是在每个子需求(如果有的话)中放置讨论,并附带有关父需求变更状态的定制信息。
建议的定制
其他可能的操作是创建任务或将编辑的需求添加到审查中。
当前操作
-
检查触发预设自动化的需求是否有子需求
-
如果有子需求,则在每个子需求中发布讨论,说明父需求已更新。
-
讨论包括编辑需求从而触发自动化的用户身份。
新任务(自动化)
合理
在创建新区块时,潜在客户要求自动创建任务并分配给特定用户。在本例中,创建新块时触发的预设自动化将创建一个新任务并为其分配一个用户。理想情况是将触发对象添加为输入,但这一开发工作尚未最终完成。
建议定制
使用 kwargs['triggered_objects'][0]
当前操作
-
发布分配给指定用户的新任务。
需求统计
合理
这是一个简单的例子,说明如何创建一个更个性化的计数器,并提供比 "仪表盘" 和 "分析 "文档中默认块更多的统计值。每次创建、修改或删除需求时,都可以手动运行或设置为自动运行。
建议定制
-
将提取的需求信息与先前更新的值进行比较,从中得出更复杂的统计数据。每个值都可以用百分比表示增加/减少了多少。
-
通过在每个项目中单独运行脚本来比较部署统计数据,并添加一个从每个项目中提取统计数据的特殊实例,将其显示在仪表板中。
-
如果统计数据显示需求数量突然下降,则为项目管理员设置自定义警告,这意味着项目可能会发生重大变化。
当前操作
-
为部署中的单个项目建立总体需求统计。
-
根据结果修补预先创建的 Valis。
规范生成
理性
这是一个示例脚本,展示了 Python API 在创建全自动报告方面的强大功能。虽然主要脚本也可在集成文档页面中找到,但这一特定版本已调整为可从部署的脚本模块运行。
它可以由自动化或手动触发。
建议定制
-
通过调整当前的需求获取流程来提取块和其他对象,创建完整的报告,以便在报告中填写
-
将最终输出文件更改为 PDF,而不是可编辑的 Word 文件。
当前操作
-
从给定的部署中获取 Word 文件作为模板,并将生成的文件作为输出返回,文件数量与放置在部署的文件管理中的规范数量相同(更多详情,请参阅基于 Microsoft Word 模板的规范导出)。
测试仪表板
理性
仪表板计数器尚未跟上测试模块的步伐,也没有自动测试计数器。本脚本是作为自定义计数器的概念验证而开发的,但尚未实施。最初的设想是通过仪表板中的 "运行脚本 "按钮手动触发运行。
建议定制
-
扩展发布到控制面板的测试统计信息。
-
如果测试运行成功,则将结果发布到连接的任务中,并将其状态更改为 "完成"。
当前操作
-
返回一个字符串,放在预定义的仪表板文本块上,其中包含计算出的测试运行统计数据。
-
它可以接收来自自动化的输入,也可以手动触发。