Red de conocimiento informático - Computadora portátil - diseño online de activiti - ¿Cómo diseñar y asociar formularios en Activiti 6.0?

diseño online de activiti - ¿Cómo diseñar y asociar formularios en Activiti 6.0?

Cómo integrar el editor de procesos activiti6 en su propio proyecto

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

__ &__activiti-explorer__5.14______vaadin______ ________ ______<artifactid>dcharts-widget______________< exclusion>______<artifactid>activiti-simple-workflow ______ ______</dependency>____activiti-modeler__5.14

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

__RestletServlet____ ____< ! --Applicationclassname-->__________

< ! --Catchallservicerequests-->__RestletServlet__

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");__Listlist=().list();__("list",list);__returnmav;_}

/**_ *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

**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

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 /) en Activiti ¿Cómo diseñar y asociar formularios en 6.0?

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