안녕하세요. 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을 시작할건지도 결정이 되지 않아서 작동이 될지도 의문입니다. 이거에 대한 명쾌한 답이 있을까요? 동작 원리를 이해하고 싶습니다.