Autodesk Forge Design Automation - Inventor - failedInstructions (FailedMissingOutput) - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь использовать API WorkItems для извлечения ключевых параметров детали в текстовый файл. Рабочий элемент завершается ошибкой с FailedMissingOutput [KeyParameters.txt], который является файлом, который мой плагин создает в рабочей папке. Локальная отладка файла успешно создана.

Журнал: Log

Код надстройки довольно прост:

 public void RunWithArguments(Document doc, NameValueMap map)
    {
        LogTrace("Processing " + doc.FullFileName);
        LogInputData(doc, map);

        try
        {

            var DocDir = System.IO.Path.GetDirectoryName(doc.FullFileName);
            var ParametersOutputFileName = System.IO.Path.Combine(DocDir, "KeyParameters.txt");

            if (doc.DocumentType == DocumentTypeEnum.kPartDocumentObject)
            {
                using (new HeartBeat())
                {
                    // TODO: handle the Inventor part here

                    PartDocument PartDoc = (PartDocument)doc;
                    ExtractKeyParams(PartDoc.ComponentDefinition.Parameters, ParametersOutputFileName);

                }
            }
            else if (doc.DocumentType == DocumentTypeEnum.kAssemblyDocumentObject) // Assembly.
            {
                using (new HeartBeat())
                {
                    // TODO: handle the Inventor assembly here

                    AssemblyDocument AssyDoc = (AssemblyDocument)doc;
                    ExtractKeyParams(AssyDoc.ComponentDefinition.Parameters, ParametersOutputFileName);
                }
            }
        }
        catch (Exception e)
        {
            LogError("Processing failed. " + e.ToString());
        }
    }

    public void ExtractKeyParams(Parameters Params, string OutputFileName)

    {
        List<string> ParamList = new List<string>();
        foreach (Parameter Param in Params)
        {
            if (Param.IsKey)
            {
                ParamList.Add(Param.Name);
            }
        }

        string[] OutputParams = ParamList.ToArray();
        System.IO.File.AppendAllLines(OutputFileName, OutputParams);

    }

Параметры деятельности .. .

    private static Dictionary<string, Parameter> GetActivityParams()
    {
        return new Dictionary<string, Parameter>
                {
                    {
                        Constants.Parameters.InventorDoc,
                        new Parameter
                        {
                            Verb = Verb.Get,
                            Description = "File to process"
                        }
                    },
                    {
                        "OutputParams",
                        new Parameter
                        {
                            Verb = Verb.Put,
                            LocalName = "KeyParameters.txt",
                            Description = "Key Parameters Output",
                            Ondemand = false,
                            Required = false
                        }
                    }
                };
    }

..... И аргументы рабочего элемента (со снятыми токеном и идентификаторами) подписанный ресурс является ресурсом фальшивой корзины, срок действия которого истекает через 60 минут, поэтому проблема не должна возникать,

private static Dictionary<string, IArgument> GetWorkItemArgs()
    {

        Dictionary<string, string> Header = new Dictionary<string, string>();
        Header.Add("Authorization", "Bearer <ACCESS_TOKEN>");

        Dictionary<string, string> Header2 = new Dictionary<string, string>();
        Header2.Add("Authorization", "Bearer <ACCESS_TOKEN>");
         Header2.Add("Content-type", "application/octet-stream");

        return new Dictionary<string, IArgument>
                {
                    {
                        Constants.Parameters.InventorDoc,
                        new XrefTreeArgument
                        {
                            Url = "https://developer.api.autodesk.com/oss/v2/buckets/<BUCKET_KEY>/objects/box.ipt",
                            Headers = Header
                        }
                    },
                    {
                        "OutputParams",
                        new XrefTreeArgument
                        {
                            Verb = Verb.Put,
                            Url = "https://developer.api.autodesk.com/oss/v2/signedresources/<SIGNED_RESOURCE_ID>?region=US",
                            Headers = Header2
                        }
                    }
                };
    }

Я не могу понять, почему файл KeyParameters.txt не генерируется моим дополнением, но, глядя на журнал, кажется, что это так, и, возможно, проблема заключается в загрузке его на подписанный ресурс, мой токен имеет все необходимые области действия.

Ответы [ 2 ]

2 голосов
/ 07 января 2020

Файл KeyParameters.txt не создается, поскольку ваша активность вызывает эту функцию Run(Document doc). Это можно увидеть в вашем журнале, проверьте эту строку:

InventorCoreConsole.exe Information: 0 : Run called with box.ipt

Теперь просто попробуйте переместить ваш код в функцию Выполнить (Document do c).

Функция RunWithArguments(Document doc, NameValueMap map) вызывается в случае, если у вас есть какие-либо аргументы в командной строке в вашем Activity. https://forge.autodesk.com/en/docs/design-automation/v3/developers_guide/field-guide/#command -линий

0 голосов
/ 07 января 2020

Из сообщения об ошибке кажется, что ваш плагин либо не генерирует файл "KeyParameters.txt", либо генерирует его не в том месте. Возможно ли, что ваш код никогда не введет какой-либо оператор if или он попадет в оператор catch без создания файла txt? Вы можете скачать отчет, используя reportUrl, там может быть больше информации. Возможно, вы также сможете добавить больше регистрации, чтобы помочь вам понять, что происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...