EDI 란?
Buyer 와 Seller 가 상호간의 규약(TPA : Trading Partner Agreements)을 통해 MIG (Message Implementation Guideline) 형식에 맞게 문서를 교환하는 방법입니다.
EDIINT 는 XML을 인터넷을 통해 안전하고 신뢰할 수 있는 방식으로 문서 교환을 위한 프로토콜을 지원합니다.
SoftwareAG 제품 중 EDI 개발을 위해서는 Intergration Server , MyWebMethods(TradingNetwork 지원) , EDI Module이 필요합니다.
1. 준비하기 ( My webMethods 설치 )
My webMethods 란?
webMethods 구성 요소 를 관리하기위한 웹 기반 관리 및 모니터링 사용자 인터페이스
거래 파트너 관리 [Trading Network에 대한 설정 관리], Transaction 관리 , 네트워크를 통한 문서 교환 방법 구성,
실시간 모니터링 및 분석 수행과 같은 기능을 수행합니다.
* 7.X 버전에서는 Trading Network 가 Console 로 존재하였으나, 8.X 부터는 MyWebMethods 에 포함되었습니다.
Intergration Server 란의 TrandingNetwork 를 선택과 함께, MyWebMethods Server , EDI Module 을 선택합니다.
( MyWebMethods 는 UI 환경에서 TrandingNetwork 를 지원하며 모니터링을 할 수 있는 기능을 가지고 있습니다. )
MyWebMethods 는 TrandingNetwork를 지원해줄 예정이며, 반드시 RDBMS 정보가 필요합니다.
UpdateManager 및 Database Component Configurator 를 완료하신다음 Start.bat 파일을 실행시키면 아래와 같이 정상적으로 출력되는 것을 확인 할 수 있습니다.
Start.bat 경로 : {SoftwareAG Directory}\MWS\bin\startall.bat
MyWebMethods(MWS) 를 정상적으로 설치하였다면 IntegrationServer( IS ) > Setting > JDBC Pools 내에 CentralUsers 가 추가 됩니다.
또한 Integration Server > Security > User Management 내 Central User Management Configured 가 출력되는 것을 확인 할 수 있습니다.
2. MyWebMethods를 통해 Trading Network 설정 하기
Trading Network 란?
Integration Server Package 안에 포함되며 효과적이고 안전하게 서비스를 제공 할 수 있게 됩니다.
디자이너에서 WmTN Package 를 사용하여 파트너사와 네트워크를 통한 문서 교환을 지원합니다.
Navigate 탭에서 Applications > Administration > My WebMethods > System Settings > TN Servers 을 클릭합니다.
아래와 같이 Add TN Configuration 을 통해 사용할 통합서버를 선택할 수 있습니다. 예를들어 MultiInstance 로 DEV , QA , PROD 가 존재한다면, 각각의 Port가 다르므로 그 중 TradingNetwork 로 사용할 인스턴스를 선택할 수 있습니다.
3. 귀사의 정보 작성
Navigate 탭에서 Applications > Administration > Partner Administration > Partner Profiles 을 클릭합니다.
이후 Create My Enterprise를 통해 자신의 프로필을 작성하는 곳으로 이동 합니다.
최상단은 귀사의 기본 정보이며 , External IDs 탭에서는 외부에서 접속할 수 있는 명칭을 추가하는 곳 입니다.
Id Type으로는 다양한 종류가 있는데 아래에서 사용한 EDIINT AS2 , Mutually Defined는 위와 같습니다.
EDIINT 모듈(프로토콜)의 종류
EDIINT AS1 : SMTP (전자 메일)를 사용하여 문서를 전송
EDIINT AS2 : HTTP (또는 HTTP / S)를 사용하여 문서를 전송
EDIINT AS3 : FTPS (SSL을 통한 FTP)를 사용하여 문서 전송
EDIINT AS4 : WEBSERVICE 를 사용하여 문서 전송
Mutually Difined : 상호간의 합의된 명칭입니다.
Address 탭에서는 귀사의 정보를 작성할 수 있습니다. Add Address 를 통하여 정보를 등록합니다.
Contacts 탭에서는 담당자의 연락처를 관리 할 수 있습니다. Add Contact 을 통하여 정보를 등록합니다.
E-Mail 발송 기능이 내장 되어 있으므로, 오류 발생 시 손 쉽게 메일 발송을 지원합니다.
Partner Group Membership 탭에서는 프로세스 룰을 하나의 그룹으로 묶어서 같이 사용할 수 있게 합니다.
Delivery Settings 탭에서는 어떤 방식으로 파트너사와 통신을 할 건지 선택 및 EndPoint(목적지)를 설정할 수 있습니다.
(HTTP, FTP, WebService , HTTPS )
Extended Fields 탭에서는 전송 방법의 확장으로 어떤 알고리즘을 통해 송 수신 할지 그에 따른 성공여부 메시지를 받을지 설정 할 수 있습니다. 일반적으로 TPA(Trading Partner Agreement) 문서 내 기재가 되어 있습니다.
TPA (Trading Partner Agreement)란?
양사 간의 업무 진행에 대한 모든 정보가 정리 되어있는 문서규격입니다.
어떤값들을 쓸 건지, 연락포인트, 인증서 등등 제공합니다.(인증서는 데이터 암호화를 위해서 반드시 포함)
Certificates 탭에서는 인증서가 필요한 경우, 등록하여 관리 할 수 있습니다.
MyWebMethods(MWS) 에서는 등록할 수 없으며, Integration Server(IS) 에 등록된 KeyStore & Certificates 를 통하여 호출 할 수 있습니다.
Control Numbers 탭에서는 파트너간의 문서가 교환될때, 중복되거나 순서가 맞는지 검증을 위해서 사용합니다.
Navigate 탭에서 Applications > Administration > Integration > B2B Settings > Control Numbers을 클릭합니다.
모두 등록이 완료되었다면 Partner Profiles 에 화살표가 보이게 됩니다.
4. 거래처 정보의 작성
Navigate 탭에서 Applications > Administration > Partner Administration > Partner Profiles 을 클릭합니다.
이후 Add Profile 을 통해 파트너 사의 정보를 기재하는 곳이 생성됩니다.
3. 귀사의 정보 작성과 동일하게 진행되지만, Delivery Settings 란에 Settings Delivery Retries 가 존재하며 전송 실패시, 횟수와 대기 시간 등을 설정 할 수 있습니다.
5. 문서타입의 정의
Navigate 탭에서 Applications > Administration > Integration > B2B > Document Types Administration > Document Types을 클릭합니다.
해당 탭은 파트너사와 어떤 형태의 문서로 주고 받을지 결정 후, 디자이너에서 사용할 수 있도록 생성해 줍니다.
EDI 전송을 위한 규격( 규격에 따라 명칭이 다르다.)
WEAIFACT,EAN.X.12 .. DTT.VICS 등이 있고 각각의 버전이 존재합니다.
일반적으로 북미에서는 X12 , 유럽 EANCOM[EDIFACT] , 한국 ebXML (국세청) , customXML을 사용합니다.
Add Document Types 을 통해 3가지 형태의 문서타입을 선택할 수 있으며, 생성이 완료되면 디자이너 내 스키마가 생성됩니다.
스키마 생성 위치는 WmEDIforTN > EDIFFSchema 에서 확인할 수 있습니다.
6. TPA의 정의
Navigate 탭에서 Applications > Administration > Integration > B2B > Trading Partner Agreements을 클릭합니다.
해당 탭은 설정하지 않는다면 기본 생성 되어있는 EDITPA 를 사용하며 , 일반적으로 파트너사마다 업체에 따라 구분자 및 상세 정보가 달라
Add TPA 를 통해 생성합니다.
Add TPA를 클릭하면, 상단에는 해당 TPA가 적용되는 Sender 와 Receiver를 선택할 수 있습니다.
Sender와 Receiver가 같을때, 어떤 경로에 있는 TPA 문서를 사용할지 경로를 지정합니다.
하위 항목으로는 약속된 TPA에 따라 설정할 수 있습니다.
지정된 경로에 TPA 안에 변수들을 담아주는 역활을 합니다. ( GlobalVariable 역활 )
설정이 완료되었다면 아래와 같이 신규 TPA가 생성된 것을 확인 할 수 있습니다.
7. Processing Rules의 정의
Navigate 탭에서 Applications > Administration > Integration > B2B > Processing Rules을 클릭합니다.
해당 탭은 EDI 서비스가 실행 될때, Ordinal 순서대로 (0번 부터 ~ ) 순차적으로 진행하며 조건에 부합하는 Process가 있다면 해당 Process Action을 진행합니다.
또한 Add Processing Rule 을 통하여 원하는 새로운 규칙을 추가할 수 있습니다.
Criteria ( 조건 ) 에 부합한다면 , Action 탭의 서비스를 호출하게 합니다.
Processing Rules의 순서는 우측 화살표를 통해 이동 시킬 수 있습니다.
7. Configure Properties의 정의
Navigate 탭에서 Applications > Administration > Integration > B2B Settings > Configure Properties을 클릭합니다.
해당 탭은 B2B 시, 각종 설정을 담당하는 곳으로 보아야 할 곳은 ExecuteACL 부분입니다.
첫 설정창에 접속을하게되면 공백으로 되어있는데 wm.EDIINT 를 호출할 수 있도록 Anomymous 를 선언함으로 누구나 호출할 수 있게 하였습니다.
여기서부터 추가정리
미정리본
DB 정보 변경 시, 아래 경로에서 설정을 변경 진행한다.
{Software AG_directory}\MWS\server\serverName \config\mws.db.xml
MyWebMethods를 통해 Intergration Server 관리자 연결을 설정
MWS 애플리케이션이이 데이터에 액세스하려면 MWS가 Integration Server 와 연결을 설정
Integration > ESB
Single-Signed-On(SSO) 체크
mdn messaging deliverly notification : edi를 보내면 메시지 날아감
control 문서를 던져줌 이거는 실제 데이터에 영향을 주지않는다.
service를 생성한다.
플랫파일 형식
2가지 방식
FIXED POSITION ? Length에 따라서 위치에 데이터가 있는지 알려줌
DELIMITE : 구분자에 따라 레코드, 서브필드 등을 알려줌
EDI 는 DELIMITER 형식
segment - element -
ack acknowledge request파일이라는게 있는데 받을지 안받을지,
odellte 은 xml 형식
-----------------------------------------------------------------------------------------------------------------
업체대 업체는 상관없지만 , VAN같은경우는 따지는것들이 있음
VAN은 전용선을깔아야 되는데 VANP가 들어감
HTTPS로 하면 VANP가 안들어감
몇개 제품들이 인증이 되어있음 IBM 어쩌구, SOFTWARE AG의 어쩌구
HTTP 를 사용하기 때문에 인증서가 필요하다.
EDI 관련해서 인증서에 대해 자세히 알아야한다.
커넥션 테스트는 TPA에 적혀진걸 보고 하기(방화벽뚫기, 암호화해보고 복호화까지 되는지 )
핸드쉐이크 버전요구도 많이지는 추세
라이센스 별로 컴포넌트가 다르다.
-----------------------------------------------------------------------------------------------------------------
MAX PARTENER : 10
1O개까지의 파트너까지만 허용
UNLIMITTED는 비쌈
RESOURCE => STROE SETTING 알보기
사설인지 아닌지 알수있는 방법 : 공인증서는 루트키가 존재함 인증경로 확인시에
공인인증서는 2년에 한번씩 바꿔준다.
방화벽이 뚫렸는지 확인방법
TELNET 커멘드 치기 방화벽이 안뚫리면 Connection Time out이 된다.
서버는 DMZ에 들어와있어야된다. 아웃바운드 : 220.72.154.202 // 인바운드 : L7스위치 or Vip 정보
방화벽뚫는거 누구한테 요청해 ? 네트워크 팀 - 서버관련 인프라팀 장비 관리함
어떻게 요청했어 ? 인터넷망이라고 이야기해주어야한다. source ip 1:1:1:1 -> target ip 3:3:3:3 endport 5555 등록해주세요
1:1:1:1 ->
1:1:1:1
방화벽뚫리면 telnet치면 된다. -> 커넥션 테스트 진행(인증서 공인인증서 3dep로 들어오면 3개 다 넣어주어야한다. )
3개 어떻게 분리해? 인증서 켜놓고 인증서 내보내기로 빼면된다.
NAT IP [ = PULIBIC IP ] Inbound(LoadBalance) & Outbound(IS가 설치된) Ip를 작성해주어야 한다. 이중화일때는 2개
암호화 방식
- sha1 :
- sha2 : jdk 1.7, IS9.5부터 지원
** 핸드 셰이크 (HTTP, HTTPS 차이점)
- TLS 버전 1.2 보안취약점 때문에 use jjsl
- 로그가 어디에 남는지 확인과 셋팅 방법
ISA open > IEA close 수신자에 대한 정보 들어있고 (누가 보냈는지, 누가 받았는지)
GS open > GE close
ST open > SE close
B2BI를 위한 준비
0. IS SINGLE SIGNON 셋팅 ( 특히 RESOURCE 부분, 스레드 개수 등)
2. IS JDBC POOL 에서 CENTRALUSER, TN 셋팅 (JDBC EXTERNAL 세팅)
포트는 primary port
4. 인증서 셋팅 (IS)
- 공인인증서를 사용하여 KEY STORE 생성
- TRUST STORE의 상대방의 공인인증서와 PUBLIC KEY를 IMPORT
- 상대방의 PUBLIC KEY를 가지고 암호화, PRIVATE KEY로 복호화한다.
- IS에 이런 셋팅을 하는 것은 핸드 셰이크를 위함이다.
- 실제 암복호화를 위한 셋팅은 MWS(TN)에 셋팅한다.
- IS 10.3버전부터는 공인인증서 만료 날짜를 체크하기 때문에 적어도 한달전에는 재발급 신청해야함
- Certificates
- 데이터 암복호화 할때 사용
- ROOT CA, IMMEDIATE, PUBLIC KEY
- SSL용 , 인크립션용 (IS TRUSTSTORE)
- 인크립션용 ( MWS, TN)
- TRUSTSTORE 셋팅하고 IS Certificates에서 clear 캐시
- port에서 disable에서 -> enable
- 다른 jks명을 만들고 alias를 같게 만든다
Document Types 세팅 - Transaction에 보기위함 (add 어트리뷰트)
7. Trading Partener Agreements
- realse 딜리미터 : 실제 데이터가 * 이면 구별하지 못하니 ? 셋팅
- FAGerneration : 리턴하는 트랜젝션, 펑셔널 트랜젝션 사용가능하게함,
들어온거에 대한 function ack 자동으로 만들어지는데 제너레이트에서 설정할 수 있음
functional ack가 만들어짐 : outbound 셋팅, 인바운드는 굳이 할 필요없음
인바운드
9. EAIINTDATA -> PAYLOAD
getEDIFFshema - > converToValue => ChangeStatus
만약 Request MDN 이 : Asynchronous 일때 AS2을 세팅해주어야한다.
또한 HTTP 시 Content-Type을 설정해줄 수 있지만, 한번 추가 시 삭제가 되지 않는다.
Application > Integration > B2B > Partner Administration > Partner Certificates : Search 기능을 이용하여 만료가 얼마 남지 않은 인증서를 확인 할 수 있다.
만약 고객사에서 인증서를 2개 전달 할 경우(SSl,Encrypt) IS 서버의 TrustList에 세팅을 한 후, 암복호화는 TN서버에 세팅을 한다.
만료가 되기 2달 전에는 각 파트너 사에 연락하여 변경 전 테스트를 진행해야한다.
10.1 버전 이후부터는 인증서가 만료될 수 데이터가 암 복호화가 되지 않는다.
NAT IP ? 공인 아이피
사전적 정의 : 내부 망에서는 사설 IP 주소를 사용하여 통신을 하고, 외부망과의 통신시에는 NAT를 거쳐 공인 IP 주소로 자동 변환
퍼플릭 아이피 고객사에게 배포 (방화벽을 뚫기 위해서)
AS2 자원에 HTTP 로 MDN을 받을건지
MDN이란? (Message Delivery Notification)메시지를 받았는지 알게해주는거 해당 트렌젝션 셋
X12 997 문서 , MDN 사인하는 이유?
IS 서버에서의 인증서 세팅
Security > KeyStore
Security > Certificates
Security > Ports > Edit HTTPS Port Configuration 생성시, Client Authentication 에서 사용자에 대한 권한을 변경 할 수있다.
UserName/Password: 사용시, 아이디와 비밀번호를 입력해주어야한다.
Request Client Certificates: 사용자에게 인증서 정보를 요청한다.
Require Client Certificates: 고강도 인증이며 사용자는 반드시 호출하는 쪽의 인증서를 보유하고있어야한다.
해당 권한을 설정한 후 IS를 ReStart 해주어야 적용이 된다.
만약 실제 운영서버와 개발 서버가 분리되지 않는 경우에는 서버 종료시 문제가 발생하게 되므로
1. TrustList 에 동일 Alias 의 인증서를 만들고, Reload
2. 기존 TrustList에 존재하는 인증서는 삭제
3. Certificates > Clear SSL Cache 클릭
4. Ports 내 인증서가 필요한 HTTPS 를 전부 Disable 한 후 다시 Enable로 변경 작업을 한다.
5. MyWebMethods 의 Certificates부분을 갱신 한 뒤 저장
6. 위와 같이 진행하면 서버를 종료하지않아도 재 시작한 것과 동일한 효과가 나타난다.
IS 는 SFTP clinent 역할만 가능하다.
Oauth 를 사용할 경우, REST를 알아야된다.
인증서 관련 keystore 마드는데 트러스터넣는이유는 핸드쉐이크하는데 체크함
인증서란에 넣어줘야된다 메뉴얼 혹은 검색해보기
핸드쉐이크 : https 할때 사용 (서버끼리체크해줌)
알아보기
HandShake 시 로그가 어디에 남는지 확인해보기
HandShake 를 발생시키려면 어떤 세팅을 가져야하는지
HandShake 시 어떤 문제점이 있는지 알아보기
IS Security > UserManagement 를 사용해서 계정을 생성하면 파일 형식으로 IS 서버에 저장되며,
MWS 는 DB에 저장되고 SSO를 통하여 공통적으로 사용 가능 하다.
-----------------------------------------------------------------------------------------------------------------------------------------------
IS MWS 에 동일한 계정 다른 비밀번호를 생성할때
IS에 우선순위를 둔다.
Clustering 하는 과정에서 10초정도 멈춘다.(최소시간 3초)
LB Default는 10분
운영때 문제가 없게하기 위해서
IBM Road Runner 동시에 세션을 천개 만개붙이기
fail of test 실패 테스트// 의 대상은 이중화된 서버
perfomance test ?// 과부하 테스트 (큰 프로젝트에서 주로 한다.)
스케줄, 리핏,스레드 잔뜩해서 부하 해볼수있음
100% 꽉차면 바로 죽지는 않음 (왜 : 서버의 힙(밖) 메모리를 사용 )
OOM : Out of Memory 메모리가 꽉차서 죽어버림
java core dump가 죽는다. 8기가
is 서버가 좀비가 된다.
이럴때는 shut down - start up
----------------------------------------------------------------
edi 진행
trading parther agreement 안만들어도 기본적으로 언노운한다.
db에서 읽어와서 공통서비스를 따서
agreement id = default
status 가 오키에 되야 정상 적동한다.
is segment에 testing이라는게 있다.
test-인디게이트 : Test인디게이트를 가지고 일 수 있다
delimiter 구분자
release 실제적인 데이터라고 알려주기 위해서 예를 들어 필드 구분자나 레코드 구분자가 있을경우 헷갈리지 않게
envelopidentifier
필드 구분자 * 레코드 구분자 ~
getTPA를 가져다가 공통으로 맵핑ㅎㅏㄴ다.
fageneration 요거가 결과를 내보낼때
per document 트렌젝션 셋당
rejectionrule 세팅하기
위 2개 세팅에 따라가 에크? 가 만들어진다. 전송은 안된다.
들어올거에 대한 펑셔널 에큰는 자동적으로 만들어짐 unkown에서 자동으로 만드렁짐 fageneration
펑셔널 에크는 들엉온거에대해 결과를 돌려줌
제너럴 에크는 들어온거에 대해서
Outbound에 대해서 만들고, Inbound는 자동으로 바꿔들어옴
MDN이 나가는거
제대로 풀리면 payload (복호화를했다 )
GS가 되어있으니까
그룹도 챙기고
안에 데이터도 챙긴다.
persist를 타면 bizdoc으로 감싼다.
getProfile 돌리면 값들이 나온다.
bizdoc은 실제로 stream형태로 들어가있음
convert to values 무서화 필요함 validation 체크함 문서에 맞는지 안맞는지
실패한다면, tn에 업데이트 침
EDIINT receive 서비스를타고들어옴
recognize TN 쪽에 Routiing 함
ENIINT.rules:processMsg 복호화 암호화 들어있음
EDIINT.reciverURLs = /invoke/wm.EDIINT/receive/WmEDIReceive
두개 주소로 다 받아짐
URL alias 매우 유용하다
Rest Endpoint 세팅가능
WebService migrate 세팅 가능
type
sendid as2 아이디
contenttype - x12만쓰니까 하드코딩함
공통하려면 프로파일에다가 extend추가해서
recognize 하면 bizdoc 나오고
routing해서 던짐
edi 데이터는 기본적 mime으로감싸져이씀
크리에이트 마임함
에러 아니면 석세스
getediffshcema
------------------------------------------------------------------------------------------------
SSL HandShaking에 대한 디버그 로그 나오게하기
해당 경로에 아래 내용 추가
D:\SoftwareAG103\profiles\IS_default\configuration\custom_wrapper.conf
wrapper.java.additional.443=-Djavax.net.debug=ssl,handshake
wrapper.java.additional.444=-Djava.security.debug=certpath
--------------------------------------------------------------------------------------------------------------
X12TA1Generation
autoGenerateTA1 off
Rules
Name 001
ErrorCode 001
Description The Interchange Control Numbers in the header....
wm.b2b.edi.TA1.validate.Code001ControlNumberValidator 해당 서비스로 검증
Control Numbers
HSAA ENVELOPE,SH 4번 사용
DENSO ENVELOPE,SS 13번 사용
Group을 지나면서 Envelopee
EDIFACT -----------------------------------------------------------------------------------------
UNB+UNOA:1+SUHYUK:ZZ+YOUNGMIN:ZZ+190203:1322+285220313'
UNH+09630602+DELFOR:D:96A:UN+DELFOR'
BGM+241:::DELIVERY SCHEDULE+9630602+9'
DTM+137:20190203112934:204'
RFF+ON:4600000447'
NAD+SF+E8P3::92++TUTORIAL HITECH s.r.o.'
NAD+ST+P001::92++TEST Plant'
UNS+D'
LIN+1++645001K500:BP'
RFF+WS:P201'
QTY+1:0:EA'
SCC+4++Y:31'
DTM+194:20190203:102'
DTM+206:20190203:102'
LIN+3++64500A6001:BP'
UNS+S'
CNT+2:67:EA'
UNT+444+09630602'
UNZ+1+285220313'
--------------------------------------------------------------------------------------------------------------
X12
ISA*00* *00* *ZZ*SUHYUK *ZZ*YOUNGMIN *190827*0026*U*00401*000000012*0*T*>~
GS*SS*SUHYUK*YOUNGMIN*20190827*0026*12*X*004010~
ST*856*181114040~BSN*00*181114040*20181114*2320~
DTM*011*20181114*1920~
DTM*017*20181114*2320~
HL*1**S~
MEA*PD*G**LB~TD3*TL**TAG57181114040~
REF*KK*TAG57181114040~
REF*BM*18111404~
N1*SF*SUHYUK Cooperation
LLC*92*AG57~
CTT*1~
SE*12*181114040~
GE*1*12~
IEA*1*000000012~
'Solution > EAI' 카테고리의 다른 글
webMethods for Websocket (0) | 2019.09.26 |
---|---|
webMethods for Clustering (0) | 2019.08.12 |
webMethods for Deployer (0) | 2019.08.05 |
webMethods for FTP (0) | 2019.05.28 |
webMethods for FlatFile (0) | 2019.05.27 |