Usando React Forms con Tasklist Camunda

La lista de tareas de Camunda es excelente cuando tiene tareas personalizadas y no desea usar o crear su propia soluci贸n. Los formularios integrados proporcionan mucha flexibilidad al dise帽ar interfaces de usuario. En los 煤ltimos a帽os, React se ha convertido en una de las bibliotecas m谩s populares para crear interfaces de usuario. En esta publicaci贸n de blog, le mostrar茅 c贸mo usar los formularios de React junto con la Lista de tareas.





Primero echemos un vistazo a nuestro proceso: se recibi贸 una factura y debe revisarse. Nos centraremos en el formulario de factura inicial y en la tarea personalizada: implementar tareas automatizadas con Camunda Workflow Engine es bastante sencillo.





Relaciones con los desarrolladores de Camunda: 驴Qui茅n, qu茅, d贸nde, por qu茅 y c贸mo?



Usaremos formularios en l铆nea para nuestras tareas. Despu茅s de agregar React como un script personalizado a la lista de tareas, podemos comenzar a construir la interfaz. No usar茅 JSX para este ejemplo, por lo que puede implementarlo r谩pidamente sin transpilar. Comencemos con un campo simple para mostrar valores:





class DisplayGroup extends React.Component {
  render() {
    return e('div', {className: 'form-group'}, [
      e('label', {className: 'control-label col-md-4', key: 'label'}, this.props.label),
      e('div', {className: 'col-md-6', key: 'container'},
        e('input', {
          className: 'form-control',
          value: this.props.value,
          readOnly: true
        }))
      ]);
  }
}


Este componente sin estado usa clases Bootstrap para dise帽ar. Si necesitamos mostrar varios valores, como el monto y el proveedor de la factura, podemos crearlo varias veces. Por ejemplo, puede crear un formulario seg煤n corresponda:





e(DisplayGroup, {
  label: 'Amount: ',
  value: this.props.amount.value,
  key: 'Amount'
}),
e(DisplayGroup, {
  label: 'Creditor: ',
  value: this.props.creditor.value,
  key: 'Creditor'
}),
e(DisplayGroup, {
  label: 'Invoice Category: ',
  value: this.props.category.value,
  key: 'Category'
}),
e(DisplayGroup, {
  label: 'Invoice Number: ',
  value: this.props.invoiceID.value,
  key: 'InvoiceID'
}),
e('label', {className: 'control-label col-md-4', key: 'ApprovalLabel'}, 'I approve this Invoice'),
e('div', {className: 'col-md-6', key: 'ApprovalContainer'},
  e('input', {
    className: 'form-control',
    name: 'approved',
    type: 'checkbox',
    checked: this.state.value,
    className: 'form-control',
    onChange: this.handleInputChange
  })
)


Debajo de nuestros campos de entrada, agregu茅 un componente administrado para manejar la entrada del usuario. Dado que tenemos que decidir si aprobar o no este proyecto de ley, una simple casilla de verificaci贸n es suficiente. Estas pocas l铆neas de c贸digo ya generan la mayor parte del formulario de aprobaci贸n final. Acabo de agregar un t铆tulo y hice el trabajo.





Relaciones con los desarrolladores de Camunda: 驴Qui茅n, qu茅, d贸nde, por qu茅 y c贸mo?



Como puede ver, usar un marco como React in Tasklist no solo es posible sino tambi茅n bastante simple. Si quieres saber m谩s, puedes ver el c贸digo fuente que est谩 disponible en Github.




All Articles