【问题标题】:How to get WorkItem Id when receiving the result?收到结果时如何获取 WorkItem Id?
【发布时间】:2022-01-20 05:58:55
【问题描述】:

假设我使用以下代码将工作项发布到 Revit 引擎

var response = await _flurlClient.Request("https://developer.api.autodesk.com/da/us-east/v3/workitems")
            .PostJsonAsync(new
            {
                activityId = "ActivityID",
                arguments = new
                {
                    rvtFile = new
                    {
                        url = storageUrl,
                        Headers = new
                        {
                            Authorization = $"Bearer {accessToken}"
                        }
                    },
                    result = new
                    {
                        verb = "post",
                        url = $"{baseUrl}/api/result"
                    }
                }
            })
            .ReceiveJson();

响应将包含此工作项的 ID。一旦工作项成功完成,Forge 就会使用输出文件调用我的 API 端点。我的端点实现如下:

[HttpPost("Result")]
public async Task<IActionResult> PostResults()
{
    await using (var fs = new FileStream("D://Test//l2.xlsx", FileMode.Create))
    {
        await Request.Body.CopyToAsync(fs);
    }

    return Ok();
}

文件已正确保存,但 我无法获取关联的工作项 ID(既不是查询参数也不是标题)。这会导致一个问题,假设我在收到文件时提交了两个工作项(A 和 B),如何判断它与工作项 A 或 B 相关。

【问题讨论】:

    标签: autodesk-forge autodesk-designautomation


    【解决方案1】:

    answer

    设计自动化允许您在输出 url 中指定变量 workitem.id。当您的工作项完成时,我们将调用此 url,并将变量扩展为该工作项的 id。此动态变量路径允许您确定与该回调关联的工作项 ID。

    最后,您需要实现Attribute Routing

    [HttpPost("Result/{workitemId}")]
    public async Task<IActionResult> PostResults(string workitemId)
    {
    }
    

    您可以通过以下方式发布工作项:

    result = new
    {
        verb = "post",
        url = $"{baseUrl}/api/result/$(workitem.id)"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 2020-12-09
      • 2015-01-15
      • 1970-01-01
      • 2017-03-14
      • 2012-04-08
      • 2018-07-29
      相关资源
      最近更新 更多