簡體   English   中英

收到結果時如何獲取 WorkItem Id?

[英]How to get WorkItem Id when receiving the result?

假設我使用以下代碼將工作項發布到 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 將使用 output 文件調用我的 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 相關。

答案

設計自動化允許您在 output 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)"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM