OData, Syslog 또는 DuckDB를 사용하여 FileMaker 스키마 변경 알림 처리(플러그인 API를 통해)

FileMaker Server v21.1 (2024)은 플러그인이 데이터베이스 스키마, 레이아웃, 사용자 정의 함수 또는 스크립트의 변경 사항에 대한 알림을 수신하는 기능을 도입했습니다. 알림 메시징은 JSON 형식으로 전달됩니다. 이러한 JSON 페이로드의 몇 가지 예와 플러그인이 외부 도구(Syslog, DuckDB 또는 OData)를 사용하여 작업을 처리하는 방법을 보여드리겠습니다.

FileMaker 플러그인 SDK는 이 기능의 핵심이므로 이러한 예제는 FileMaker 솔루션을 확장하는 무료 유틸리티 플러그인 인 bBox를 사용하는 것을 기반으로 합니다. macOS 및 Ubuntu Linux를 모두 지원하는 bBox에는 Python , JavaScript , PHP, Ruby , AppleScript, Bash/Zsh/sh, XPath 및 DuckDB와 함께 작동하는 기능이 있습니다. bBox 플러그인에는 220개 이상의 예제가 있는 데모 파일이 포함되어 있습니다.

FileMaker를 사용한 스키마 변경 알림

FileMaker Server v21.1(2024)에는 플러그인이 데이터베이스 스키마, 레이아웃, 사용자 정의 함수, 테마, 값 목록 또는 스크립트*의 변경 사항에 대한 알림을 수신할 수 있는 새로운 기능이 있습니다 . 이는 JSON 페이로드 형태로 제공됩니다. 플러그인인 bBox는 이러한 알림을 캡처하여 나중에 FileMaker 또는 다른 프로세스에서 처리하도록 보낼 수 있습니다.

* 간단히 스키마 + 레이아웃 + 스크립트 + 등을 합쳐서 “스키마”라고 부릅니다.

간단한 스크립트 변경에 대한 메시지의 예는 다음과 같습니다.

{
  "account" : "simon",
  "catalog" : "script",
  "file" : "bBox Plug-in Demo.fmp12",
  "id" : "165",
  "user" : "Simon Brown"
}
{
  "account" : "simon",
  "catalog" : "script",
  "file" : "bBox Plug-in Demo.fmp12",
  "id" : "<meta>",
  "user" : "Simon Brown"
}

첫 번째 메시지에서 변경된 스크립트의 ID를 받습니다. 그 다음에는 스크립트의 메타 데이터가 변경되었다는 후속 메시지가 나오는데, 아마도 수정 횟수가 변경되었기 때문일 것입니다.

알림 처리가 켜지면 해당 서버에서 호스팅되는 모든 파일에 대한 메시지를 받게 됩니다. 또한, 겉보기에 사소해 보이는 단일 변경 사항이 많은 알림을 트리거한다는 것을 금방 알게 될 것입니다. 예를 들어, 필드 이름을 변경하면 필드 관련 메시지뿐만 아니라 여러 레이아웃 카탈로그 메시지도 트리거됩니다. 이는 FM이 수정된 필드에 대한 필드 참조를 수정하기 때문입니다.

스키마 메시지 처리가 다음 프로토타입을 갖는 스크립트 단계로 구성됩니다.

bBox Schema Notifications [ Type: (DuckDB, OData, Syslog) PathOrURL: "POSIX file path or URL" Script Name: "script name" Credentials: "user:password" ]

다음 세 가지 방법으로 메시지를 받을 수 있습니다.

  1. 시스템로그
  2. 덕디비(DuckDB)
  3. OData(FileMaker 스크립트 실행)

알림을 위한 Syslog

Syslog는 기본 방법이며 구성하기 가장 쉬운데, 스크립트 단계의 마지막 세 매개변수는 무시됩니다. 그러나 결과를 구문 분석하려면 더 많은 작업이 필요할 수 있습니다. 나중에 log(macOS) 또는 journalctl(Ubuntu) 명령을 사용하여 syslog에서 메시지를 쿼리할 가능성이 높습니다.

