Разработка действия

Просто разработать действие Automator. Поскольку действие является загружаемым пакетом, его объем ограничивается, и следовательно объем кода, который необходимо записать, ограничивается. Apple также упрощает путь к разработке действия из-за всех ресурсов, которые это помещает в вашем распоряжении. При создании проекта действия среда разработки XCode предоставляет Вам все необходимые файлы и настройки для создания действия. Просто необходимо выполнить определенные шаги — описанный в этом документе — для достижения конечного продукта.

Шаги для разработки действия должны не обязательно произойти в порядке, данном ниже. Например, можно записать описание действия в любое время, и можно указать свойства Automator в любое время.

Создание проекта действия Automator

Для создания проекта действия Automator запустите приложение XCode и выберите New Project из Меню Файла. Из первого окна Нового Помощника проектного менеджера выберите один из двух проектов действия Automator, в зависимости от Вашего выбора языка:

Рисунок 1 показывает выбор Какао действие Automator.

Рисунок 1  Выбор тип проекта Cocoa Automator Action в XCode
Choosing a Cocoa Automator Action project type in Xcode

Завершитесь остающееся окно Нового Помощника проектного менеджера, как обычно — указывают расположение файловой системы для проекта и вводят название проекта. Когда Вы заканчиваете, окно Xcode, подобное тому на рисунке 2, выведено на экран.

  Шаблонные файлы рисунка 2 для Какао проект Действия Automator
Template files for a Cocoa Automator Action projectTemplate files for a Cocoa Automator Action project

Вы станете более знакомыми со многими файлами и обертками файла, выведенными на экран здесь в следующих разделах. Но вот сводка более значительных элементов:

Построение пользовательского интерфейса

В браузере проекта XCode дважды щелкнуть main.nib открыть файл пера действия в Интерфейсном Разработчике. Файл пера содержит Владельца обычного Файла и Первые экземпляры Респондента, но он также содержит два других элемента, определенные для действий:

Несколько объектов и отношений в main.nib уже инициализируются для Вас. Например, Владелец Файла установлен в области Custom Class окна Info быть экземпляром класса AMBundleAction (как показано на рисунке 3). (Если Ваш проект для действия AppleScript Automator, Владелец Файла установлен вместо этого в AMAppleScriptAction.) С Владельцем Файла, все еще выбранным при выборе области Connections окна Info, Вы будете видеть что view выход объекта AMAction был подключен к представлению действия.

  Владелец Файла рисунка 3 установил в экземпляр AMBundleAction
FIle’s Owner set to an instance of AMBundleActionFIle’s Owner set to an instance of AMBundleAction

Создайте пользовательский интерфейс из действия, как Вы были бы для любого представления в Интерфейсном Разработчике. Однако имейте в виду, что действия, потому что они совместно используют пространство в потоке операций Automator с другими действиями, должны быть компактными, даже минимальными. Поместите только те средства управления, текстовые поля и другие объекты пользовательского интерфейса, которые абсолютно необходимы. И попытайтесь быть консервативными в Вашем использовании вертикального пространства; например, предпочтите всплывающие меню по переключателям для того, чтобы подарить пользователям выбор среди многократных опций. Для больше на инструкциях пользовательского интерфейса для действий, посмотрите Пользовательский интерфейс Действия в Руководстве по проектированию для Действий.

Важная функция действий Automator является Шоу, Когда Выполнено. Эта функция позволяет пользователям потоков операций (в отличие от писателей потоков операций) установить параметры действий, когда они выполняют поток операций как приложение. По умолчанию действия имеют кнопку раскрытия Опций в своем нижнем левом углу, когда включено, представляющем дополнительные средства управления; эти средства управления позволяют писателю потока операций выбирать части представления действия, представленные пользователям, когда выполняется поток операций. Разработчики могут настроить функцию Show When Run; посмотрите Показывают, Когда Выполнено для подробных данных.

Используя палитру какао-Automator

Среда разработки Automator включает палитру Interface Builder с объектами пользовательского интерфейса, разработанными для действий. Эту палитру называют Какао-Automator. Для загрузки этой палитры выберите область Palettes в Интерфейсных предпочтениях Разработчика, нажмите Add и выбор AMPalette.palette в /Developer/Extras/Palettes.

Палитра Cocoa-Automator (см. рисунок 4) содержит три специально реализованных всплывающих меню для представления легко конфигурируемых списков приложений, каталогов и файлов пользователям.

  Палитра Figure 4 Cocoa-Automator
