실제 두 회사간 BOM을 지원하는 배치 정보간의 integration로직 입니다.
구현상 어려움이 있을지도 모르겠습니다 그리고 설명이 충분한지 모르겠습니다.
1) 입력값과 결과값
seq | input | output |
1 | ((AAC10&AAF10)|AAF30)&HAY10 | +-S3C1A+((ECE+L8AAA+(SE071/SE073+FZD_01))/SE073+FZD_00) |
2 | (((AAC10&AAF10)|AAF30)&HAY10)|HAY20 | +-S3C1A+((ECE+L8AAA+(SE071/SE073+FZD_01))/SE073+FZD_00)/S3C1A |
3 | (TEK30|TEK40)&BAA10 | + LL+(S8BKA+-L807A/+-(S8BKA/L8AAA)) |
4 | (VAU70|VAU60)&BAA20&VBJ10&VBY10 | + RL+S6AEA+S6PAA+(S6WEA/+-(S6WEA/S6UQA)) |
5 | BAA10&(VAU60|VAU70)&VBJ10&VBY10 | + LL+ S6AEA+S6PAA+(S6WEA/+-(S6WEA/S6UQA)) |
6 | (QAA50|QAA51)&(BAHM5&AAA87) | +_TCJ1+(L802A/+-(L802A/L8AAA/S230A)) |
7 | (KCG10&KAT00)&(BAG33&AAA87|BAG35&AAA87|BAG37&AAA87|BAGMXC&AAA87|BAGMR&AAA87) | +S9T9A+-S235A+_WC3B+(S3B4A/S3B5A/S382A/S3A3A/S381A) |
2) mapping table
AA feature | BB feature |
AAC10 | ECE+L8AAA |
AAF10 | (SE071/SE073+FZD_01) |
AAF30 | SE073+FZD_00 |
HAY10 | -S3C1A |
HAY20 | S3C1A |
BAA10 | LL |
TEK30 | S8BKA+-L807A |
TEK40 | -(S8BKA/L8AAA) |
BAA20 | RL |
VAU60 | -(S6WEA/S6UQA) |
VAU70 | S6WEA |
VBJ10 | S6AEA |
VBY10 | S6PAA |
QAA50 | -(L802A/L8AAA/S230A) |
QAA51 | L802A |
AAA87 | J05 |
BAHM5 | TCJ1 |
AAA87 | J05 |
BAG33 | WC3B+S3B4A |
BAG35 | WC3B+S3B5A |
BAG37 | WC3B+S382A |
BAGMXC | WC3B+S3A3A |
BAGMR | WC3B+S381A |
KCG10 | S9T9A |
KAT00 | -S235A |
3) 간단한 변환 Rule
** 두 회사의 배치 정보가 서로 다릅니다. AA회사의 배치 정보를 단순화 하고 메핑 테이블을 이용해 BB회사의 배치 정보로 바꿉니다. BB회사의 배치 정보도 중복제거와 재정렬을 합니다.
1.AA회사의 로직계산 부호의 우선순위에 따라 옵션조건을 재정렬하고 / 를 경계로 분리시킨다.
2.Feature code 와 로직 부호의 전환 및 upgrade
•매핑 테일블을 이용해 배치 정보를 바꿉니다.
•AA회사와 BB회사의 계산부호의 메핑 관계: & => + ; | => / ; ! => - ;
3.중복된 내용은 제외 한다. 중복된 값을 한번만 표현하고 가능하면 앞에 위치한다. / 를 연결부호로 옵션조건을 재정렬한다.
•-A도 한 개의 feature이다.
4. 옵션조건을 변화시킨다.
•A/-A인 경우, A/-A를 제외한다; A&-A인 경우, Error로 처리한다.
•A/(A&B) => A ; -(A/B) => -A+-B; -(A+B) => (-A/-B)
5. 3. 4. 항목을 반복하고 더 이상 분해시킬 수 없을 때까지 실행한다.
6. 옵션조건을 변화시킨다.
•최종 옵션조건 앞에 는+ 를 추가한다. (비고: + 로 시작한 경우 제외)
•/- 인 경우, /+- 로 수정해야 한다.
•(- 존재하면 안 된다. 괄호내에 옵션조건들의 위치를 조정하거나 – 를 밖으로 이동해도 된다. (-A/-B) => -(A+B)、(-A+-B) => -(A/B)、(-A+B) => (B+-A)
첫번째 할목 사럐)
1) | 를 기준으로 두개로 분해한다.
(AAC10&AAF10)&HAY10
AAF30&HAY10
2) 매핑 테이블에서 각 코드들은 전환한다. 또한 &, !, |의 표현식도 +, -, /으로 바꾼다.
ECE+L8AAA+ (SE071/SE073+FZD_01)+-S3C1A
SE073+FZD_00+-S3C1A
3) 전환후 정보중에서 중복된 내용은 한번만 표현한다. 가능하면 중복된 내용은 앞쪽에 위치한다. /를 이용해 재 정렬한다.
-S3C1A+((ECE+L8AAA+(SE071/SE073+FZD_01))/SE073+FZD_00)
4) 맨앞에 –가 올수 없으므로 +를 추가한다.
+-S3C1A+((ECE+L8AAA+(SE071/SE073+FZD_01))/SE073+FZD_00)
3번째 항목 사례)
1) 위와 동일
TEK30&BAA10
TEK40&BAA10
2) 위와 동일
S8BKA+-L807A+LL
-(S8BKA/L8AAA)+LL
3) LL값이 중복되니 한번만 사용
LL+(S8BKA+-L807A/-(S8BKA/L8AAA))
4) -(S8BKA/L8AAA)의 식을 다시 푼다.
LL+(S8BKA+-L807A/-S8BKA+-L8AAA)
5) -(S8BKA/L8AAA)으로 다시 묶고 /-는 허용하지 않으므로 /+- 로 변환
+ LL+(S8BKA+-L807A/+-(S8BKA/L8AAA))
감사합니다.