Post

디자이너 기초


오늘은 디자이너 사용법에 대해서 포스트 해 보겠습니다 디자이너는 Software AG에서 제공하는 Integration Server 개발을 위한 툴 입니다. 이클립스 플러그인형태로 제공되니 이클립스를 사용해보신 분들은 어렵지 않으실 것 같습니다.


디자이너를 실행하기 전 Integration Server가 먼저 실행 돼 있어야 합니다

이클립스는 작업폴더를 따로 지정해줘야 하는데 미리 작업하실 폴더를 만들어주세요

Server 실행이 기억나지 않으시는 분들은 이전 포스팅 설치포스팅에서 실행부분을 확인해주세요


디자이너 실행



디자이너 실행파일이 있는 디렉토리로 먼저 이동해야 합니다.

1
cd {SoftwareAg directory}/Designer/eclipse/eclipse.exe

cmd 에서 실행시키셔도 되고 해당 폴더로 찾아가시면 exlipse.exe 라는 실행파일을 실행하시면

Untitled


위와 같은 화면이 나오면 성공이며 조금 기다리시면 아래와 같은 화면이 나옵니다

작업폴더 지정 화면인데 처음 말씀드린거처럼 만드신 작업폴더를 선택해주시고

Launch를 눌러주시면 됩니다.

실행 할때마다 매번 작업폴더 묻는 창이 나오는게 싫으시면 체크박스를 체크 해주세요

Untitled


실행이 완료가 되면 아래와 같은 화면이 나오는데

이클립스에서는 여러가지 작업 관점 ( Perspective )을 지원합니다.

Integration Server 개발에는 아래 Service Development 관점에서 작업하신다고 생각하시면 되고

Debug 관점 , Java 관점 등 여러가지 개발 관점이 있으니 일단은 아래 화면처럼

Service Development를 먼저 알아볼 예정이니 Open the Service Development Perspective를 눌러주세요.

Untitled




서버 연결


Open the Service Development Perspective를 눌렀을 때 아래와 같이

경고메시지가 나오시는 분들도 있고 안나오시는 분들도 있을 것 같습니다

디자이너를 처음 실행하면 미리 연결 돼 있는 서버들에 커넥션을 시도하는것 같습니다

그 중 “localhost:5555”는 따로 설정하지 않았더라도 기본으로 지정 돼 있는것 같습니다

경고메시지가 나오는 분들은 서버 primary port 번호가 5555번이 아닌 분들은 연결이 되지않아서

커넥션 실패 경고 메시지가 나올 것입니다 바로 연결을 해볼 것이니 신경쓰지 않으셔도 됩니다

Untitled


서버를 연결하기 위해서는 아래 연결버튼같이 생긴 버튼을 눌러줍니다.



Untitled


혹시 Package Navigator 실수로 끄셨거나 안보이시는 분들은

Window → Preferences → Software AG → IntegrationServers 를 눌러주시면 아래와 동일하게

나올것 입니다 서버 연결을 할 수 있는 화면입니다.

아래 화면에서 5555번 포트가 Not connected 상태인데 제 IS 서버는 5556으로 열려있기 때문입니다

포트번호를 바꾸고 다시 연결을 해보기 위해 Edit 을 누르겠습니다.

연결된 서버가 아무것도 없고 비어있으신 분들 Add 를 눌러주시면 됩니다

Untitled

Untitled

Name의 서버 이름은 아무거나 입력해주셔도 됩니다

각자의 서버 정보들을 입력해주셔야 합니다 열려있는 포트번호가 잘 기억이 나지 않으시면

이전 포스팅에 포트번호를 확인할 수 있는 방법을 포스팅 해놨으니 확인해주세요

서버 정보들을 입력하고 OK를 눌러주면 아래와 같이 연결이 잘 됩니다.

Untitled

연결이 완료되면 Apply and close를 눌러서 적용시켜 준 뒤 아래와 같이 화살표를 눌러보면

여러가지 패키지들이 나옵니다. 각각의 패키지들에는 웹메소드에서 기본적으로

제공되는 패키지 입니다 각 패키지에는 함수 같은것들이 들어있고 이를 서비스라고 부릅니다

웬만한 것들은 다 있다고 보시면 되고 기능이 부족하거나

없는 기능들은 자바로 직접 만들어서 사용할 수 도 있습니다.

각 패키지에 있는 서비들에 대한 사용법이나 설명은 종류가 너무 많아서 따로 정리해서

포스팅 하겠습니다.

Untitled



작업 해보기


먼저 디자이너의 구조를 이해해야 하니 간단하게 패키지 및 폴더를 만들고 많이 사용하는 Window 와 Perspective에 대해서 같이 설명 드리겠습니다.


