Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Event Type

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

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인자로 매개변수로 갖는다.

Code Block
@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}

Code Block
[
  {
    "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
          }
        ]
      }
    ]
  }
]

...