Cocoa-Automator palette

Эти списки обеспечивают доступ к стандарту или часто получали доступ к приложениям, папкам и файлам в файловой системе. Например, всплывающее меню Каталогов в действии смотрит что-то как пример на рисунке 5.

Рисунок 5  всплывающее меню Каталогов в действии
The Directories pop-up menu in an action

Можно также сконфигурировать всплывающие меню так, чтобы пользователи могли определить местоположение элементов кроме стандартных в списке, или (в случае всплывающего меню Каталогов) создают новые элементы.

Для размещения одного из этих всплывающих меню просто перетащите его от палитры до представления действия. Затем для конфигурирования всплывающего меню выберите Show Inspector из меню Tools и выберите область Attributes (рисунок 6). Область Attributes Интерфейсного Разработчика позволяет Вам конфигурировать объект пользовательского интерфейса в различных способах.

  Инспектор Атрибутов рисунка 6 для объектов палитры Cocoa-Automator
Attributes inspector for Cocoa-Automator palette objects

Для всплывающих меню Automator (объекты AMPathPopUpButton), специальные опции пути являются следующим:

Типы

Позволяет пользователям выбирать или приложения, каталоги, или файлы или любую комбинацию трех типов. Например, если Вы проверяете Каталоги и Файлы, пользователи в состоянии выбрать и каталоги и файлы от всплывающего меню.

Выбрать

Выбор New Paths добавляет Новый элемент у основания всплывающего меню. Во всплывающем меню Каталогов это позволяет пользователям создавать новый каталог с помощью браузера файловой системы; Новый элемент не появляется в других видах всплывающих меню.

Выбор Existing Paths добавляет Другой элемент у основания всплывающего меню. Во всех типах всплывающего меню этот элемент позволяет пользователям выбирать что-либо в браузере файловой системы.

Дисплей

Когда или Новая или Открытая позиция выбрана и Выбрать Panel, поскольку опция Sheet выбрана, действие выводит на экран браузер файловой системы как окно рабочего листа модальный лист, а не как модальное приложением диалоговое окно.

Показать

Когда опция Standard Paths выбрана, всплывающее меню имеет следующие элементы, в зависимости от своего типа:

  • Если это - всплывающее меню Каталогов, стандартные расположения такой как Домой, Рабочий стол, Фильмы, и Изображения включены.

  • Если это - всплывающее меню Приложений, список элементов включает все приложения в /Applications.

  • Если это - всплывающее меню Файлов, ничто не происходит.

Когда опция Path Components выбрана, полный путь текущего выбранного элемента выведен на экран.

То, когда опция Placeholder выбрана, независимо от того, что Вы входите в текстовое поле Placeholder непосредственно под опцией, выведено на экран как первый раскрывающийся элемент. Этот заполнитель обычно является строкой те, которые “Выбирают приложение” или “Никакой выбор”.

Прежде чем всплывающее меню AMPathPopUpButton может должным образом функционировать в представлении действия, необходимо установить привязку между всплывающим меню и свойством параметров действия. Чтобы сделать это, укажите ключ для свойства как атрибут экземпляра Параметров (см. Привязку Установления для процедуры). Наконец, выберите всплывающее меню в пользовательском интерфейсе и затем укажите ключ в области Bindings инспектора, с помощью привязки пути; посмотрите рисунок 7 для примера.

Рисунок 7  привязка пути для всплывающего меню
The path binding for the pop-up menu

Установление привязки

После построения представления действия установите привязку между объектами в пользовательском интерфейсе и объекте действия. Привязка является технологией Какао, концептуально базируемой в парадигме Контроллера представления Модели. В Контроллере представления Модели объекты в хорошо разработанной программе принимают одну из трех ролей: просмотрите возражает, что существующие данные и получают ввод данных пользователем; объекты модели, содержащие данные и воздействующие на те данные; и контроллер возражает, что добиваются передачи данных между представлением и объектами модели. Механизм привязки автоматически синхронизирует обмен данными между представлением и объектами модели, сокращая потребность в пользовательских объектах контроллера и всем коде «связующего звена», который они обычно влекут за собой. Действия Automator используют привязку для передавания данных между объектами в представлении действия и словаре параметров (или запись), что все действия должны записать пользователей настроек, указывают для действия.

