diseño online de activiti - ¿Cómo diseñar y asociar formularios en Activiti 6.0?
Se recomienda echar un vistazo a las publicaciones técnicas relacionadas del blog de Coffee Rabbit:
Enlaces web
,
¿Los métodos de integración de activiti6 y activiti5 son los mismos?
1. La versión Activiti5.10 integra el módulo ActivitiModeler independiente original en ActivitiExplorer. muy conveniente El diseño se puede integrar a través de Modeler. Los modelos en el proceso se implementan directamente en el motor, y los modelos que se han implementado en el proceso también se pueden convertir en modelos para editar en Modeler.
En aplicaciones prácticas, existe la necesidad de que Modeler pueda integrarse en los sistemas empresariales para que lo utilicen los administradores, o que exista como parte de la plataforma BPM. Desafortunadamente, el funcionario no proporciona cómo integrar la documentación de Modeler.
2. Trabajo de integración
2.1 Descargar el código fuente
Primero necesitas descargar el código fuente de Github:
2.2 Copiar el archivo
Todos los archivos copiados están en el directorio activiti-webapp-explorer2.
Copia src/main/resources... al directorio raíz del código fuente del proyecto, asegurándote de que las clases compiladas estén en el directorio raíz
Copia src/main/ webapp Copie la api, el editor, el explorador y las bibliotecas al directorio de la aplicación web del proyecto (el mismo nivel que el directorio WEB-INF)
2.3 Agregar dependencias
Copia la api, el editor y el explorador y libs al directorio de aplicaciones web del proyecto (mismo nivel que el directorio WEB-INF)
2.3 Agregar dependencias
123456789101112131415161718192021222324
2.4 Agregar clases Java
Agregue una clase guardada en el proyecto para registrar algunas rutas REST.
1234567891011121314151617181920212223242526272829
paquete;
import;import;import;import;import;import;import;import;import;
publicclassExplorerRestApplicationextendsActivitiRestApplication{
publicExplorerRestApplication(){__super();_}_/**_* Crea un Restlet raíz que recibirá todas las llamadas entrantes._*/_@Override_publicsynchronizedRestletcreateInboundRoot(){__Routerrouter= newRouter(getContext());__();__(router) ;__(router);__JsonpFilterjsonpFilter=newJsonpFilter(getContext());__(router);__ returnjsonpFilter;_}
}
2.5 Configuración
En Agregue la siguiente configuración al archivo:
12345678910111213141516
< ! --Catchallservicerequests-->
Controlador 2.6
Utilice SpringMVC para crear un paquete simple, también puede utilizar otras implementaciones de MVC.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 62 636465666768697071727374757677787980818283848586878888990919 29394959697989910010110210310410510610710810911011111211311411 5116117118119120121122123124125126127128129130131132133134135 1361371381391401411421431441451461471481491501511521531541551 5 6157158159160161162163
paquete;
importar;importar;
importar;importar;
importar;importar; importar;importar;importar;importar;importar;importar.
/***Controlador del modelo de proceso***@authorhenryyan**/@Controller@RequestMapping(value="/workflow/ model") publicclassModelController{
protectedLoggerlogger=(getClass();
@ Autowired_RepositoryServicerepositoryService;
/**_*ModelList_**/_@RequestMapping(valor ="lista ")_publicModelAndViewmodelList(){___ModelAndViewmav=newModelAndView("workflow/model-list");__List /**_ *create model_**/_@RequestMapping(value="create")_publicvoidcreate(@RequestParam("name")Stringname,@RequestParam("key")Stringkey,@ RequestParam("descripción ")Stringdescription ,_____HttpServletRequestrequest,HttpServletResponseresponse){__try{___ ObjectMapperobjectMapper=newObjectMapper();___ObjectNodeeditorNode=();___("id", "canvas");___("resourceId", "canvas");___ ObjectNodestencilSetNode=() ;___( "espacio de nombres", "#");___("stencilset",stencilSetNode);___ModelmodelData=(); ObjectNodemodelObjectNode=();___(_NAME,nombre);___(_REVISION,1 );___descripción =(descripción ption);___(_DESCRIPTION,descripción);___()).___(nombre);___((clave)); (modelData);___(),().getBytes("utf- 8")); (()+"/service/editor?id="+());__}catch(Exceptione){___ ("Error al crear el modelo:",e); __}_} /**_Implementar proceso basado en Model_**/_@RequestMapping(value="deploy/{modelId}")_publicStringdeploy(@PathVariable("modelId" )StringmodelId,RedirectAttributesredirectAttributes){ __try{___ModelmodelData=(modelId); ___ObjectNodemodelNode=(ObjectNode) newObjectMapper().readTree(()); ___byte[]bpmnBytes=null BpmnModelmodel=newBpmnJsonConverter().convertToBpmnModel(modelNode); newBpmnXMLConverter().convertToXML(modelo); StringprocessName=()+"." ;___Deploymentdeployment=().name()).addString(processName,newString(bpmnBytes)).deploy();___ ("mensaje", "Implementación exitosa, ID de implementación="+());___}catch( Exceptione){___("Error al implementar el proceso según el modelo: modelId={}",modelId,e);__}__return "redirect:/workflow/model/list";_} /**_* Exportar el archivo xml del modelo_**/_@ RequestMapping(value="export/{modelId}")_publicvoidexport ( @PathVariable("modelId")StringmodelId,HttpServletResponseresponse){__try {___ModelmodelData=(modelId);___BpmnJsonConverterjsonConverter=newBpmnJsonConverter();___JsonNodeeditorNode=newObjectMapper().readTree((()));___BpmnModelbpmnModel=(editorNo de);___Bpmn XMLConverterxmlConverter= newBpmnXMLConverter( );___byte[]bpmnBytes=( bpmnModel); ByteArrayInputStreamin=newByteArrayInputStream(bpmnBytes);___(in,());___Stringfilename=().getId() +"." ;___("Content-Disposition", "attachment;filename="+filename);___();___();___}catch(Exceptione){___("Error al exportar el archivo xml del modelo: modelId= {}",modelId,e) ;___} } ##2.7 Notas Si está utilizando el motor proxy Spring, Y si hay archivos en el proyecto (ya sea en los directorios principal/recursos o prueba/recursos), agregue los siguientes parámetros de configuración para el motor; de lo contrario, se devolverá **204* al leer datos en la página de edición del Modelador. se abre.* Código de estado. El nombre del motor predeterminado es default, () Al realizar la consulta, se recuperarán primero los recursos/principal y luego los recursos/prueba y los archivos. Por lo tanto, cuando los recursos/principal no pueden monitorear el archivo especificado, el motor se utilizará como el objeto del motor de la aplicación web. , lo que dará como resultado dos motores, así que cambie el nombre del motor al "predeterminado" no predeterminado. ##3. Solución al problema de los caracteres chinos confusos Agregar parámetros en los parámetros de JVM: >-=UTF-8-=UTF- 8 p> **Materiales de referencia**: [Problema que no se puede implementar cuando el proceso diseñado en ActivitiModeler contiene un número impar de caracteres chinos]( ##4. Captura de pantalla p> ActivitiModeler se ha integrado en la última versión de kft-activiti-demo (1.7.0). Puede acceder a él en línea o descargar el código fuente para aprender a configurarlo. Inicia sesión. [ ! [Capturas de pantalla de los efectos en kft-activiti-demo](/files/2013/03/)! [Capturas de pantalla de los efectos en kft-activiti-demo](/files/2013/03 /)
Al crear una nueva tarea de usuario de sesión, puede agregar un nuevo formulario, así como scripts, estilos y WebAPI; Al eliminar una tarea de usuario de sesión, puede ignorarla en este momento porque debe considerarla en la versión anterior durante el proceso de definición, y el formulario correspondiente aún debe conservarse y no se puede modificar, por ejemplo. , se agregan dos campos nuevos en la sesión A y se reducen dos campos en la sesión B, luego tanto A como B. Cada sesión recrea el formulario, los scripts, los estilos y la WebAPI. Porque el formulario cambia, el negocio cambia y el SQL. (tabla) también cambia.
epub "Activiti in Action". Para descargar el texto completo y leerlo en línea, consulte Baidu Netdisk Cloud Resources
"Activiti Practical Combat" (Yan Honglei). ) Descarga del libro electrónico Netdisk para lectura gratuita en línea
Enlace:
Código de extracción: xdni
Título del libro: "Activiti in Action"
Puntuación de Douban: 7,2
Autor: Yan Honglei