다음을 통해 공유


Azure Logic Apps의 소비 워크플로에서 B2B 메시지에 대한 스키마 추적

적용 대상: Azure Logic Apps(소비)

비고

이 문서는 소비 논리 앱 워크플로에만 적용됩니다. 표준 논리 앱 모니터링에 대한 자세한 내용은 다음 설명서를 참조하세요.

Azure Logic Apps에는 워크플로의 일부에 대해 사용하도록 설정할 수 있는 기본 제공 추적 기능이 포함되어 있습니다. B2B(Business-to-Business) 메시지의 성공적인 배달 또는 수신, 오류, 속성을 모니터링하기 위해 통합 계정에서 AS2, X12 및 사용자 지정 추적 스키마를 만들고 사용할 수 있습니다. 이 참조 가이드에서는 이러한 추적 스키마의 구문 및 특성을 설명합니다.

AS2

AS2 메시지 - 추적 스키마

다음 구문에서는 AS2 메시지를 추적하기 위한 스키마를 설명합니다.

{
   "agreementProperties": {
      "senderPartnerName": "",
      "receiverPartnerName": "",
      "as2To": "",
      "as2From": "",
      "agreementName": ""
   },
   "messageProperties": {
      "direction": "",
      "messageId": "",
      "dispositionType": "",
      "fileName": "",
      "isMessageFailed": "",
      "isMessageSigned": "",
      "isMessageEncrypted": "",
      "isMessageCompressed": "",
      "incomingHeaders": {},
      "outgoingHeaders": {},
      "correlationMessageId": "",
      "isNrrEnabled": "",
      "isMdnExpected": "",
      "mdnType": ""
    }
}

AS2 메시지 - agreementProperties

재산 필수 유형 설명
senderPartnerName 아니오 String AS2 메시지 보낸 사람 파트너 이름
receiverPartnerName 아니오 String AS2 메시지 수신자의 파트너 이름
as2To String AS2 헤더의 AS2 메시지 수신기 이름
as2From String AS2 메시지 헤더의 AS2 메시지 보낸 사람 이름
agreementName 아니오 String 메시지를 확인하는 AS2 규약의 이름

AS2 메시지 - messageProperties

재산 필수 유형 설명
direction String 메시지 흐름 방향(send 또는 receive)
messageId 아니오 String AS2 메시지 헤더의 AS2 메시지 ID
dispositionType 아니오 String MDN(메시지 처리 알림)의 처리 유형
fileName 아니오 String AS2 메시지 헤더의 파일 이름
isMessageFailed 불리언 (Boolean) AS2 메시지의 실패 여부
isMessageSigned 불리언 (Boolean) AS2 메시지 서명 여부
isMessageEncrypted 불리언 (Boolean) AS2 메시지 암호화 여부
isMessageCompressed 불리언 (Boolean) AS2 메시지가 압축되는지 여부
incomingHeaders 아니오 JToken 사전 들어오는 AS2 메시지 헤더에 대한 세부 정보
outgoingHeaders 아니오 JToken 사전 나가는 AS2 메시지 헤더에 대한 세부 정보
correlationMessageId 아니오 String AS2 메시지와 MDN(메시지 처리 알림) 상관 관계를 지정하기 위한 메시지 ID
isNrrEnabled 불리언 (Boolean) NRR(수신 거부 안 함)을 사용할 수 있는지 여부
isMdnExpected 불리언 (Boolean) 기본값을 사용할지 여부(알 수 없는 경우)
mdnType 열거형 허용되는 값: NotConfigured, Sync, Async

AS2 MDN - 추적 스키마

다음 구문에서는 AS2 MDN을 추적하기 위한 스키마를 설명합니다.

{
   "agreementProperties": {
      "senderPartnerName": "",
      "receiverPartnerName": "",
      "as2To": "",
      "as2From": "",
      "agreementName": ""
   },
   "messageProperties": {
      "direction": "",
      "messageId": "",
      "originalMessageId": "",
      "dispositionType": "",
      "isMessageFailed": "",
      "isMessageSigned": "",
      "isNrrEnabled": "",
      "statusCode": "",
      "micVerificationStatus": "",
      "correlationMessageId": "",
      "incomingHeaders": {},
      "outgoingHeaders": {}
   }
}

AS2 MDN - 계약속성 (agreementProperties)

