XE Trigger 완전 정복하기 1편

Study4U 2014.08.03 21:02 조회 수 : 1154

라르게덴님이 XEUSER.ORG 에 게시한 글로서, 최근 XEUSER.ORG 가 문을 닫게되면서 자료 보관을 위해 구글 검색을 통해서 퍼온 글입니다.


들어가기전에

이번에 설명하게될 Trigger(트리거)라는 기능은 XE의 모듈제작 중에서도 상당히 활용도가 높고 다루기 어려운 기능 중 하나 입니다. 본 설명은 이 Trigger를 적극 활용하고 다룰 수 있도록 사용방법을 예를 들어가며 설명할 것이며, Trigger 기능 뿐만 아니라 Trigger를 사용할 수 없는 대상도 사용가능한 방법을 경험을 살리어 최대한 다양하게 소개드리겠습니다.



목차

Trigger란 무엇인가

그림1.jpg


그림1)

XE에서 사용하는 Trigger는 내가 요청한 함수가 동작하는 동안 또다른 함수를 동작시킬 수 있는 기능을 말합니다. 우리가 글을 등록하고 결과를 받는 과정속에서 그림1)과 같이 Trigger라는 기능으로 자신을(여기서는 insertDocument 함수를 말함) 참조하고 있는 다른 함수를 조회하여 존재할 경우 그 함수를 요청하게 됩니다.

Trigger를 사용함으로써 한번의 요청으로도 서로다른 모듈을 동작시킬 수 있으며, 새로운 기능이 필요할 경우 기존 프로그램을 수정하지 않아도 쉽게 새로운 기능을 추가하여 사용할 수 있습니다.

Trigger의 활용


그림1)에서처럼 한번의 호출로 여러 다른 함수를 호출하여 연계처리가 가능하지만 호출되는 함수가 서로 직접적으로 연결되어있지 않더라도 Trigger를 사용하게 되면 연쇄적인 수행도 할 수 있습니다.

그림2.jpg


그림2)

그림2)는 제가 일전에 제작했던 nmsXE라는 모듈에서 사용한 방식입니다. 이 모듈에서 사용한 방식을 설명드리면 Host라는 하나의 모듈을 삭제하게 되면 그 하위에 있는 자식을 삭제하며 그 자식이 호출되면 또 그 밑에 자식을 연쇄적으로 삭제하도록 Trigger로 연결되어있습니다. Mib라는 부분만 삭제하게 되면 그 밑에 이용되고 있는 Severity라는 정보가 삭제됩니다.

이 처럼 Trigger를 잘만 활용하면 기존에 사용되는 방식을 고치거나 새로 만들지 않고도 쉽게 추가하여 사용할 수 있고 확장성 높은 모듈을 제작할 수 있습니다.

Trigger의 종류


Trigger는 크게 before, after 두가지의 경우로 나뉩니다. before는 함수의 수행과정 중 함수 자체의 수행내용을 진행하기 전에 다른 함수를 호출하여 사용할 수 있도록 해주며, after는 함수의 수행이 모두 끝난 뒤 다른 함수를 호출하여 사용하도록 하는데 사용됩니다.

이 둘은 실제로 의미적인 부분으로 나뉠 뿐 모듈을 제작하실때는 제작자가 원하는 위치에서 수행시킬 수 있습니다.

그림3.jpg


그림3)

사용가능한 Trigger


XE에는 다른 모듈과 확장이 가능하도록 여러곳에 Trigger를 선언하고 있습니다. 이러한 선언을 통해 새로운 모듈을 개발하실때 기존의 프로그램을 활용함으로써 많은 양의 프로그래밍을 직접 할 필요가 없어지고 쉽게 새로운 모듈을 제작하실 수 있습니다.

그림4.jpg


그림4)

1편 마무리


1편에서는 간략하게 Trigger에 대해서 설명해보았습니다. Trigger는 XE의 핵심 기능 중 하나이기 때문에 앞으로 모듈을 제작하실 때 기존에 만들어진 Trigger를 이용하는것만이 아닌 직접 Trigger를 만들어서 잘 활용만 하신다면 자신의 모듈 또한 또다른 누군가가 사용해주는 좋은 모듈이 되지 않을까 하는 마음가져봅니다.

2편에서는 실제로 Trigger의 기능과 활용하는 방법을 소개합니다.