다음은 macOS에서 bBox 관련 메시지(스키마 알림 포함)를 꼬리에 표시하는 예입니다.

log stream --predicate "sender == 'bBox'"

명령어 를 사용한 쿼리는 log매우 복잡할 수 있습니다. 시작으로, 여기서는 2024년 12월 11일의 5분 기간 동안의 모든 메시지를 대신 받습니다.

log show --predicate "sender == 'bBox'" --start "2024-12-11 10:20:00" --end "2024-12-11 10:25:00"

Ubuntu의 경우 journalctlmacOS 명령과 비슷한 기능이 있습니다 log. 간단한 사용법은 다음과 같습니다.

sudo journalctl -f -t bBox

FileMaker를 사용한 DuckDB

DuckDB도 또 다른 옵션입니다.

DuckDB는 SQLite와 비슷합니다(과거에 bBox가 지원했습니다). SQLite와 100% 겹치지는 않지만 DuckDB는 많은 교차 호환성을 제공하며 SQLite 데이터베이스 파일도 사용할 수 있습니다. 이 경우 bBox는 DuckDB를 사용하여 나중에 사용할 메시지를 빠르게 전달할 수 있습니다.

이 방법을 처음 선택하면 DuckDB 데이터베이스 파일을 만들기 위한 파일 경로를 지정하고 bBox는 다음 SQL을 실행하여 테이블을 설정합니다.

CREATE TABLE IF NOT EXISTS fm_schema_message (timestamp DATETIME DEFAULT CURRENT_TIMESTAMP, message TEXT);

나중에 값을 검색하려면 bBox_DuckDB 함수를 사용하여 데이터를 FileMaker로 가져올 수 있습니다. 그러나 fm_schema_message호출 전에 DuckDB 파일과 테이블을 먼저 초기화하면 bBox Schema Notifications데이터베이스 파일을 구성하여 기본 DuckDB 형식 대신 .csv 형식의 데이터로 값을 저장할 수 있습니다. 그런 다음 데이터를 FileMaker 테이블로 가져오거나 로그 집계 유틸리티로 처리하거나 원하는 다른 작업을 수행할 수 있습니다.

OData 메시지 알림

마지막으로 OData 기반 메시지 처리가 있습니다. 이 방법의 경우 메시지 데이터를 처리할 서버와 데이터베이스로 설정된 URL을 지정합니다. 수신 서버에서는 OData 액세스가 활성화되어야 하며, fmodata확장 권한이 활성화된 데이터베이스 파일의 계정에 대한 자격 증명과 JSON 메시지를 캡처하기 위해 호출할 수 있는 FileMaker 스크립트가 필요합니다.

설정 방법의 예는 다음과 같습니다.

Set Variable [ $baseURL ; Value: bBox_FM_API_URL("ODATA"; "localhost"; "bBox Plug-In Demo" ) ]
bBox Schema Notifications [ Type: OData ; PathOrURL: $baseURL ; Script Name: "store_schema_change" ; Credentials: "myuser:mypass" ]

저는 이 bBox_FM_API_URL함수를 사용하여 올바른 엔드포인트 URL을 계산했지만, 이는 필수 사항은 아닙니다. OData 스크립트 요청은 특수 문자가 있는 스크립트 이름과 함께 사용할 수 없으므로 스크립트 핸들러의 이름을 가능한 한 간단하게 유지해야 합니다.

FileMaker 핸들러 스크립트는 다음과 비슷한 작업을 수행하여 전송된 메시지를 추출합니다.

New Record/Request
Set Field [ MESSAGES::jsontext ; Base64Decode ( Get (ScriptParameter) )

FileMaker Server v21.1(2024) 이 데이터베이스 스키마, 레이아웃, 사용자 정의 함수 또는 스크립트의 변경 사항에 대한 알림을 수신하기 위한 플러그인을 지원하는 방법에 대한 세 가지 예가 있습니다 . 질문이 있거나 FileMaker 개발 및 통합 프로젝트를 도울 수 있는 방법에 대해 논의하려면 저희에게 연락해주세요 .

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top