UiPath Spring 연동 질문

안녕하세요. UiPath를 접한 지 이틀째 되는 초보입니다.
현재 전정부와 넥사크로플랫폼을 사용하고 있는 중인데
UiPath로 짠 프로그램을 웹페이지에서 버튼을 클릭하면 동작이 되게 구현을 해보고 싶어 chatgpt의 힘을 빌려 다음과 같은 코드를 짰습니다.
[
현재 UiPath 체험판을 사용하고 있고
DefaultTenant 오케스트레이터에는 한개의 프로세스를 게시해둔 상태입니다.
]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Service;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import framework.core.base.DefaultService;

@Service
public class [서비스명] extends DefaultService{

// Orchestrator 인증
public String authenticateToOrchestrator() throws IOException {
    String url = "https://cloud.uipath.com/[나의URL]/api/Account/Authenticate";

    // 요청 바디 생성
    Map<String, String> authRequest = new HashMap<>();
    authRequest.put("tenancyName", "DefaultTenant");
    authRequest.put("usernameOrEmailAddress", "[나의이메일]");
    authRequest.put("password", "[나의비밀번호]");

    // HttpURLConnection 설정
    URL obj = new URL(url);
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    con.setRequestMethod("POST");
    con.setRequestProperty("Content-Type", "application/json; utf-8");
    con.setDoOutput(true); // POST 요청으로 전송할 준비

    // 요청 바디 전송
    ObjectMapper objectMapper = new ObjectMapper();
    String jsonInputString = objectMapper.writeValueAsString(authRequest);
    try(OutputStream os = con.getOutputStream()) {
    	byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
    	os.write(input, 0, input.length);

    	System.out.println("작동중1?");
    }

    // 응답 수신
    int responseCode = con.getResponseCode();
    if (responseCode == HttpURLConnection.HTTP_OK) {
    	try (BufferedReader br = new BufferedReader(
    			new InputStreamReader(con.getInputStream(), StandardCharsets.UTF_8))) {
    		StringBuilder response = new StringBuilder();
    		String responseLine;
    		while ((responseLine = br.readLine()) != null) {
    			response.append(responseLine.trim());
    		}

    		// JSON 파싱 후 JWT 토큰 반환
    		JsonNode jsonNode = objectMapper.readTree(response.toString());

    		return jsonNode.get("result").asText(); // JWT 토큰 반환
    	}
    } else {
    	throw new IOException("Failed to authenticate. Response code : " + responseCode);
    }
}

// Orchestrator Job 시작
public boolean startUiPathJob(String authToken, String processKey) throws IOException {
String url = “UiPath”;

    // 요청 바디 생성
    Map<String, Object> startInfo = new HashMap<>();
    startInfo.put("ReleaseKey", processKey);
    startInfo.put("Strategy", "Specific");
    startInfo.put("NoOfRobots", 1); // 로봇 수 지정

    Map<String, Object> startJobRequest = new HashMap<>();
    startJobRequest.put("startInfo", startInfo);

    // HttpURLConnection 설정
    URL obj = new URL(url);
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    con.setRequestMethod("POST");
    con.setRequestProperty("Content-Type", "application/json; utf-8");
    con.setRequestProperty("Authorization", "Bearer " + authToken);
    con.setDoOutput(true);

    // 요청 바디 전송
    ObjectMapper objectMapper = new ObjectMapper();
    String jsonInputString = objectMapper.writeValueAsString(startJobRequest);
    try (OutputStream os = con.getOutputStream()) {
    	byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
    	os.write(input, 0, input.length);
    }

    // 응답 수신
    int responseCode = con.getResponseCode();
    return responseCode == HttpURLConnection.HTTP_OK;

}

}


여기서 질문을 드립니다.

현재 토큰을 발급받는 Orchestrator 인증 부분에서 연결이 안되고 403 응답코드를 발생시키고 있습니다. 왜 인증이 되지 않는지에 대해 알고 싶고

또한 API 연동을 어떻게 해야 하는지 자세히 알고 싶습니다.

전문가분들의 조언을 구합니다. 도와주세요 ㅜㅜㅜ

그리고 Orchstrator Job 시작 부분도 어떤 Job을 시작할건지도 결정이 되지 않아서 작동이 될지도 의문입니다. 이거에 대한 명쾌한 답이 있을까요? 동작 원리를 이해하고 싶습니다.

궁금한게 있어서 먼저 문의 드립니다.

-UiPath로 짠 프로그램을 웹페이지에서 버튼을 클릭하면 동작이 되게 구현을 해보고 싶어 chatgpt의 힘을 빌려 다음과 같은 코드를 짰습니다.

UiPath 라는 툴을 통해 웹 클릭 을 할 수 있는데, 위처럼 프로그램 소스 코드를 왜 따로 구현 하셨는지 궁금합니다

-UiPath 사이트에서 오케스트레이터 관련 교육 동영상이 있습니다. 참고하시면 좋을 것 같아요.
그리고 UiPath swagger 라는 api관련 테스를 해볼수 있는 사이트가 있습니다. 여기서 다양한 작업 테스트 해보시면 좋을 것 같아요

아 현재 오케스트레이터와 API 연동을 통해 startJobs를 실행시키는 방법을 찾아보고 있었습니다.
따라서 소스 코드를 따로 구현한 이유는 API 방식으로 오케스트레이터의 Jobs endpoint와 연결을 하기 위해 chatgpt가 하라는 대로 했던 구현이었습니다.
이 코드는 스프링으로 API연결을 통해 계정인증을 하는 작업을 하는 방법 인줄 알고 실행을 했는데 2019년부터인가 현재 이 인증 방식이 필요 없다는 것을 알게 되었습니다.

현재 공부를 하며 궁금한 내용이 있는데

  1. Robot 작업의 릴리즈 키를 구했습니다.
  2. StartJobs API를 통해
Post 방식으로 https://cloud.uipath.com/오케스트레이터/테넌트/orchestrator_/odata/Jobs/UiPath.Server.Configuration.OData.StartJobs

{
  "startInfo": {
    "ReleaseKey": "로봇 릴리즈 키 id",
		"Strategy": "Specific",
		"RobotIds": [203328],
		"NoOfRobots": 0,
		"JobsCount": 0,
    "Source": "Manual",
		"InputArguments": "{}"
  }
}

body에 다음과 같은 json 형태로 데이터를 전송했더니

{
“message”: “Some of the robots provided don’t exist.”,
“errorCode”: 1002,
“traceId”: “00-de1bf05a9cbac6b545864a5a4c80d7e6-49c679834b4e3498-00”
}
이런 에러가 뜨고 있는 상태라

  1. 로봇 Id를 새롭게 찾아보고자 합니다.(로봇 id는 어떤걸 넣으면 되는지 궁금하고)
  2. 혹시 로봇 id가 문제가 아닌 다른 문제가 있다면 더욱더 전문가님들의 조언을 구하고 싶고
  3. 전체적인 프로세스가 맞는지 조언을 받고 싶습니다.

읽어주셔서 감사합니다!