Шаблоны проекта для действий Automator предварительно сконфигурированы для использования привязки вместо целевого действия и механизмов выхода (для Основанных на какао действий) или обработчики событий, указанные в области AppleScript Интерфейсного Разработчика для находящихся в AppleScript действий. Если Вы предпочитаете, можно использовать эти механизмы вместе с параметрами обновления “платформы Automator” API для обновления параметров действия вручную. Для получения информации об этом подходе посмотрите Обновление Несвязанные Параметры (для находящихся в AppleScript действий) или Обновление Параметров Действия (для действий Objective C).

Следующие шаги суммируют то, что необходимо сделать для установления привязки действия в Интерфейсном Разработчике. Для полного описания технологии привязки Какао посмотрите, что Привязка Какао Программирует Темы.

  1. Выберите экземпляр Параметров в окне файла пера и выберите область Attributes окна Info. В маркированных «Ключах» таблицы добавляют ключи для каждого объекта пользовательского интерфейса, установка которого или оценивает Вас, должен получить доступ. Посмотрите рисунок 8 для примера.

    Рисунок 8  , Добавляющий ключи экземпляра Параметров (NSObjectController)
    Adding the keys of the Parameters instance (NSObjectController)Adding the keys of the Parameters instance (NSObjectController)

    Ключи, которые Вы указываете здесь, используются в другом месте в действии для идентификации средств управления действия. Необходимо поэтому использовать те же строки, которые Вы использовали для обязательных ключей в следующих местах в проекте действия:

    • Как ключи для AMDefaultParameters свойство Automator. ( AMDefaultParameters свойство указывает начальные установки действия; посмотрите Указание Свойств Действия и Ссылки Свойства Действия Automator для подробных данных.) Соответствие AMDefaultParameters запись должна быть добавлена для каждого ключа, используемого с привязкой.

    • Как имена переменных экземпляра выхода и методов доступа в действиях Objective C

    • Поскольку ключи к записи параметров передали в находящееся в AppleScript действие в on run обработчик; посмотрите Структуру на Обработчике команды выполнения для получения дополнительной информации.

    • Поскольку переменные окружения установлены для действия сценария оболочки; посмотрите Действия Сценария оболочки Создания для подробных данных.

  2. С экземпляром Параметров, все еще выбранным, выберите область Bindings окна Info и разверните подобласть «contentObject». Установите, “Связывают, чтобы” открыть элемент Владельцу Файла и войти parameters в поле «Model Key Path».

    Ключевой путь параметров относится к parameters свойство, определенное классом AMBundleAction — т.е. словарь или запись, используемая для получения пользователей настроек, делает в представлении действия.

  3. Для каждого объекта пользовательского интерфейса действия установите привязку с надлежащим ключом параметров. Например, рисунок 9 показывает привязку для всплывающего меню.

    Рисунок 9  , Устанавливающий привязку для всплывающего меню
    Establishing a binding for a pop-up menu

    Привязка варьируется типом объекта пользовательского интерфейса. Например, всплывающие меню обычно отделываются от индекса элемента (selectedIndex), флажки имеют булевскую переменную value, и текстовые поля имеют строку value.

Когда Вы закончены с пользовательским интерфейсом действия, сохранили файл пера и возвращаетесь к проекту XCode.

Указание свойств действия

Приложение Automator использует специальные свойства в информационном списке свойств действия (Info.plist) для получения различных данных, этому нужно для представления и обработки действия. Эта информация включает:

Свойства Automator имеют префиксный «AM». Шаблон проекта для действий включает почти все свойства, в которых Вы нуждаетесь (или, возможно, нуждается) указать. Как показано на рисунке 10, шаблон обеспечивает полезные комментарии как заполнителей для значений ключа. В создании действия необходимо предоставить действительные значения для этих ключей. Ссылка Свойства Действия Automator описывает свойства Automator, включая их цель, типы значения и представительные значения.

Поскольку значения некоторых свойств Automator появляются в пользовательском интерфейсе, необходимо включать переводы их в Infoplist.strings файл для каждой локализации действия Вы обеспечиваете. Посмотрите Интернационализацию Действия для получения дополнительной информации.

В дополнение к свойствам, которые являются определенными для Automator, действие Info.plist файл содержит свойства, которые характерны для всех пакетов, включая пакеты действия, а также приложения. Значения большинства этих универсальных свойств пакета предоставляются автоматически при создании проекта. Однако необходимо указать значение CFBundleIdentifier свойство. Automator использует это свойство для нахождения действия и его ресурсов. Идентификатор должен быть уникальным, и должен использовать стандартный формат:

com.CompanyName.Automator.ActionIdentifier

Например, если именем Вашей компании является Высшая точка, и Ваше действие называют, Находят Фу Итэмса, подходящее CFBundleIdentifier был бы com.Acme.Automator.FindFooItems.

Шаблоны проекта Automator задают два свойства, AMName и часть идентификатора действия CFBundleIdentifier, с текстом заполнителя. При создании проекта именем проекта заменяют заполнителей. (Если название проекта содержит пробелы, XCode заменяет символом подчеркивания пробелы в идентификаторе пакета.)

  Часть рисунка 10 шаблона для свойств Automator в Info.plist
Part of the template for the Automator properties in Info.plistPart of the template for the Automator properties in Info.plist

Отредактировать Info.plist вручную в окне Xcode, просто дважды щелкните по имени файла в окне проекта. Если требуется всегда открыться Info.plist файл в различном редакторе для списков свойств, таких как Редактор Списка свойств приложение или BBEdit, использует окно Finder's Get Info для установки приложения по умолчанию для файлов с расширением .plist. Тогда в XCode, используйте команду Open with Finder контекстного меню. Однако предпочтительный инструмент для редактирования свойств Automator должен использовать встроенное подручное меню Automator, представленное в Xcode 2.1.

Используя подручное меню Automator

Можно отредактировать информационный список свойств как текстовый файл в XCode. Просто дважды щелкните Info.plist файл в окне проекта и файл откроются в отдельном окне или области. Однако синтаксические ошибки могут часто происходить при редактировании списка свойств вручную. Вместо этого можно использовать подручное меню Automator, делающее ввод значений свойств проще и менее восприимчивым к ошибке.

Этот инспектор встроен в XCode для всех типов проектов Automator. Для доступа к инспектору сделайте следующее:

  1. Выберите Edit Active Target 'Target' из Меню проектов.

  2. Щелкните по вкладке Properties.

Более низкая часть инспектора, обычно резервирующегося для указания типов документов, здесь используется для Automator-специфичных свойств. Инспектор повреждает свойства в логические наборы; первый набор показывает свойства General (рисунок 11).

Рисунок 11  подручное меню Automator — свойства General
Automator property inspector—General properties

В представлении инспектора, таком как то на рисунке 11, дважды щелкните по ячейке под Значением для открытия ячейки для ввода значения. Если, например, Вы хотите активировать опцию Show When Run для действия, щелкните по надлежащим флажкам.

Если Вы представите всплывающее меню Набора, то Вы будете видеть другие логические наборы свойств Automator. Рисунок 12 показывает набор для AMAccepts свойство (Ввод).

Рисунок 12  подручное меню Automator — Входные свойства
Automator property inspector—Input properties

Когда свойство является массивом, как с AMAccepts, щелкните по знаку «плюс» в левом нижнем углу инспектора для открытия нового поля для редактирования. Введите значение (в этом случае идентификатор типа). Для удаления элемента из массива выберите его и щелкните по знаку «минус».

Запись описания действия

Маленькая, но важная часть разработки действия пишет описание действия. Automator выводит на экран описание это его нижнее левое представление каждый раз, когда пользователь выбирает действие. Описание кратко описывает то, что действие делает и говорит пользователям что-либо еще, что они должны знать о действии. Рисунок 13 показывает то, на что похоже типичное описание.

Рисунок 13  демонстрационное описание действия
An sample action description

Поскольку описание вписывается в относительно небольшую площадь окна Automator, необходимо сделать его максимально кратким и кратким. Идеально пользователю не придется прокрутить представление описания для наблюдения всего текста.

Описание имеет несколько частей, каждая из которых Вы указываете через свойство Automator в информационном списке свойств пакета (Info.plist):

Значок описания, заголовок, сводка, ввод и разделы результата требуются или строго рекомендуются. Все упомянутые выше свойства, за исключением значка и заголовка, являются подсвойствами специфичного для описания AMDescription свойство. AMDescription пример в Перечислении 1 показывает подсвойства, указанные для Отправить описания Приветствия Дня рождения, изображенного на рисунке 13.

  Свойства Listing 1 AMDescription для Отправляют описание Поздравлений Дня рождения

    <key>AMDescription</key>
    <dict>
        <key>AMDInput</key>
        <string>Address Book entries from previous action.</string>
        <key>AMDOptions</key>
        <string>Birthday message. Choice of picture.
            Randomly chosen picture. </string>
        <key>AMDSummary</key>
        <string>This action sends an email birthday greeting, with a
            picture, to each of the Address Book entries.</string>
    </dict>

