2015-09-30 7 views
0

Так что я пытаюсь контролировать, работает ли мой скрипт бесконечного цикла filemaker. Что было бы лучше всего?Попытка контролировать filemaker

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

Мое текущее решение включает в себя проверку пользовательского интерфейса для под-окна «Сценарий приостановлено» в клиенте Filemaker, который является своего рода flaky. Есть ли лучшие способы проверки. Filemaker, похоже, не поддерживает такую ​​проверку.

Filemaker версия: 14,0 Pro

EDIT: Может быть, я должен был быть более ясным. Я пытаюсь контролировать это через инструменты мониторинга, такие как zabbix. Таким образом, у меня есть внешний (powershell) скрипт, который проверяет filemaker.

+0

Более подробную информацию, вероятно, помогут. Это скрипт FileMaker, сценарий оболочки, сценарий плагина? «Фоновый сценарий» не является стандартным термином в сообществе FileMaker. Я предполагаю, что вы имеете в виду сценарий оболочки, который выполняется из сценария FileMaker, но должен быть уверен, прежде чем предлагать какие-либо советы. – Chuck

+0

в основном обычный скрипт filemaker, который работает бесконечно. следует ли вообще удалить формулировку? – mirage

+0

Я бы отредактировал вопрос, чтобы понять, что это скрипт FileMaker с бесконечным циклом, но этот факт также заставляет меня спросить, почему вы используете скрипт с бесконечным циклом. :) В зависимости от версии FileMaker, которую вы используете, есть и другие доступные инструменты, которые могут выполнять то, для чего потребовались сценарии бесконечного цикла. – Chuck

ответ

1

Если вы настаиваете на продолжение использования бесконечно захвата петли сценария, вот как я бы указать, что скрипт работает в FileMaker 13+:

  • Каждый раз, когда цикл выполняется, обновлять глобальную переменный ток временная метка (Set Variable [ $$_LAST_LOOP_EXECUTED ; Get (CurrentTimestamp) ]).
  • Добавить текст в макет. Текст - это то, что будет показано, когда цикл скрипта выполняется в последнее время.
  • Отредактируйте расчёт «Скрыть объект когда» (находится на вкладке «Данные» на панели «Информация»), чтобы прочитать примерно следующее: Get (CurrentTimestamp) - $$_LAST_LOOP_EXECUTED > 60. Предполагается, что если глобальная переменная не была обновлена ​​в течение минувшей минуты, сценарий будет не.

Если вы не используете хотя бы FileMaker 13, выполнение этого будет немного сложнее, но возможно с условным форматированием.

Все это является обходным путем к тому, что, как только вы запускаете скрипт, поскольку он предназначен для работы всегда, вы можете остановить его, нажав кнопку «Отмена», когда он приостановлен, что означает, что скрипт не может выполнить любая очистка, такая как очистка глобальной переменной. Я не пробовал технику, описанную выше, но я предполагаю, что вычисление скрытого атрибута не будет постоянно обновляться. Вероятно, он будет обновляться только тогда, когда макет будет перерисован, например, переход на другую запись.

Теперь, сказав это, есть лучшие способы заставить скрипт выполнять периодически.

  • FileMaker Server может выполнять сценарий по расписанию. Я фактически сам использую эту функцию для импорта данных из текстовых файлов, содержащих данные, загруженные из PostgreSQL.
  • FileMaker 10+ имеет этап сценария, называемый Install OnTimer Script, который выполнит скрипт через указанное количество секунд.

Этот тип сценария лучше всего размещается на сервере, но это может быть невозможно из-за адаптера Actual. Если это так, то я бы предложил исследовать шаг Install OnTimer Script.

+0

Мы попытались импортировать по расписанию, однако мы столкнулись с случайными проблемами с импортом ODBC, сценарий запускается из Filemaker Pro, но не запускался в виде расписания. – mirage

+0

У меня были ситуации, когда мне нужно было что-то делать периодически, но это не могло быть сделано с FileMaker Server. В таких случаях я сохранил копию FileMaker Pro на том же компьютере, что и сервер, и использовал «Install OnTimer Script» для его периодического выполнения. Я бы предложил попробовать это, что означало бы, что вы * могли бы * сценарий очистить глобальную переменную (и обновить экран). Однако, если вы хотите узнать, работает ли скрипт при использовании * другого * клиента FileMaker, вам понадобятся более сложные методы, поскольку глобальные переменные являются специфичными для клиента. – Chuck

+0

Итак, если я правильно понял, «Install OnTimer Script» мне нужно запустить его вручную, с клиента, один раз? Затем он просто подбирает расписание. – mirage