jbpm rest api 호출시 파라미터 전달 방법
파라미터는 키벨류 형식으로 전달하는데 앞에 map_ 를 붙혀서 map_key=value 형태로 전달 되며
프로세스에서 변수를 total로 정했을때 map_total=5000 처럼 전달한다.
jbpm 문서 17.1.1.3.에 위에 내용을 나타내고 있다.
jbpm rest api 호출시 파라미터 전달 방법
파라미터는 키벨류 형식으로 전달하는데 앞에 map_ 를 붙혀서 map_key=value 형태로 전달 되며
프로세스에서 변수를 total로 정했을때 map_total=5000 처럼 전달한다.
jbpm 문서 17.1.1.3.에 위에 내용을 나타내고 있다.
jbpm에서는 해당 정보를 가지고 오기위해 아래의 rest api를 제공하고 있다. 참고로 아래 url은 오픈소스 jbpms에서 url이고 레드햇 버전은 /jbpm-console/을 /business-central/로 수정해서 호출해야 된다
프로세스 이미지정보 가지고 오기: {server}/jbpm-console/rest/runtime/{deploymentId}/process/{processDefId}/image 진행상태 표시한 이미지 정보 가지고 오기: {server}/jbpm-console/rest/runtime/{deploymentId}/process/{processDefId}/image/{procInstId}
하지만 호출하면 에러가 나올것이다. 우리가 bpmn을 그리면 프로세스 모양이 저장되는데 기본으로 아래 옵션이 꺼져있어서 파일을 못찾는 에러가 난다. 그럼 해당 옵션을 수정해 주면 되는데 파일 경로는
jboss EAP 디플로이 된 폴더에서 jbpm-console.war/org.kie.workbench.KIEWebapp/profiles/jbpm.xml을 열고
<storesvgonsave enabled="false"/>
위에 내용을 아래의 내용으로 수정후에 서버 재기동 후 호출하면 정상적으로 나올것이다.
<storesvgonsave enabled="true"/>
아래는 jqurey로 rest api 호출 한 것이다.
var getSvgProcessImg = function() {
$.ajax({
method : "GET",
async : false,
url : '/rest/runtime/{deploymentId}/process/{processDefId}/image/{procInstId}',
beforeSend : function(xhr) {
//btoa(사용자ID + ":" + 패스워드)
xhr.setRequestHeader('Authorization', 'Basic '+ btoa("jboss" + ":" + "1234"));
},
complete : function(response) {
$('#output').html(response.responseText);
},
error : function() {
$('#output').html('Bummer: there was an error!');
}
});
사용법
maven 빌드후에 jbpm 워크밴치 화면으로가서 메뉴 Authoring -> Artifact Repository 로 이동후 jar파일 업로드
프로젝트 생성 후 Tools -> Project Editor에서 왼쪽 Project Settings 메뉴를 Dependencies로 변경
Add from repository버튼을 클릭후에 내가 업로드한 jar파일을 추가 후 저장
다시 Tools -> Project Editor 화면으로 가서 Project Settings 메뉴를 Knowledge base and sessions으로 선택
Add 버튼을 클릭해서 새로운 knowledge base 생성한다.
Equals Behavior는 Identity Event Processing Mode는 Stream
Knowledge Sessions는 새로 추가후에 type=”stateful” default=”true” clockType=”realtime” 으로 선택
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<kbase name="mykbase" default="true" eventProcessingMode="stream" equalsBehavior="identity">
<ksession name="mykasession" type="stateful" default="true" clockType="realtime">
<workItemHandlers>
<workItemHandler type="kr.co.killers.jbpm.customWorkItemHandler.HelloWorkItemHandler" name="HelloWorkItemHandler"/>
</workItemHandlers>
</ksession>
</kbase>
</kmodule>
WorkDefinitions.wid를 클릭해서 아래 내욜을 추가
[ “name” : “HelloWorkItemHandler”, “displayName” : “Hello World!”, “icon” : “defaultservicenodeicon.png” ]
이제 bpmn을 생성시켜서 확인
이내용은 이블로그를 참고여기
위에 내용으로 구현한 소스는 아래의 저장소에 있다. github.