Search in sources :

Example 1 with FlowableConflictException

use of com.plumdo.flow.exception.FlowableConflictException in project plumdo-work by wengwh.

the class ProcessInstanceSuspendResource method suspendProcessInstance.

@RequestMapping(value = "/process-instance/{processInstanceId}/suspend", method = RequestMethod.PUT, name = "流程实例挂起")
@ResponseStatus(value = HttpStatus.OK)
public void suspendProcessInstance(@PathVariable String processInstanceId, @RequestBody(required = false) ProcessInstanceActionRequest actionRequest) {
    ProcessInstance processInstance = getProcessInstanceFromRequest(processInstanceId);
    if (processInstance.isSuspended()) {
        throw new FlowableConflictException("Process instance with id '" + processInstance.getId() + " ' is already suspend");
    }
    runtimeService.suspendProcessInstanceById(processInstance.getId());
}
Also used : ProcessInstance(org.flowable.engine.runtime.ProcessInstance) FlowableConflictException(com.plumdo.flow.exception.FlowableConflictException) ResponseStatus(org.springframework.web.bind.annotation.ResponseStatus) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Example 2 with FlowableConflictException

use of com.plumdo.flow.exception.FlowableConflictException in project plumdo-work by wengwh.

the class ModelResource method createModel.

@RequestMapping(value = "/model", method = RequestMethod.POST, produces = "application/json", name = "模型创建")
@ResponseStatus(value = HttpStatus.CREATED)
@Transactional(propagation = Propagation.REQUIRED)
public ModelResponse createModel(@RequestBody ModelRequest modelRequest) {
    Model model = repositoryService.newModel();
    model.setCategory(modelRequest.getCategory());
    model.setKey(modelRequest.getKey());
    model.setMetaInfo(modelRequest.getMetaInfo());
    model.setName(modelRequest.getName());
    model.setVersion(modelRequest.getVersion());
    model.setTenantId(modelRequest.getTenantId());
    repositoryService.saveModel(model);
    ObjectMapper objectMapper = new ObjectMapper();
    ObjectNode editorNode = objectMapper.createObjectNode();
    editorNode.put(EditorJsonConstants.EDITOR_STENCIL_ID, "canvas");
    editorNode.put(EditorJsonConstants.EDITOR_SHAPE_ID, "canvas");
    // 设置流程定义初始化的key和name
    ObjectNode propertieNode = objectMapper.createObjectNode();
    if (StringUtils.isNotEmpty(model.getKey())) {
        propertieNode.put(StencilConstants.PROPERTY_PROCESS_ID, model.getKey());
    } else {
        propertieNode.put(StencilConstants.PROPERTY_PROCESS_ID, "model_" + model.getId());
    }
    propertieNode.put(StencilConstants.PROPERTY_NAME, model.getName());
    editorNode.set(EditorJsonConstants.EDITOR_SHAPE_PROPERTIES, propertieNode);
    ObjectNode stencilSetNode = objectMapper.createObjectNode();
    stencilSetNode.put("namespace", "http://b3mn.org/stencilset/bpmn2.0#");
    editorNode.set("stencilset", stencilSetNode);
    try {
        repositoryService.addModelEditorSource(model.getId(), editorNode.toString().getBytes("utf-8"));
    } catch (UnsupportedEncodingException e) {
        throw new FlowableConflictException("create model exception :" + e.getMessage());
    }
    return restResponseFactory.createModelResponse(model);
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) Model(org.flowable.engine.repository.Model) UnsupportedEncodingException(java.io.UnsupportedEncodingException) FlowableConflictException(com.plumdo.flow.exception.FlowableConflictException) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) ResponseStatus(org.springframework.web.bind.annotation.ResponseStatus) RequestMapping(org.springframework.web.bind.annotation.RequestMapping) Transactional(org.springframework.transaction.annotation.Transactional)

Example 3 with FlowableConflictException

use of com.plumdo.flow.exception.FlowableConflictException in project plumdo-work by wengwh.

the class ProcessInstanceActivateResource method activateProcessInstance.

@RequestMapping(value = "/process-instance/{processInstanceId}/activate", method = RequestMethod.PUT, name = "流程实例激活")
@ResponseStatus(value = HttpStatus.OK)
public void activateProcessInstance(@PathVariable String processInstanceId, @RequestBody(required = false) ProcessInstanceActionRequest actionRequest) {
    ProcessInstance processInstance = getProcessInstanceFromRequest(processInstanceId);
    if (!processInstance.isSuspended()) {
        throw new FlowableConflictException("Process instance with id '" + processInstance.getId() + " ' is already active");
    }
    runtimeService.activateProcessInstanceById(processInstance.getId());
}
Also used : ProcessInstance(org.flowable.engine.runtime.ProcessInstance) FlowableConflictException(com.plumdo.flow.exception.FlowableConflictException) ResponseStatus(org.springframework.web.bind.annotation.ResponseStatus) RequestMapping(org.springframework.web.bind.annotation.RequestMapping)

Aggregations

FlowableConflictException (com.plumdo.flow.exception.FlowableConflictException)3 RequestMapping (org.springframework.web.bind.annotation.RequestMapping)3 ResponseStatus (org.springframework.web.bind.annotation.ResponseStatus)3 ProcessInstance (org.flowable.engine.runtime.ProcessInstance)2 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 Model (org.flowable.engine.repository.Model)1 Transactional (org.springframework.transaction.annotation.Transactional)1