재산 필수 유형 설명
senderPartnerName 아니오 String AS2 메시지 보낸 사람 파트너 이름
receiverPartnerName 아니오 String AS2 메시지 수신자의 파트너 이름
as2To String AS2 헤더의 AS2 메시지 수신기 이름
as2From String AS2 메시지 헤더의 AS2 메시지 보낸 사람 이름
agreementName 아니오 String 메시지를 확인하는 AS2 규약의 이름

AS2 MDN - messageProperties

재산 필수 유형 설명
direction String 메시지 흐름 방향(send 또는 receive)
messageId 아니오 String AS2 메시지 헤더의 AS2 메시지 ID
originalMessageId 아니오 String 원래 AS2 메시지 ID
dispositionType 아니오 String MDN(메시지 처리 알림)의 처리 유형
isMessageFailed 불리언 (Boolean) AS2 메시지의 실패 여부
isMessageSigned 불리언 (Boolean) AS2 메시지 서명 여부
isNrrEnabled 불리언 (Boolean) NRR(수신 거부 안 함)을 사용할 수 있는지 여부
statusCode 열거형 허용되는 값: Accepted, Rejected, AcceptedWithErrors
micVerificationStatus 열거형 허용되는 값: NotApplicable, Succeeded, Failed
correlationMessageId 아니오 String MDN이 구성된 원본 메시지의 ID인 상관 관계 ID
incomingHeaders 아니오 JToken 사전 들어오는 AS2 메시지 헤더에 대한 세부 정보
outgoingHeaders 아니오 JToken 사전 나가는 AS2 메시지 헤더에 대한 세부 정보

X12

X12 거래 집합 - 추적 스키마

다음 구문에서는 X12 트랜잭션 집합을 추적하기 위한 스키마를 설명합니다.

{
   "agreementProperties": {
      "senderPartnerName": "",
      "receiverPartnerName": "",
      "senderQualifier": "",
      "senderIdentifier": "",
      "receiverQualifier": "",
      "receiverIdentifier": "",
      "agreementName": ""
   },
   "messageProperties": {
      "direction": "",
      "interchangeControlNumber": "",
      "functionalGroupControlNumber": "",
      "transactionSetControlNumber": "",
      "correlationMessageId": "",
      "messageType": "",
      "isMessageFailed": "",
      "isTechnicalAcknowledgmentExpected": "",
      "isFunctionalAcknowledgmentExpected": "",
      "needAk2LoopForValidMessages": "",
      "segmentsCount": ""
   }
}

X12 트랜잭션 집합 - agreementProperties

재산 필수 유형 설명
senderPartnerName 아니오 String 파트너 X12 메시지 보낸 사람 이름
receiverPartnerName 아니오 String 파트너 X12 메시지 수신자의 이름
senderQualifier String 파트너 X12 메시지 보낸 사람의 한정자
senderIdentifier String 파트너 X12 메시지 보낸 사람 식별자
receiverQualifier String 파트너 X12 메시지 수신자의 한정자
receiverIdentifier String 파트너 X12 메시지 수신자에 대한 식별자
agreementName 아니오 String 메시지를 확인하는 X12 규약의 이름

X12 트랜잭션 집합 - 메시지 속성

재산 필수 유형 설명
direction Enum 메시지 흐름 방향(send 또는 receive)
interchangeControlNumber 아니오 String 기능 승인을 위한 교환 컨트롤 번호
functionalGroupControlNumber 아니오 String 기능 확인을 위한 기능 그룹 제어 번호
transactionSetControlNumber 아니오 String 거래 집합의 제어 번호
correlationMessageId 아니오 String 메시지 상관 관계 ID는 다음 값을 결합합니다: {agreementName}{interchange-or-functionalGroup-ControlNumber}{transactionSetControlNumber}
messageType 아니오 String 트랜잭션 집합 또는 문서 형식
isMessageFailed 불리언 (Boolean) X12 메시지 실패 여부
isTechnicalAcknowledgmentExpected 불리언 (Boolean) X12 규약에서 기술 승인이 구성되었는지 여부
isFunctionalAcknowledgmentExpected 불리언 (Boolean) X12 규약에서 기능 승인이 구성되었는지 여부
needAk2LoopForValidMessages 불리언 (Boolean) 유효한 메시지에 AK2 루프가 필요한지 여부
segmentsCount 아니오 정수 X12 트랜잭션 집합의 세그먼트 수