Посмотрите Ключи Свойства и Значения для получения дополнительной информации о AMDescription ключи и значения.

Запись кода действия

Самый важный шаг в создании действия пишет Objective C или код AppleScript (или Objective C и код AppleScript), который реализует логику для Вашего действия. Шаблон проекта для действий Automator дает Вам шаблонные файлы для реализации действия:

Шаблонные файлы заполняют как можно больше требуемой структуры. Заголовочный файл Objective C, например, имеет необходимый импорт платформы и @interface наследование показа объявления от AMBundleAction. Реализация Objective C включает нулевую реализацию метода, который все действия должны реализовать, runWithInput:fromAction:error: (см. рисунок 14). main.applescript файл, с другой стороны, имеет скелетную структуру для on run обработчик команды, который должны реализовать все находящиеся в AppleScript действия.

  Шаблон рисунка 14 для реализации действия Objective C
Template for an Objective-C action implementation

Посмотрите Реализацию Действия AppleScript и Реализацию Действия Objective C для требований, предложений и примеров, связанных с реализацией действия Automator. Для инструкций по реализации действий сценария оболочки посмотрите Запись Сценария.

Интернационализация действия

Большинство полируемых приложений, принесенных к функции рынка многократные локализации. Эти приложения не только включают локализации — т.е. переводы и другие специфичные для локали модификации текста, изображений и других ресурсов — но интернационализировались для создания тех локализаций сразу доступными. Интернационализация включает много методов, зависящих от “предпочтительные языки” пользовательская настройка и архитектура системы для доступа к ресурсам в пакетах. Загружаемые пакеты (которые, конечно, являются пакетами так же, как приложениями,) зависят от тех же механизмов для интернационализации.

Следующие разделы суммируют то, что необходимо сделать для интернационализации действий. Для полного изображения посмотрите Руководство по Интернационализации и Локализации для общего описания интернационализации и Руководство по Интернационализации и Локализации для обсуждения, которое является определенным для Какао.

Локализованные строки

Если Ваше действие программно генерирует строки, и Вы хотите выведенные на экран локализованные версии, необходимо интернационализировать программное обеспечение с помощью методов доступа, отличающихся для действий Objective C и основанных на сценарии действий.

И Objective C и действия AppleScript требуют, чтобы Вы создали для каждой локализации строковый файл, который является файлом с расширением .strings. (Стандартное, или имя по умолчанию для строкового файла Localizable.strings.) Каждая запись в строковом файле содержит ключ и значение; ключ является строкой на языке разработки, и значение является переведенной строкой. Запись может также иметь комментарий для помощи переводчикам. Используйте точку с запятой для завершения записи. Вот несколько примеров:

/* Title of alert panel which brings up a warning about
saving over the same document */
"Are you sure you want to overwrite the document?" =
“Souhaitez-vous vraiment écraser le document ?";
 
/* Encoding pop-up entry indicating automatic choice of encoding */
"Automatic" = "Automatique";
 
/* Button choice allowing user to cancel. */
"Cancel" = "Annuler";

Когда Вы завершили a Localizable.strings файл для локализации, необходимо интернационализировать его так же, как Вы были бы любой другой язык - или специфичный для локали файл ресурсов пакета. Посмотрите Файлы ресурсов Интернационализации для сводки.

Для кода Objective C используйте NSLocalizedStringмакрос или один из другого NSLocalizedString... макросы для запроса локализации, подходящей для текущей пользовательской настройки. Перечисление 2 дает пример, показывающий использование NSLocalizedString в сочетании с NSString stringWithFormat: метод.

Перечисление 2  Используя NSLocalizedString в коде Objective C

- (NSString *)displayName
{
    int cnt = [pdfView pageCount];
    NSString *name;
 
    if (cnt == 1) {
        NSString *format = NSLocalizedString(@"%@ (1 page)",
            @"Window title for a document with a single page");
        name = [NSString stringWithFormat:format, fileName];
    } else {
        NSString *format = NSLocalizedString(@"%@ (%d pages)",
            @"Window title for a document with multiple pages");
        name = [NSString stringWithFormat:format, fileName, cnt];
    }
 
    return name;
}

