laravolt/workflow

此包用于连接 Laravolt 与 Camunda BPMN,使其更容易使用。

1.0.5 2020-01-11 07:59 UTC

This package is auto-updated.

Last update: 2024-09-06 15:45:47 UTC


README

一个通过 Camunda REST API 与 BPMN 图表通信的引擎,使应用程序两周内完成。

安装

composer require laravolt/workflow

配置 REST API

# Wajib
CAMUNDA_API_URL=https://<camunda-host>/rest

# Opsional
CAMUNDA_API_TENANT_ID=
CAMUNDA_API_USER=
CAMUNDA_API_PASSWORD=

创建新模块

  1. 创建一个 BPMN 文件
  2. 部署到 Camunda 服务器
  3. 运行命令 php artisan workflow:make
  4. 将生成一个 config/workflow-modules/<module.php> 文件

模块配置

<?php

  return [
  // sesuai Process Definition Key dari Camunda
  'process_definition_key' => 'registration',

  // Judul modul, akan ditampilkan di tiap halaman
  'label' => 'Registrasi',


  // Definisi tabel dan query untuk menampilkan data
  'table' => \App\TableView\SomeModuleTableView::class,

  // Satu process BPMN bisa memiliki banyak Task Definition Key
  // Dibawah ini adalah whitelist task-task yang akan ditampilkan ketika melihat detail
  // sebuah Process Instance berdasar Module Key di atas
  'whitelist' => [
   	[
      'label' => 'A Task Label',
      'task' => 'task_name_1',

      // hanya tampilkan field-field berikut ini
      'only' => ['field_1', 'field_2'],

      // mutators digunakan untuk mengubah value dari sebuah field yang akan disimpan
      'mutators' => [
        'invoice_no' => [
          \App\Services\InvoiceNumberGenerator::class,
        ],
      ],
    ],
  ],
];

显示数据

创建一个具有以下结构的表格

<?php

declare(strict_types=1);

namespace App\TableView;

use Illuminate\Support\Facades\DB;
use Laravolt\Suitable\Columns\Numbering;
use Laravolt\Suitable\Columns\Text;
use Laravolt\Workflow\Tables\Table;

class SomeModuleTableView extends Table
{
  // query untuk menampilkan data, bisa pakai Query Builder, bisa pakai Eloquent
  public function source($sqlOnly = false)
  {
    return DB::table('foo')->paginate();
  }
  
  // definisi kolom, sesuai https://laravolt.dev/docs/suitable/
  protected function columns()
  {
    return [
      Numbering::make('No'),
      Text::make('process_instance_id'),
      
      // dan kolom lainnya sesuai kebutuhan...

      // CRUD buttons
      $this->buttons()
    ];
  }
}

更改器

创建一个具有以下结构的类

class InvoiceNumberGenerator
{
  public function execute()
  {
   	// do logic
    return $generatedInvoiceNumber;
  }
}