X12 트랜잭션 집합 승인 - 추적 스키마

다음 구문에서는 X12 트랜잭션 집합 승인을 추적하기 위한 스키마를 설명합니다.

{
   "agreementProperties": {
      "senderPartnerName": "",
      "receiverPartnerName": "",
      "senderQualifier": "",
      "senderIdentifier": "",
      "receiverQualifier": "",
      "receiverIdentifier": "",
      "agreementName": ""
   },
   "messageProperties": {
      "direction": "",
      "interchangeControlNumber": "",
      "functionalGroupControlNumber": "",
      "isaSegment": "",
      "gsSegment": "",
      "respondingFunctionalGroupControlNumber": "",
      "respondingFunctionalGroupId": "",
      "respondingTransactionSetControlNumber": "",
      "respondingTransactionSetId": "",
      "statusCode": "",
      "processingStatus": "",
      "correlationMessageId": "",
      "isMessageFailed": "",
      "ak2Segment": "",
      "ak3Segment": "",
      "ak5Segment": ""
   }
}

X12 트랜잭션 집합 승인 - agreementProperties

재산 필수 유형 설명
senderPartnerName 아니오 String 파트너 X12 메시지 보낸 사람 이름
receiverPartnerName 아니오 String 파트너 X12 메시지 수신자의 이름
senderQualifier String 파트너 X12 메시지 보낸 사람의 한정자
senderIdentifier String 파트너 X12 메시지 보낸 사람 식별자
receiverQualifier String 파트너 X12 메시지 수신자의 한정자
receiverIdentifier String 파트너 X12 메시지 수신자에 대한 식별자
agreementName 아니오 String 메시지를 확인하는 X12 규약의 이름

X12 트랜잭션 집합 승인 - messageProperties

재산 필수 유형 설명
direction Enum 메시지 흐름 방향(send 또는 receive)
interchangeControlNumber 아니오 String 기능 승인에 대한 인터체인지 컨트롤 번호입니다. 이 값은 파트너에게 전송된 메시지에 대한 기능 승인을 받은 경우에만 발신자에 대해 채워집니다.
functionalGroupControlNumber 아니오 String 기능 승인을 위한 기능 그룹 컨트롤 번호입니다. 이 값은 파트너에게 전송된 메시지에 대한 기능 승인을 받은 경우에만 발신자에 대해 채워집니다.
isaSegment 아니오 String X12 메시지의 ISA(교환 컨트롤 헤더) 세그먼트입니다. 이 값은 파트너에게 전송된 메시지에 대한 기능 승인을 받은 경우에만 발신자에 대해 채워집니다.
gsSegment 아니오 String X12 메시지의 GS 세그먼트입니다. 이 값은 파트너에게 전송된 메시지에 대한 기능 승인을 받은 경우에만 발신자에 대해 채워집니다.
respondingFunctionalGroupControlNumber 아니오 String 응답 기능 그룹의 컨트롤 번호
respondingFunctionalGroupId 아니오 String 인증에서 AK101로 매핑되는 응답 기능 그룹의 ID
respondingTransactionSetControlNumber 아니오 String 응답 트랜잭션 집합의 컨트롤 번호
respondingTransactionSetId 아니오 String 승인에서 AK201에 매핑되는 응답 트랜잭션 집합의 ID
statusCode 불리언 (Boolean) 트랜잭션 집합에 대한 승인 상태 코드
processingStatus Enum 허용되는 값을 사용하여 승인에 대한 처리 상태: Received, GeneratedSent
correlationMessageId 아니오 String 메시지 상관 관계 ID는 이러한 값들을 결합합니다: {agreementName}{interchange-or-functionalGroup-ControlNumber}{transactionSetControlNumber}
isMessageFailed 불리언 (Boolean) X12 메시지 실패 여부
ak2Segment 아니오 String 받은 기능 그룹 내 트랜잭션 집합에 대한 확인
ak3Segment 아니오 String 데이터 세그먼트의 오류 보고
ak5Segment 아니오 String AK2 세그먼트에 식별된 트랜잭션 집합이 허용되는지 또는 거부되는지와 그 이유를 보고

X12 인터체인지 - 추적 스키마

