/**
* 查询 客户端分页
* @return
*/
@RequestMapping(value="/selectAll")
@ResponseBody
public String selectAll(){
List resultList = repositoryService.createModelQuery().orderByCreateTime().desc().list();
JSONObject resultJson = new JSONObject();
resultJson.put("data", resultList);
return resultJson.toString();
}
/**
* 新增
* @return
*/
@RequestMapping(value = "/create",method = RequestMethod.POST)
public void getEditor(
@RequestParam("description") String description,
@RequestParam("name") String name,
@RequestParam("key") String key,
HttpServletRequest request, HttpServletResponse response){
try {
ObjectMapper objectMapper = new ObjectMapper();
ObjectNode editorNode = objectMapper.createObjectNode();
editorNode.put("id", "canvas");
editorNode.put("resourceId", "canvas");
ObjectNode stencilSetNode = objectMapper.createObjectNode();
stencilSetNode.put("namespace", "http://b3mn.org/stencilset/bpmn2.0#");
editorNode.put("stencilset", stencilSetNode);
Model modelData = repositoryService.newModel();
ObjectNode modelObjectNode = objectMapper.createObjectNode();
modelObjectNode.put(ModelDataJsonConstants.MODEL_NAME, name);
modelObjectNode.put(ModelDataJsonConstants.MODEL_REVISION, 1);
description = StringUtils.defaultString(description);
modelObjectNode.put(ModelDataJsonConstants.MODEL_DESCRIPTION, description);
modelData.setMetaInfo(modelObjectNode.toString());
modelData.setName(name);
modelData.setKey(StringUtils.defaultString(key));
repositoryService.saveModel(modelData);
repositoryService.addModelEditorSource(modelData.getId(), editorNode.toString().getBytes("utf-8"));
System.out.println("跳转页面");
response.sendRedirect(request.getContextPath() + "/service/editor?id=" + modelData.getId());
} catch (Exception e) {
System.out.println("创建模型失败");
}
}
/**
* 批量删除
* @param ids
* @param request
* @return
*/
@RequestMapping(value = "deleteByIds")
@ResponseBody
public String deleteByIds(String[] ids,HttpServletRequest request) {
JSONObject result = new JSONObject();
for(String id : ids){
repositoryService.deleteModel(id);
}
result.put("msg", "删除成功");
result.put("type", "success");
return result.toString();
}
<a class="btn btn-success" href="/ActivitiDemo5/service/editor?id='+row.id+'" target="_blank">编辑a>
/**
* 导出model的xml文件
*/
@RequestMapping(value = "export/{modelId}")
public void export(@PathVariable("modelId") String modelId, HttpServletResponse response) {
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
try {
Model modelData = repositoryService.getModel(modelId);
BpmnJsonConverter jsonConverter = new BpmnJsonConverter();
//获取节点信息
byte[] arg0 = repositoryService.getModelEditorSource(modelData.getId());
JsonNode editorNode = new ObjectMapper().readTree(arg0);
//将节点信息转换为xml
BpmnModel bpmnModel = jsonConverter.convertToBpmnModel(editorNode);
BpmnXMLConverter xmlConverter = new BpmnXMLConverter();
byte[] bpmnBytes = xmlConverter.convertToXML(bpmnModel);
ByteArrayInputStream in = new ByteArrayInputStream(bpmnBytes);
IOUtils.copy(in, response.getOutputStream());
// String filename = bpmnModel.getMainProcess().getId() + ".bpmn20.xml";
String filename = modelData.getName() + ".bpmn20.xml";
response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(filename, "UTF-8"));
response.flushBuffer();
} catch (Exception e){
PrintWriter out = null;
try {
out = response.getWriter();
} catch (IOException e1) {
e1.printStackTrace();
}
out.write("未找到对应数据");
e.printStackTrace();
}
}
/**
* 部署
*/
@RequestMapping(value = "deploy",method=RequestMethod.POST)
@ResponseBody
public String deploy(@RequestParam("modelId") String modelId, HttpServletRequest request) {
JSONObject result = new JSONObject();
try {
Model modelData = repositoryService.getModel(modelId);
ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(repositoryService.getModelEditorSource(modelData.getId()));
byte[] bpmnBytes = null;
BpmnModel model = new BpmnJsonConverter().convertToBpmnModel(modelNode);
bpmnBytes = new BpmnXMLConverter().convertToXML(model);
String processName = modelData.getName() + ".bpmn20.xml";
Deployment deployment = repositoryService.createDeployment().name(modelData.getName()).addString(processName, new String(bpmnBytes,"utf-8")).deploy();
result.put("msg", "部署成功");
result.put("type", "success");
} catch (Exception e) {
result.put("msg", "部署失败");
result.put("type", "error");
e.printStackTrace();
}
return result.toString();
}
RepositoryService可能是使用Activiti引擎时最先接触的服务。
它提供了管理和控制发布包和流程定义的操作。
这里不涉及太多细节,流程定义是BPMN 2.0流程的java实现。
它包含了一个流程每个环节的结构和行为。
发布包是Activiti引擎的打包单位。
一个发布包可以包含多个BPMN 2.0 xml文件和其他资源。
开发者可以自由选择把任意资源包含到发布包中。
既可以把一个单独的BPMN 2.0 xml文件放到发布包里,也可以把整个流程和相关资源都放在一起。
(比如,'hr-processes'实例可以包含hr流程相关的任何资源)。
可以通过RepositoryService来部署这种发布包。
发布一个发布包,意味着把它上传到引擎中,所有流程都会在保存进数据库之前分析解析好。
从这点来说,系统知道这个发布包的存在,发布包中包含的流程就已经可以启动了。
除此之外,服务可以
查询引擎中的发布包和流程定义。
暂停或激活发布包,对应全部和特定流程定义。 暂停意味着它们不能再执行任何操作了,激活是对应的反向操作。
获得多种资源,像是包含在发布包里的文件, 或引擎自动生成的流程图。
获得流程定义的pojo版本, 可以用来通过java解析流程,而不必通过xml。
List resultList = repositoryService.createModelQuery().orderByCreateTime().desc().list();
分页查询
List resultList = repositoryService.createModelQuery().listPage(0, 10);
使用原生sql查询
List resultList = repositoryService.createNativeModelQuery().sql("sql").list();
等等
3. 有什么了解的再继续补充