Activiti는 코드를 통해 흐름도를 생성합니다

1764 단어
activiti는 프로세스 디자이너를 통해 프로세스를 그릴 수 있는 것 외에도 코드를 통해 프로세스를 만들 수 있다.activiti의 프로세스 맵의 핵심 대상은 바로 Bpmn모델입니다. 이 Bpmn모델 대상을 생성하면 프로세스 맵은 OK입니다.예제 코드는 다음과 같습니다.
// bpmn 
  BpmnModel model = new BpmnModel();
  Process process = new Process();
  model.addProcess(process);
  process.setId("my-process");


// bpmn 
  process.addFlowElement(createStartEvent());
  process.addFlowElement(createUserTask("task1", "First task", "fred"));
  process.addFlowElement(createUserTask("task2", "Second task", "john"));
  process.addFlowElement(createEndEvent());


  process.addFlowElement(createSequenceFlow("start", "task1"));
  process.addFlowElement(createSequenceFlow("task1", "task2"));
  process.addFlowElement(createSequenceFlow("task2", "end"));


  // 2. BPMN 
  new BpmnAutoLayout(model).execute();
  
   task
protected UserTask createUserTask(String id, String name, String assignee) {
  UserTask userTask = new UserTask();
  userTask.setName(name);
  userTask.setId(id);
  userTask.setAssignee(assignee);
  return userTask;
}


// 
protected SequenceFlow createSequenceFlow(String from, String to) {
  SequenceFlow flow = new SequenceFlow();
  flow.setSourceRef(from);
  flow.setTargetRef(to);
  return flow;
}


protected StartEvent createStartEvent() {
  StartEvent startEvent = new StartEvent();
  startEvent.setId("start");
  return startEvent;
}


protected EndEvent createEndEvent() {
  EndEvent endEvent = new EndEvent();
  endEvent.setId("end");
  return endEvent;
}



위의 코드는 인터넷에서 찾은 것으로 코드 생성 프로세스맵이 사실 가장 번거로운 것은 노드의 포지셔닝 문제이다.코드 new Bpmn AutoLayout(모델).execute();원하는 노드만 생성하면 bpmn 대상을 생성할 수 있도록 자동으로 레이아웃해 줍니다.

좋은 웹페이지 즐겨찾기