다음 구문에서는 X12 교환을 추적하기 위한 스키마를 설명합니다.

{
   "agreementProperties": {
      "senderPartnerName": "",
      "receiverPartnerName": "",
      "senderQualifier": "",
      "senderIdentifier": "",
      "receiverQualifier": "",
      "receiverIdentifier": "",
      "agreementName": ""
   },
   "messageProperties": {
      "direction": "",
      "interchangeControlNumber": "",
      "isaSegment": "",
      "isTechnicalAcknowledgmentExpected": "",
      "isMessageFailed": "",
      "isa09": "",
      "isa10": "",
      "isa11": "",
      "isa12": "",
      "isa14": "",
      "isa15": "",
      "isa16": ""
   }
}

X12 교환 - agreementProperties

재산 필수 유형 설명
senderPartnerName 아니오 String 파트너 X12 메시지 보낸 사람 이름
receiverPartnerName 아니오 String 파트너 X12 메시지 수신자의 이름
senderQualifier String 파트너 X12 메시지 보낸 사람의 한정자
senderIdentifier String 파트너 X12 메시지 보낸 사람 식별자
receiverQualifier String 파트너 X12 메시지 수신자의 한정자
receiverIdentifier String 파트너 X12 메시지 수신자에 대한 식별자
agreementName 아니오 String 메시지를 확인하는 X12 규약의 이름

X12 교환 - 메시지 속성

재산 필수 유형 설명
direction Enum 메시지 흐름 방향(send 또는 receive)
interchangeControlNumber 아니오 String 교환 컨트롤 번호
isaSegment 아니오 String X12 메시지의 ISA 세그먼트
isMessageFailed 불리언 (Boolean) X12 메시지 실패 여부
isTechnicalAcknowledgmentExpected 불리언 (Boolean) X12 규약에서 기술 승인이 구성되었는지 여부
isa09 아니오 String X12 문서 교환 날짜
isa10 아니오 String X12 문서 교환 시간
isa11 아니오 String X12 교환 컨트롤 표준 식별자
isa12 아니오 String X12 교환 컨트롤 버전 번호
isa14 아니오 String X12 승인이 요청됨
isa15 아니오 String 테스트 또는 프로덕션에 대한 표시기
isa16 아니오 String 요소 구분 기호

X12 교환 승인 - 추적 스키마

다음 구문에서는 X12 교환 승인을 추적하기 위한 스키마를 설명합니다.

{
   "agreementProperties": {
      "senderPartnerName": "",
      "receiverPartnerName": "",
      "senderQualifier": "",
      "senderIdentifier": "",
      "receiverQualifier": "",
      "receiverIdentifier": "",
      "agreementName": ""
   },
   "messageProperties": {
      "direction": "",
      "interchangeControlNumber": "",
      "isaSegment": "",
      "respondingInterchangeControlNumber": "",
      "isMessageFailed": "",
      "statusCode": "",
      "processingStatus": "",
      "ta102": "",
      "ta103": "",
      "ta105": ""
   }
}

X12 교환 승인 - agreementProperties

재산 필수 유형 설명
senderPartnerName 아니오 String 파트너 X12 메시지 보낸 사람 이름
receiverPartnerName 아니오 String 파트너 X12 메시지 수신자의 이름
senderQualifier String 파트너 X12 메시지 보낸 사람의 한정자
senderIdentifier String 파트너 X12 메시지 보낸 사람 식별자
receiverQualifier String 파트너 X12 메시지 수신자의 한정자
receiverIdentifier String 파트너 X12 메시지 수신자에 대한 식별자
agreementName 아니오 String 메시지를 확인하는 X12 규약의 이름

X12 교환 승인 - 메시지 속성

재산 필수 유형 설명
direction Enum 메시지 흐름 방향(send 또는 receive)
interchangeControlNumber 아니오 String 파트너로부터 받은 기술 승인에 대한 교환 컨트롤 번호
isaSegment 아니오 String 파트너로부터 받은 기술 승인에 대한 ISA 세그먼트
respondingInterchangeControlNumber 아니오 String 파트너로부터 받은 기술 승인에 대한 교환 컨트롤 번호
isMessageFailed 불리언 (Boolean) X12 메시지 실패 여부
statusCode 열거형 허용되는 값이 있는 교환 승인 상태 코드: Accepted, Rejected, AcceptedWithErrors
processingStatus 열거형 허용되는 값을 사용하여 승인에 대한 처리 상태: Received, GeneratedSent
ta102 아니오 String 교환 날짜
ta103 아니오 String 교환 시간
ta105 아니오 String 교환 노트 코드