Поскольку AppleScript пишет сценарий команды, эквивалентной NSLocalizedString localized string. Один хороший подход должен иметь локальную подпрограмму, берущую строку для локализации в качестве параметра и использующую localized string команда на нем, как в Перечислении 3.

  Обработчик Сценария перечисления 3 для локализации строк

on localized_string(key_string)
return localized string key_string in bundle with identifier "com.apple.Automator.myAction"
end localized_string

В другом месте в main.applescript и в других сценариях для действия, вызовите эту подпрограмму, когда необходимо будет получить строку в текущей локализации:

    if the calendar_name is my localized_string("No Calendars") then        error my localized_string("The copy of iCal on this computer contains no calendars to clear.")

Локализация свойств Automator

Стандартный вариант строкового файла для проектов Infoplist.strings. В этом файле Вы присваиваете локализованные строки (т.е. переводы) к ключам, появляющимся в Info.plist файл. Для Automator это включает не только свойства верхнего уровня такой как AMName но подсвойства свойств Automator. Например, следующая выборка от Infoplist.strings файл для действия Изображений Обрезки:

AMName = "Crop Images";
ApplyButton = "Add";
IgnoreButton = "Don't Add";
Message = "This action will change the image files passed into it.  Would you like to add a Copy Files action so that the copies are changed and your originals are preserved?";

Пары ключ/значение в этом примере включают не только локализованное англичанами значение для AMName свойство, но локализованные строки для подсвойств AMWarning свойство.

Интернационализация файлов ресурсов

Необходимо интернационализировать любой файл в проекте действия, содержащем данные, которые являются определенными для языка или локали. Эти файлы включают:

  • Файлы пера

  • Файлы образа

  • Строковые файлы (Localizable.strings)

  • Infoplist.strings

Интернационализация файла ресурсов просто влечет за собой присвоение языка или локали к файлу. Когда Вы разрабатываете проект действия, XCode автоматически помещает ресурс в подкаталог локализации пакета Resources каталог. Подкаталоги локализации имеют расширение .lproj (например, French.lproj).

Для интернационализации файла ресурсов сделайте следующее:

  1. Выберите папку Resources в XCode.

  2. Добавьте файл к проекту (Проект> Добавляют Файлы).

  3. Выберите файл и выберите Get Info из Меню проектов.

  4. Нажмите Make File Localizable.

  5. Нажмите Add Localization и введите или выберите язык или локаль.

Тестирование, отлаживая и устанавливая действие

Проект действия автоматически устанавливается в XCode так, чтобы при выборе Команд выполнения или Команд отладки XCode запустил действие Automator и добавил действие к набору действий, загруженных Automator. Чтобы видеть, как это сделано, выберите Automator в Исполнимых программах умная группа и выберите Edit Active Executable из Меню проектов. Как Вы видите в области General инспектора, “Исполнимый путь” значение установлен в /Applications/Automator.app. Выберите область Arguments инспектора и отметьте что -action разовый запуском параметр был установлен в Ваше действие (рисунок 15).

Рисунок 15  , Устанавливающий параметр запуска за Automator
Setting the launch argument for Automator

Тестирование и отладка стратегий

Чтобы протестировать Ваше действие, создайте и выполнить проект действия (Сборка> Сборка и Выполнение). Поскольку Automator разрабатывает проект, который он выполняет amlint утилита в фазе сборки. amlint инструмент выполняет проверки целостности, чтобы удостовериться, что должным образом создается действие; например, это проверяет, что были установлены все требуемые свойства Automator. Это интегрирует свои предупреждающие сообщения с другими сообщениями в окне Xcode Build Results. Несмотря на то, что amlint не генерирует сообщения об ошибках (таким образом, останавливающий сборку), необходимо исследовать и решить все проблемы, о которых сообщают, перед созданием версии развертывания из действия. Узнать больше о amlint, см. страницу справочника для него (к которому можно получить доступ из Меню справки XCode).

Когда Automator запускается, необходимо создать поток операций, содержащий действие. Выполните поток операций и наблюдайте, как Ваше действие выполняет. Для получения лучших данных от тестирования рассмотрите следующие шаги:

  • Используйте действие Результатов Представления для наблюдения вывода предшествующих действий.

  • Используйте Диалоговое действие Подтверждения, чтобы приостановить или отменить выполнение потока операций.

  • Добавьте одно каждое из вышеупомянутых двух действий между каждым действием.

