주기. Excel 파일 가져오기
비즈니스 프로세스에서 주기를 사용합니다. Excel 파일에서 데이터를 읽습니다.
추가 프로세스를 이해하려면 이론으로 약간 벗어나 순환 원리를 이해해야 합니다. 이전에는 모든 프로세스가 앞으로만 진행되었습니다. 그들은 특정 포크( If-Else 및 Switch 블록에서)를 선택할 수 있지만 각 블록이 한 번만 실행된다는 것을 알고 있었습니다. 돌아갈 일은 없을 것입니다.
주기
주기는 특정 섹션을 여러 번 반복할 수 있는 기능을 제공합니다. 선택한 블록 시퀀스가 계속해서 실행되도록 프로세스가 생성됩니다. 루프 종료 조건이 충족될 때까지.
AppMaster 는 세 가지 다른 종류의 사이클을 사용할 수 있는 기능을 제공합니다. 그들의 작업 원리는 절대적으로 동일합니다. 루프를 종료하는 조건은 루프를 서로 구별하는 유일한 것입니다.
- Loop . 모든 사이클 중 가장 단순합니다. Times (Integer) 매개변수는 주어진 루프가 실행되어야 하는 횟수에 대한 고정 값을 설정합니다.
- While loop . 특정 조건이 충족될 때까지 실행되는 루프입니다. 이 조건은 Condition (Boolean) 매개변수에 지정됩니다. 각 루프의 시작 부분에서 Condition 값이 확인됩니다. True 이면 루프가 실행됩니다. False 이면 루프가 중지됩니다. Limit (Integer) 매개변수는 루프가 영원히 실행되지 않도록 루프의 반복 횟수에 대한 제한을 설정합니다. 도달하면 Condition 값에 관계없이 루프가 종료됩니다.
- For each loop 에 대해 . 배열과 함께 작동하도록 설계된 루프. 배열을 입력으로 사용하고 각 배열 요소에 대해 특정 작업을 수행할 수 있습니다. 배열에 있는 요소 수만큼 실행합니다.
각 주기에는 두 개의 출력 스트림이 있습니다.
- Loop Body . 루프 본체 자체. 필요한 횟수만큼 반복되는 그 과정.
- Completed . 루프가 종료되면 스레드가 실행됩니다. 루프가 완료된 후 다음에 수행할 작업을 지정합니다. 그건 그렇고, 초기 조건이 충족될 때까지 기다리지 않고 명령에 따라 모든 사이클을 완료할 수 있습니다. 이렇게 하려면 올바른 위치에 Break Loop 블록을 사용하면 됩니다. 스트림을 Completed 로 즉시 전송합니다.
Read XLSX File
xlsx 파일 분석을 위해 Read XLSX File 블록을 사용합니다. 동작 원리는 For each loop 블록과 거의 유사합니다. 테이블 파일을 문자열 배열로 나타냅니다. 그리고 각 행도 배열이지만 이미 주어진 행의 열 배열입니다.
xlsx 파일 자체도 비슷한 형식으로 제공됩니다. 첫 번째 열에는 섹션의 이름이 포함되고 두 번째 열에는 이 섹션에 포함된 정보가 포함됩니다. 동시에 우리는 정보가 쓰여진 라인을 미리 알지 못합니다. 임의의 위치에 나타날 수 있습니다. 이 예에서 약력은 두 번째 줄에 표시되고 로그인은 여덟 번째 줄에 표시되지만 작성되는 줄과 순서는 무엇이든 될 수 있습니다.
비즈니스 프로세스는 파일을 입력 매개변수로 수신하는 것으로 시작됩니다. 전송되는 것은 전체 파일이 아니라 파일 데이터 타입, 즉 파일 ID임을 유의하시기 바랍니다. 동일한 파일을 Read XLSX File 블록에 전달합니다.
이 경우 Each row 은 Loop Body 의 아날로그입니다. 즉, xlsx 파일에 있는 행 수만큼 루프가 실행됩니다. 동시에 각 주기마다 현재 처리 중인 행( Row number )과 이 행에 있는 열( Row columns )에 대한 정보를 받습니다.
우리의 임무는 각 행의 첫 번째 셀을 확인하는 것입니다. "Login" 또는 "Bio"라는 셀을 찾을 것으로 예상됩니다. 이렇게 하면 필요한 정보가 포함된 열을 찾았음을 이해할 수 있습니다.
이렇게 하려면 인덱스가 0인 Array Element 블록이 필요합니다. 이것이 문자열의 첫 번째 셀 내용을 얻는 방법입니다. 그런 다음 Switch 블록을 사용하여 원하는 일치(Login, Bio)를 찾습니다.
일치하는 항목이 없으면 루프는 다음 반복으로 이동하여 다음 행을 확인합니다. 발견되면 이 행의 두 번째 셀에 필요한 정보가 포함되어야 하며 이 정보를 얻기 위해 Array Element 블록을 다시(그러나 인덱스 1로) 사용해야 한다는 것을 이해합니다.
이 정보를 저장하는 일만 남습니다. 결국이 작업을 즉시 수행하지 않으면 사이클이 계속 진행되고 수신 된 데이터가 손실됩니다.
변수
이 상황에서 가장 좋은 해결책은 변수를 사용하는 것입니다. 그 의미는 특정 값이 한 블록에서 다른 블록으로 즉시 전송되지 않고 메모리에 저장되어 필요할 때 사용된다는 사실에 있습니다.
이를 위한 두 가지 블록이 있습니다.
- Variable 블록. 숫자, 문자열 또는 개체 배열이 될 수 있습니다. 이 블록 자체는 아무 것도 하지 않는다는 것을 이해하는 것이 중요합니다. 입력 매개변수가 없습니다. 그것은 단지 어떤 값을 쓰기 위해 메모리에 장소가 할당되었다는 사실을 알리는 역할을 할 뿐이며 나중에 다시 참조하고 이 값을 찾을 수 있습니다.
- Set Variable 블록은 변수에 새 값을 쓰도록 설계되었습니다.
우리의 경우 String 유형의 두 변수를 정의하고 찾은 값을 한 곳에서는 Login에, 두 번째 Bio에는 찾은 값을 기록합니다. 루프가 끝나면 이 변수의 값을 끝 블록으로 전달하기만 하면 됩니다.
이제 완성된 비즈니스 프로세스에 대한 끝점을 만들어 웹 응용 프로그램 프런트 엔드에서 사용할 수 있도록 할 때입니다.
최종 결과
결과적으로 비즈니스 프로세스는 다음과 같아야 합니다.
애플리케이션 생성을 완료하기 위한 마무리 작업이 있습니다. 프론트엔드 비즈니스 프로세스로 돌아가서 끝내자. 다음이 필요합니다.
- 서버에 저장할 xlsx 파일 모델을 전달합니다.
- 결과를 확장하고 파일 ID를 가져옵니다.
- 이 ID를 이전에 생성된 엔드포인트 POST /xlsx-data/ 전달합니다.
- 수신된 데이터를 사용하여 해당 필드에 표시합니다(또한 Disable 매개변수를 재설정하여 편집 가능성을 열어줌).
모든 것이 올바르게 완료되면 파일에서 정보를 로드한 후 최종 버전이 다음과 같아야 합니다.