X12 기능 그룹 - 추적 스키마

다음 구문에서는 X12 기능 그룹을 추적하기 위한 스키마를 설명합니다.

{
   "agreementProperties": {
      "senderPartnerName": "",
      "receiverPartnerName": "",
      "senderQualifier": "",
      "senderIdentifier": "",
      "receiverQualifier": "",
      "receiverIdentifier": "",
      "agreementName": ""
   },
   "messageProperties": {
      "direction": "",
      "interchangeControlNumber": "",
      "functionalGroupControlNumber": "",
      "gsSegment": "",
      "isTechnicalAcknowledgmentExpected": "",
      "isFunctionalAcknowledgmentExpected": "",
      "isMessageFailed": "",
      "gs01": "",
      "gs02": "",
      "gs03": "",
      "gs04": "",
      "gs05": "",
      "gs07": "",
      "gs08": ""
   }
}

X12 기능 그룹 - 계약 속성

재산 필수 유형 설명
senderPartnerName 아니오 String 파트너 X12 메시지 보낸 사람 이름
receiverPartnerName 아니오 String 파트너 X12 메시지 수신자의 이름
senderQualifier String 파트너 X12 메시지 보낸 사람의 한정자
senderIdentifier String 파트너 X12 메시지 보낸 사람 식별자
receiverQualifier String 파트너 X12 메시지 수신자의 한정자
receiverIdentifier String 파트너 X12 메시지 수신자에 대한 식별자
agreementName 아니오 String 메시지를 확인하는 X12 규약의 이름

X12 기능 그룹 - 메시지 속성

재산 필수 유형 설명
direction Enum 메시지 흐름 방향(send 또는 receive)
interchangeControlNumber 아니오 String 교환 컨트롤 번호
functionalGroupControlNumber 아니오 String 기능 그룹 제어 번호
gsSegment 아니오 String X12 메시지의 GS 세그먼트
isTechnicalAcknowledgmentExpected 불리언 (Boolean) X12 규약에서 기술 승인이 구성되었는지 여부
isFunctionalAcknowledgmentExpected 불리언 (Boolean) X12 규약에서 기능 승인이 구성되었는지 여부
isMessageFailed 불리언 (Boolean) X12 메시지 실패 여부
gs01 아니오 String 기능 그룹 식별자 코드
gs02 아니오 String 애플리케이션 보낸 사람 코드
gs03 아니오 String 애플리케이션 수신기 코드
gs04 아니오 String 기능 그룹 날짜
gs05 아니오 String 기능 그룹 시간
gs07 아니오 String 담당 에이전시 코드
gs08 아니오 String 버전, 릴리스 또는 산업에 대한 식별자 코드

X12 기능 그룹 인증 - 추적 스키마

다음 구문에서는 X12 기능 그룹 승인을 추적하기 위한 스키마를 설명합니다.

{
   "agreementProperties": {
      "senderPartnerName": "",
      "receiverPartnerName": "",
      "senderQualifier": "",
      "senderIdentifier": "",
      "receiverQualifier": "",
      "receiverIdentifier": "",
      "agreementName": ""
   },
   "messageProperties": {
      "direction": "",
      "interchangeControlNumber": "",
      "functionalGroupControlNumber": "",
      "isaSegment": "",
      "gsSegment": "",
      "respondingFunctionalGroupControlNumber": "",
      "respondingFunctionalGroupId": "",
      "isMessageFailed": "",
      "statusCode": "",
      "processingStatus": "",
      "ak903": "",
      "ak904": "",
      "ak9Segment": ""
   }
}

X12 기능 그룹 승인 - agreementProperties

재산 필수 유형 설명
senderPartnerName 아니오 String 파트너 X12 메시지 보낸 사람 이름
receiverPartnerName 아니오 String 파트너 X12 메시지 수신자의 이름
senderQualifier String 파트너 X12 메시지 보낸 사람의 한정자
senderIdentifier String 파트너 X12 메시지 보낸 사람 식별자
receiverQualifier String 파트너 X12 메시지 수신자의 한정자
receiverIdentifier String 파트너 X12 메시지 수신자에 대한 식별자
agreementName 아니오 String 메시지를 확인하는 X12 규약의 이름