먼저 연결된 서버 프로젝트에 오른쪽 마우스를 누르고 아래 그림처럼 Package를 클릭해주세요


패키지는 특정 모듈이나 기능을 관리하기 위한 하나의 폴더라고 생각하시면 됩니다 실무 상황이나 설계에 따라 패키지를 나누는 기준이 달라 질 수 있습니다. 패키지별로 Export 해 다른 서버로 보낼 수도 있고 원하는 서버로 옮길 수도 있습니다


패키지 및 폴더 만들기


Untitled

아래 그림처럼 화면이 나오면 패키지 이름을 아무거나 입력하고 확인을 눌러줍니다.

Untitled

Untitled

패키지가 잘 만들어졌습니다.

다음은 패키지 하위에 폴더를 한번 만들어보겠습니다.

패키지를 만드는것과 동일하게 만드시면 됩니다.

Untitled

Untitled



Flow Service 생성


Untitled

웹메소드 개발에는 패키지 및 폴더를 만드시면서 보셨겠지만

다양한 종류의 서비스들이 존재합니다

웹메소드에서의 서비스는 개념은 조금 다를 수 있지만

하나의 함수라고 생각해주시면 이해하기 쉬울 것 같습니다

함수를 독립적으로 실행하고 함수를 넣어 순차적으로 실행기도 하며 또 그 함수를 다른 함수에

넣어서 실행 할 수 있는것 처럼 웹메소드에서도 여러가지 서비스를 조합하여

하나의 서비스로 만들기도 하고 독립적으로 실행할 수도 있습니다

그 중 Flow Service는 빈 껍데기의 함수라고 생각 해주시면 될 것 같습니다

Flow Service에 여러가지 서비스를 넣어 Flow를 만들고 사용 할 수 있습니다.

Flow Service를 만들고 hello world 를 로그에 출력하는 연습을 해보겠습니다.




Hello World 준비


먼저 만들어두신 폴더 하위에서 Flow Service를 하나 생성 해보겠습니다.

이름은 아무거나 넣고 finish를 눌러줍니다.

Untitled

Untitled

생성된 Flow Service를 더블클릭 하여 열어보시면 위와 같은 화면이 될 것입니다.

제일 큰 네모는 예상 하셨다시피 개발 시 사용하는 에디터 창이며

간단하게 하나씩 설명 드리겠습니다.

Tree는 현재 보시고 계신 에디터 화면입니다

Input/Output은 해당 FlowService에 입력과 출력을 정의할 수 있습니다 클릭 시

에디터 창이 전환됩니다

Properties는 속성값을 볼 수 있는 창이며 수정 및 입력도 가능합니다 패키지, 서비스, 에디터 창 등

이것저것 클릭해보시면 Properties의 창이 변하는 것을 확인하실 수 있습니다.

Pipeline은 웹메소드에서는 일반적인 개발과 달리 코드로 개발하지 않습니다

서비스를 정의하고 서비스가 순차적으로 실행 될 때 나오는 출력은 각각의 파이프라인에 담깁니다

이 때 다음 서비스의 입력으로 서로 파이프라인을 연결하여 값이 잘 흐를 수 있도록 연결하는

작업을 할 때 사용합니다 이후에 할 Hello World를 만들어 보시면 조금 더 잘 이해 되실겁니다

Palette는 개발 시 필요한 커맨드 및 패키지 목록들에 있는 서비스를 불러올 때 사용하는 창 입니다

커맨드에는 branch( 조건문), loop (반복문), try-catch 등 일반적인 개발에서 쓰일법한 커맨드들이

아이콘 모양으로 배치 돼 있습니다.

Palette의 위치가 다를 수 있으나 위치는 드래그로 옮기실 수 있으니 신경쓰지 않으셔도 됩니다




Hello World


먼저 Hello world를 출력 해보기 입력을 받아야 합니다

Input/Ouput 창으로 전환 해 주시고 아래와 같이 Input에 오른쪽 마우스를 클릭한 후

string 이라는 변수를 선언 해주세요.

Untitled

Untitled

그 다음 Tree 창으로 전환 한 뒤 아래와 같이

Palaette의 invoke를 에디터 창으로 드래그 해주세요

Untitled

Untitled

1
pub.flow:debugLog

Element name에 똑같이 쳐주시고 Ok를 눌러주시면

아래와 같이 에디터 창에 debugLog가 추가 됐을겁니다.

debugLog?

  • debugLog는 서버 로그 파일에 로그를 남겨주는 서비스입니다.
  • 웹메소드에서 제공하는 미리 만들어져있는 서비스 중 하나 입니다.
  • 로그 파일 경로는 아래에서 찾아 볼 수 있습니다.
1
 cd {webmethods directory}/IntegrationServer/instance/default/logs/server.log

Untitled

이제 debugLog를 클릭하시고 Pipeline을 눌러보시면 아래와 같이

