type : event

Event Type

ICE 내부 특정 NodeType에 정의된 Event를 실행하기 위한 API 유형으로, 다음과 같은 추가적인 항목을 정의한다.

pid

valueType

description

pid

valueType

description

tid

REFERENCE

대상 Node Type

event

REFERENCE

대상 노드타입의 실행하기 위한 Event 정의

 

아래는 좋아요 카운트 증가하는 "actionType": "service" 인 EVENT API 구현 사례이다.

  • Service Class 추가

    • location : net/ion/ice/services

  • @Service 어노테이션 추가

    • @Service("snackService")

  • Event에 사용할 메소드는 반드시 ExecuteContext 를 매개변수로 갖는다.

@Service("snackService") public class SnackService { public void increaseCount(ExecuteContext context) { Node node = context.getNode(); node.put("thumbsUp", context.getNode().getIntValue("thumbsUp") + 1); NodeUtils.getNodeService().executeNodeByNode(node, EventService.UPDATE, context.getEvent()); } }
  • snack Schema에 event 추가

    • "actionBody": "snackService.increaseCount" : 작성규칙 {service annotation name}.{method}

[ { "typeId": "nodeType", "tid": "snack", "parentId": "test", "repositoryType": "node", "typeName": "간식", "standaloneIndex": false, "microservice": "test", "propertyTypes": [ { "pid": "id", "name": "ID", "valueType": "STRING", "idable": true, "indexable": true, "labelable": false, "required": true, "idType": "", "orderNo": 10 }, { "pid": "name", "name": "Name", "valueType": "STRING", "idable": false, "indexable": true, "analyzer": "simple", "labelable": true, "required": true, "orderNo": 20 }, { "pid": "vendor", "name": "vendor", "valueType": "STRING", "idable": false, "indexable": true, "analyzer": "code ", "labelable": false, "required": false, "orderNo": 30 }, { "pid": "tags", "name": "tags", "valueType": "STRING", "idable": false, "indexable": true, "analyzer": "code", "labelable": false, "required": false, "orderNo": 40 }, { "pid": "thumbsUp", "name": "따봉", "valueType": "INT", "indexable": true, "defaultValue": 0, "orderNo": 50 } ], "events": [ { "event": "thumbsUpEvent", "name": "thumbs Up Event", "label": "thumbs Up Event", "noneExecute": false, "eventActions": [ { "action": "increaseCount", "actionName": "increaseCount", "actionType": "service", "actionBody": "snackService.increaseCount", "order": 1 } ] } ] } ]
  • apiConfig "type": "event" 인 API 작성

{ "typeId": "api", "category": "snack", "apiId": "thumbsUp", "apiName": "좋아요", "method": "GET", "parameters": [ { "parameter": "id", "name": "ID", "valueType": "STRING", "required": true } ], "statistic": true, "aggregation": false, "root": { "configId": "root", "tid": "snack", "type": "event", "allowParams": false, "orderNo": 1, "event": "thumbsUpEvent" } }
  • API 결과