X12 기능 그룹 승인 - messageProperties

재산 필수 유형 설명
direction 열거형 메시지 흐름 방향(send 또는 receive)
functionalGroupControlNumber 아니오 String 기술 승인을 위한 기능 그룹 컨트롤 번호입니다. 이 값은 파트너로부터 기술 승인을 받을 때 보낸 사람에게 채워집니다.
interchangeControlNumber 아니오 String 인터체인지 컨트롤 번호. 이 값은 파트너로부터 기술 승인을 받을 때 보낸 사람에게 채워집니다.
isaSegment 아니오 String interchangeControlNumber와 동일하지만 특정 경우에만 채웁니다.
gsSegment 아니오 String 와 동일 functionalGrouControlNumber하지만 특정 경우에만 채웁니다.
respondingFunctionalGroupControlNumber 아니오 String 원래 기능 그룹의 컨트롤 번호
respondingFunctionalGroupId 아니오 String 승인 기능 그룹 ID에서 AK101에 매핑
isMessageFailed 불리언 (Boolean) X12 메시지 실패 여부
statusCode 열거형 허용되는 값이 있는 승인 상태 코드: Accepted, Rejected, AcceptedWithErrors
processingStatus 열거형 허용되는 값을 사용하여 승인에 대한 처리 상태: Received, GeneratedSent
ak903 아니오 String 받은 트랜잭션 집합 수
ak904 아니오 String 식별된 기능 그룹의 허용된 트랜잭션 집합 수
ak9Segment 아니오 String AK1 세그먼트에 식별된 기능 그룹이 허용되는지 또는 거부되는지와 그 이유

관습

논리 앱 워크플로의 시작부터 끝까지 이벤트를 기록하는 사용자 지정 추적을 설정할 수 있습니다. 예를 들어 워크플로, SQL Server, BizTalk Server 또는 다른 계층을 포함하는 계층에서 이벤트를 기록할 수 있습니다. 다음 섹션에서는 워크플로 외부 계층에서 사용할 수 있는 사용자 지정 추적 스키마 코드를 제공합니다.

다음 구문에서는 사용자 지정 추적을 위한 스키마를 설명합니다.

{
   "sourceType": "",
   "source": {
      "workflow": {
         "systemId": ""
      },
      "runInstance": {
         "runId": ""
      },
      "operation": {
         "operationName": "",
         "repeatItemScopeName": "",
         "repeatItemIndex": ,
         "trackingId": "",
         "correlationId": "",
         "clientRequestId": ""
      }
   },
   "events": [
      {
         "eventLevel": "",
         "eventTime": "",
         "recordType": "",
         "record": {}
      }
   ]
}
재산 필수 유형 설명
sourceType String 다음과 같은 허용된 값을 사용하여 실행 원본에 대한 형식을 Microsoft.Logic/workflows지정합니다. custom**
source 문자열 또는 JToken 원본 형식인 Microsoft.Logic/workflows경우 원본 정보는 설명된 스키마를 따라야 합니다. 원본 형식이 custom면 스키마에는 JToken 형식이 있습니다.
systemId String 논리 앱의 시스템 ID
runId String 논리 앱의 실행 ID
operationName String 작업 이름(예: 작업 또는 트리거)
repeatItemScopeName String 작업이 foreach 또는 until 루프 내에 있는 경우 항목 이름을 반복합니다.
repeatItemIndex 정수 작업이 foreach or until 루프에 있음을 나타내는 반복 항목 인덱스 번호
trackingId 아니오 String 메시지에 상관 관계를 지정할 추적 ID
correlationId 아니오 String 메시지에 상관 관계를 지정할 상관 관계 ID
clientRequestId 아니오 String 클라이언트는 메시지에 상관 관계를 지정하기 위해 해당 항목을 채울 수 있음
eventLevel String 이벤트 수준
eventTime 날짜와 시간 UTC 형식의 이벤트 시간: YYYY-MM-DDTHH:MM:SS.000000Z
recordType String 이 허용된 값으로만 추적되는 레코드 형식: custom
record JToken JToken 형식의 사용자 지정 레코드 형식만