입력 했던 string 변수와 여러가지 변수들이 보이실겁니다.

Untitled

Pipeline In은 debugLog 서비스 실행단계에서 얻을 수 있는 pipeline이 표시되는 것입니다

( 꼭 debugLog를 말하는것은 아닙니다 저희가 debugLog를 클릭했고 해당 서비스 실행단계에서

얻을 수 있는 pipeline을 보고있다고 말씀 드리는 것입니다 )

완전히 같다고 할 수 없지만 이해를 돕기 위해 현재 상황을 java code로 예시를 보여드리겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public void flowService(String string) {
	
	//예시

	//String variable = anotherService(string);
	debugLog(null, null, null);

	//만약 이 위 예시처럼 반환값이 있는 다른 서비스의 출력변수가 선언되어 있다면
    //debuglog의 pipeline In에는 variable 라는 input이 더 보이게 됩니다
}

public void debugLog(String message, String function, String level) {
	//내부로직...
}

publci void anotherServcie(String string) {
	//내부로직...
}


위 코드에서 debugLog에 null, null, null로 작성한 이유는 아직 저희가 debugLog에 어떠한

값 넣어주지 않았기 때문입니다. 이제 debugLog가 값을 주입 해보겠습니다.

pipeline In에 string 변수를 드래그하여 message로 연결해주시면

debugLog 서비스의 message 매개변수에 값을 주입한 것과 같습니다

Untitled

연결이 잘 되셨다면 현재 상황은 전 예시코드에서

debugLog 함수에 flowService 함수의 인자 string을 매개변수로 주입했다고

생각하시면 될 것 같습니다.

1
2
3
4
5
6
7
8
9
10
public void flowService(String string) {
	
	//예시
	debugLog(string, null, null);

}

public void debugLog(String message, String function, String level) {
	//내부로직...
}

서비스가 완성된 것이니 실행을 한번 해보도록 하겠습니다.

에디터 창에 마우스 오른쪽 버튼 누르시고 Run Flow Service를 클릭 해 주시면 됩니다.

Untitled

변경 내용을 저장할 것인지 묻는 화면입니다

OK 눌러줍니다.

Untitled

해당 flow service의 input 변수에 어떤 값을 주입할 것인지 설정하는 화면입니다

만약 저희가 input을 string 뿐만 아니라 더 많은 변수를 선언했다면

해당 변수들이 모두 보이게 될 것 입니다.

Untitled

Value에 Hello World!! 를 입력한 뒤 OK를 누릅니다.

Untitled

Untitled

값이 잘 출력되는 것을 확인 할 수 있습니다

위 화면 콘솔에 message와 string의 값으로 Hello World!!가 보이는데

저희는 Ouput을 설정하지 않았었기 때문에

이는 flow service의 Output 출력으로 나온것은 아니고

콘솔에서는 파이프안에 있는 값들을 전부 보여주게 됩니다

이 부분이 조금 어렵게 느껴지실 수 있을 것 같아 예시 코드로 설명을 돕겠습니다

실제로는 아래코드와 조금 다를 수 있습니다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/** 실행 함수 */
public static void main(String[] args) {
		
		//저희가 작성한 flowService도 함수라고 생각했을 때
		//flow service는 현재 void 입니다 반환값이 없다는 뜻이죠
		//그래서 flowService를 실행하더라도 어떠한 반환값도 없기 때문에
		//내부적으로 실행되고 종료 됐다고 생각하시면 됩니다
		
		flowService(args[0]); //args[0]의 값은 Hello World!!
		
}

public void flowService(String string) {
	
	//예시
	debugLog(string, null, null);

}

public void debugLog(String message, String function, String level) {
	//debug 로그는 실제 소스는 공개가 되어있지 않아
	//정확하게 알수는 없지만 기본적으로 server.log라는 파일에 전달받은 인자들을
	//일정 포맷으로 기록을 해두게 됩니다.

}

말씀드린것 처럼 flowService 또한 하나의 함수라고 생각 했을때

다른 서비스에서 호출하여 사용한다면 Output 값을 설정 해주셔야 하며

콘솔에 출력됐던 message와 string의 값은 내부적으로 값이 담겼던

파이프의 값이 보이는 것이며 실제 flowService의 출력은 아니라고 생각하시면

조금 덜 헷갈리실 수 있을 것 같습니다



마치며..


긴 글 끝까지 따라 와 주셔서 감사드리며 다음 포스팅에서는 웹메소드에서 사용되는

데이터타입 종류에 대해서 간략하게 포스팅 해보겠습니다

해당 포스팅에 틀린 점 및 부연해 주실 내용을 댓글로 달아주시면 감사하겠습니다.

hits image
This post is licensed under CC BY 4.0 by the author.