Если действие основывается на AppleScript, можно использовать Выполнение действие AppleScript для тестирования Вашего on run обработчик команды, поскольку Вы пишете его.

Если Ваше действие основывается на реализации Objective C, можно отладить действие так же, как Вы были бы любой другой двоичный файл Objective C. Просто установите точку останова в XCode. Когда Ваше действие будет выполнено в Automator, точка останова инициирует в gdb. Можно также отладить действия AppleScript с помощью специального графического отладчика, задающегося для проектов действия AppleScript. Этот отладчик смотрит и ведет себя очень как графический отладчик для gdb делает. Это останавливается в точках останова, выводит на экран переменные и позволяет Вам продвинуться через сценарий. Переменные включают глобальные переменные, локальные переменные и свойства. Рисунок 16 показывает отладчик AppleScript в действии.

Рисунок 16  отладчик AppleScript
The AppleScript debugger

Для отладки действий AppleScript можно также вставить log или display dialog операторы в коде. Если оператор журнала в приложении tell блок, используйте tell me to log выражение вместо простого log.

Установка действий

Когда Ваше действие будет полностью отлажено и протестировано, создайте версию развертывания пакета (использующий надлежащую оптимизацию). Тогда создайте пакет установки для действия (или добавьте действие к пакету установки своего приложения). Установщик должен скопировать действие в /Library/Automator или ~/Library/AutomatorВ зависимости от того, должен ли доступ к действию быть в масштабе всей системы или ограничен пользователем установки.

Если действие использует функции того приложения, вместо того, чтобы установить Ваше действие отдельно, можно поместить его в пакете приложения, особенно. Когда Automator ищет действия для отображения, это смотрит в зарегистрированных приложениях также в стандартных каталогах Automator. Преимущество упаковки Ваших действий в приложении состоит в том, что Вы не должны создавать отдельный пакет установки для установки действий. Для установки действий пользователи должны только перетащить приложение к стандартному расположению.

Пакеты действия должны быть сохранены в обертке приложения в Contents/Library/Automator. Таким образом, если Ваше действие MyAction.action и Ваше приложение MyApp.app, путь в приложении был бы:

MyApp.app/Contents/Library/Automator/MyAction.action

Можно или вручную скопировать действие в это расположение (после создания необходимых подкаталогов), или у Вас есть XCode, копируют его с помощью фазы сборки Файлов Копии. Если Вы копируете действие в комплект приложений, но приложение уже установлено в системе, необходимо заставить Launch Services распознавать, что приложение имеет новое содержание для регистрации (т.е. новое действие) путем изменения даты модификации приложения. Можно сделать это путем ввода touch команда в Терминальном приложении.

$> sudo touch /Applications/MyApp.app

Или можно переименовать приложение в Средстве поиска к чему-то еще, возвратить его к настоящему имени, и затем запустить приложение один раз.

Часто задаваемые вопросы об отладке действий Automator

Вопрос: Как я могу определить, какую версию действия Automator использует, если многократные версии моего приложения (возможно содержащий многократные версии действия) установлены (локально или в моей сети)?

Ответ: нет никакого способа указать, какая версия Вашего приложения Automator должен получить действия от того, если установлены многократные версии приложения. Однако существует несколько способов определить версию действия, фактически использующегося:

  • В OS X v10.5 при выборе действия в списке Действия Вы видите его версию в представлении описания. Вы можете также Щелчок управления, действие в потоке операций просматривает и выбирает Show in Finder для наблюдения, где действие расположено, так, чтобы можно было исследовать его непосредственно.

  • В OS X v10.4, Automator не показывает, что версия действия в описании просматривает или позволяет Вам показывать действие в Средстве поиска. Возможная работа вокруг должна удалить любые нежелательные действия, если та опция доступна Вам, так, чтобы только требуемая версия действия была доступна.

Вопрос: Как я могу просмотреть журнал или сообщения об ошибках?

Ответ: при разработке действия сценария оболочки и выходов действия с ненулевым кодом состояния, что-нибудь, во что действие записало stderr обнаружится в журнале Automator, как описано в Отладке и Тестировании Действий Сценария оболочки.

Если Вы разрабатываете действие AppleScript, вывод операторов AppleScript такой как log или tell me to log появитесь в Консольном журнале (не в журнале Automator).

Если Вы разрабатываете действие Какао, выведенное от NSLog операторы также появятся в Консольном журнале.