2016-09-02 6 views
0

WorkDefinitions.wid 파일에 등록한 일부 매개 변수를 사용하여 사용자 정의 WorkItem을 만들었습니다. 그런 다음 비즈니스 프로세스에서 전체 프로세스에 대한 변수 정의를 작성하고 내 사용자 정의 WorkItem의 WD.wid에서 BP에 작성된 변수 정의를 참조합니다.jbpm-WorkBench의 BPMN 프로세스에서 WorkItem의 매개 변수에 도달하는 방법

WorkItem은 프로세스를 시작한 후 양식에서 매개 변수를 가져 오는 코드를 실행합니다. 이 목적을 위해 나는 getParameter() - method; 다음과 같이 그것은 같습니다

public void executeWorkItem(WorkItem workItem, WorkItemManager manager) { 

String payload = workItem.getParameter("id") + ... ; 
... 
manager.completeWorkItem(workItem.getId(), null); 
} 

모든 것이 보이는 WorkItem에서 성공적으로 실행됩니다 원인, 작품을 좋아 내가 (BP에서의 workItem을 실행 한 후 서버 측에서) 결과를 얻을; 하지만 입력 된 매개 변수로 POST 메서드를 실행 한 후 Response를 얻어야합니다. 코드에서 응답 본문에서 매개 변수를 가져온 새 변수를 만들었고 순수한 코드를 BPMN 프로세스없이 실행할 때 IDE 콘솔에서 결과를 볼 수 있지만이 변수를 WorkItem에 등록해야만 사용할 수 있습니다. 그것은 내 BP 프로세스의 다음 태스크를위한 것입니다.

그래서 내 질문은 : 뭔가 getParameter() - 메서드, 비슷한 있지만 setParameter() 같은 무엇입니까? WorkItem에서 어떻게 등록 할 수 있습니까? 그리고 jbpm에서 BProcess 내의 매개 변수/변수를 가져 오거나 얻을 수있는 방법은 무엇입니까?

대단히 감사합니다!

답변

1

WorkItemManager의 Javadoc을보고 completeWorkItem 메서드의 매개 변수를 참조하십시오. 결과를지도에 전달할 수 있습니다. 그런 다음 해당 값을 실행중인 작업의 출력 매개 변수로 가져와 다음 프로세스에서 사용할 수 있도록 일부 프로세스 변수에 매핑 할 수 있습니다.

+0

예, 오늘도 completWorkItem()의 두 번째 매개 변수로 null 대신 HashMap을 넣으려고했지만 BP- 모델 내에서이 변수에 어떻게 도달 할 수 있습니까? .wid 파일에있는 HashMap-key의 이름을 다른 모든 매개 변수로 WorkItem에 등록해야합니까?전체 BProcess의 변수 정의에이 매개 변수에 대한 새 변수를 작성하고 출력 매개 변수로 WorkItem-Node에서이 변수를 참조해야합니까? 이 프로세스를 설명해 주시겠습니까? 내 프로세스를 실행 한 후에이 변수가 여전히 비어 있습니다. – user3467471

+1

KIE Workbench에서 작업 항목 정의를 생성하면 ** 결과 ** 섹션에서 ** Result ** 변수 ('java.util.Map')로 코드를 자동 생성합니다. 나는 당신이 당신의 출력 매개 변수를 얻을 수 있다고 믿는다. (비록 시도하지는 않았지만). 이 변수를 일부 프로세스 변수에 맵핑하고 나중에 일부 태스크에서 액세스해야합니다. – livthomas

+0

사실 그것은 자동으로 생성되는 것이 아니라 결과와 함께 올바른 지점입니다 !!! – user3467471

0

어떤 버전을 사용하는지 모르지만 jBPM 6.3의 경우 다른 실행 메소드 정의로 사용자 정의 java 작업 항목을 정의하여 동일한 작업을 수행했습니다. 나에게는 다음과 같습니다이 사용

public Map<String, Object> execute(WorkItem workItem) throws Exception { 
    Map<String, Object> result = new HashMap<String, Object>(); 
    result.put("outputparam", "hello world"); 
    return result; 
} 

, 내 사용자 정의 서비스 노드에 대한 워크 플로우 프로세스의 데이터 출력 할당으로 "outputparam"를 참조 할 수 있습니다.

+0

죄송합니다. 지금은 확인할 수 없습니다.이 메서드는 클래스 구현 메서드 (execute())를 참조하거나 자체 생성 메서드 일뿐입니다. 자체 생성 된 경우 executeWorkItem 내에서 정적으로 사용해야합니까? 왜냐하면 나는 오늘 같은 것을 시도했기 때문에 HashMap을 의미하지만, 대신 별도의 반환 방법으로 사용하는 대신 executeWorkItem (..) 내에 HashMap을 추가 한 다음 null 대신 completeWorkItem (..)을 추가했습니다. 다음과 같습니다 : Map params = new HashMap <>(); params.put (..); manager.completeWorkItem (workItem.getId(), params); – user3467471

+0

그런 다음 내 BProcess 내에서이 항목에 접근하려고했습니다. Wid-file 내 CustomWorkItem에 의해 HashMap의 키 - 이름도 등록되었습니다. 그러나이 변수에 대한 결과는 workItem - task (BP-Model 내부)에서 출력하도록 설정하고 변수 정의에서이 필드에 대해 특수하게 작성된 변수를 참조한 후에도 아무런 결과도 얻지 못합니다. 그리고 6.4 버전을 사용합니다. – user3467471

+0

아 좋아, 6.4가 다릅니다. 6.3에서는 executeWorkitem (...) 대신 execute (...) 메소드가 필요하며 completeWorkItem으로 전달하는 대신 맵을 리턴합니다. 프로세스 정의 측면에서 반환 된 값의 사용법은 동일합니다. – mikereem