如何创建公共 Forge 设计自动化活动和包?
Posted
技术标签:
【中文标题】如何创建公共 Forge 设计自动化活动和包?【英文标题】:How to create public Forge Design Automation Activity and Package? 【发布时间】:2021-06-19 02:29:38 【问题描述】:我想创建一个公开的Design Automation Activity 和 Package,以便其他具有未知 ClientId 和 Secret 的 Forge 应用程序可以使用我们的公司 DA 工具。所以我在有效载荷上设置了isPublic: true
标志,但令我非常绝望的是,它不起作用。
看看我下面的POST activity有效载荷:
const activityParams =
id: DA_ACTIVITY_ID,
commandLine: [
`$(engine.path)\\accoreconsole.exe ` +
`/i \"$(args[inputDwg].path)\" ` +
`/al \"$(appbundles[$DA_APP_BUNDLE_ID].path)\" ` +
`/s \"$(settings[script].path)\"`
],
parameters:
inputDwg:
description: "input .dwg",
localName: "input.dwg",
ondemand: false,
required: true,
verb: "get",
zip: false
,
result:
description: "result .json",
localName: "result.json",
ondemand: false,
required: false,
verb: "put",
zip: false
,
settings:
script: "(command \"EXTRACTGEOBIMDATA\")\n"
,
description: "GeoBIM Extract Data",
engine: DA_ENGINE,
appbundles: [
fullAppBundleId
],
isPublic: true
我注意到的第一件事是成功创建活动后的响应不包含isPublic
字段:
我不得不注意的第二件事是尝试针对该活动执行工作项会导致错误:
请注意,当使用相同的凭据运行时,活动和工作项运行良好。
【问题讨论】:
isPublic
是 DA V2 的功能,V3 中没有,需要与大家分享活动。这是新的工作流程,但我们默认允许 0 个公共共享。 forge.autodesk.com/en/docs/design-automation/v3/reference/http/…
谢谢伙计,那么你是如何在伪造应用程序之间创建共享的呢?我只是在那里看到一个 GET 端点?
【参考方案1】:
我们目前不允许人们创建公共活动。这是因为尚不清楚当事方如何建立必要的信任关系。听起来在您的场景中,共享将发生在同一个组织内。他们是否拥有相同的电子邮件域(例如 xyz@somecompany.com 将与 bla@somecompany.com 共享)?
【讨论】:
完全没有,我们希望我们可以部署一些公司活动和相关的捆绑包,我们的客户在运行我们的 Web 服务执行 DA 作业时可以利用这些包,同时提供他们自己的 Forge 凭据……这听起来像是实际上是个坏消息。 AppBundles 也一样吗?谢谢 是的,AppBuncles 也一样。同样,我们不允许这样做的原因是我们担心公共应用程序包/活动可能会伤害其用户。 今天的解决方法是,为您希望与之共享活动/应用程序包的每个客户创建一个别名,并通过设置接收器参数与单个客户共享它伪造应用程序密钥/昵称。 您能否指出一些更具体的文档来说明如何实现这一目标?我得到了别名部分,但共享和设置接收器参数部分对我来说非常模糊。另外,根据我上面的问题,那么您实际上如何在伪造应用程序之间创建共享?我只是在那里看到一个 GET 端点:forge.autodesk.com/en/docs/design-automation/v3/reference/http/…。谢谢。【参考方案2】:Design Automation V3 允许您使用单独的别名与特定的 Forge 应用共享 Activity 或 AppBundle。
如果您在为活动和 AppBundle 创建别名时查看文档,可以在名为“receiver”的请求正文中设置一个可选参数。如果您要共享的 Forge 应用在 Design Automation 中有一个设置,您可以指定一个 Forge 应用客户端 ID 或昵称。
请注意,如果您要设置为接收者的 Forge 应用使用昵称,则必须使用该昵称而不是应用客户端 ID。
https://forge.autodesk.com/en/docs/design-automation/v3/reference/http/activities-id-aliases-POST/ https://forge.autodesk.com/en/docs/design-automation/v3/reference/http/appbundles-id-aliases-POST/
【讨论】:
请注意,今天我们只支持为每个别名指定一个接收者 谢谢,Forge 文档应该得到更多的爱和清晰:我需要某种程度来理解“receiver:string - 与之共享别名的用户”。实际上的意思是“你想设置为接收者的Forge应用。如果它使用昵称,则必须使用该昵称,否则使用应用clientId。”以上是关于如何创建公共 Forge 设计自动化活动和包?的主要内容,如果未能解决你的问题,请参考以下文章
Autodesk Forge 设计自动化 - Inventor - failedInstructions (FailedMissingOutput)
在 Forge Viewer 中显示设计自动化 API 的输出