Implementatie van workflow
Stappen
Werkstroom / workflow
Maak een werkstroom aan met de stappen in deze werkstroom
Procesacties
Maak de overgangen tussen de processtappen.
E-mailprocessen
E-mailproces vraagt om een werkstroom. Niet verplicht
Voeg ook de e-mailprocesstappen toe. Vaak zijn dat er twee.
Item types
Zowel item_type als item_subtype
Item Subtype vraagt om E-mailproces. Verplicht veld.
E-mailsjablonen
Maak eventueel de map aan waarin de afbeeldingen van dit proces worden opgeslagen.
Werkstroom app inrichten
Maak de views op orde
- state id
Access
Ingelogd => $user_id
item_owner_id is user_id? => Ja, toegang als eigenaar item_addressee_id is user_id? => Ja, toegang als manager
PHP Scripts
BeforeAdd
OnShowAddForm
// Set filters for pulldown database joins:
// 1. item_process_state_id / Processtatus
// Show current state
// ex. id=22
// => id=$process_state_id => $where_process_state
// Add: initial process state
// Edit:
// 2. item_process_action_id / Procesactie
// Depends on current state and access rights current user
// process_state_before_id=24 AND process_action_access_id IN (1,3)
// => process_state_before_id=$process_state_id AND process_action_access_id IN (1,3) => $where process_action_access_id IN (1,2)
// Add: current state = initial state, access
// Ad 1. // Initial process state of the process $process_state_id = (int) 22; // = Nieuw $where_process_state = 'id =' . $process_state_id;
// Ad 2. // Set default value in case no process has been selected yet: f.e. at opening of the form. $where_process_id = '';
// Get process_id from URL after refresh
if (isset($_GET['process_id'])) {
$process_id = $_GET['process_id'];
$where_process_id = '`process_id` = ' . $process_id . ' AND ';
}
// Set filter for process_id
$process_id = 7; // Complaint Process
$where_process = '`process_id` = ' . $process_id . ' AND ';
$where_process_state = '`process_state_before_id` = '. $process_state_id . ' AND ';
$where = $where_process . ' ' . $where_process_state;
// echo $where;
After Add
// Set id of next state
$process_action_id = (int) 21; // = Nieuw
modJNInterfacebuilderWorkflow::setNextState($id_added_record, $process_action_id);
BeforeEdit
OnShowEditForm
// Set filters on 'process_id', 'process_state_before_id'
// This filter is set in OnShowAddForm and needs to be set to empty in edit mode.
$where_process_state_id= '';
// echo "where_process_state_id: " . $where_process_state_id . "<br />";
// Initialize variables
$process_state_id = '';
$where_process = '';
$where_process_state = '';
// GET RECORD_ID
$record_id = $_GET['edit_id'];
// GET PROCESS_ID
// Option 1: No change in process_id dropdown
$process_id = 7; // Complaint Process
// Option 2: Change in process_id dropdown: get process_id from URL after refresh
if (isset($_GET['process_id'])) {
$process_id = $_GET['process_id'];
}
// echo $process_id . "<br />";
// Set filter on process_id
$where_process = '`process_id` = ' . $process_id . ' AND ';
// GET STATE_ID
$data_source = 'jnxt_jne_wfm_items';
$field_name = 'item_process_state_id';
$where_field_name = 'id';
$process_state_id = modJNInterfacebuilderWorkflow::getValue($data_source, $field_name, $where_field_name, $record_id);
// echo $process_state_id . "<br />";
// Set filter on process_state_id
if (isset($process_state_id)){
$where_process_state = '`process_state_before_id` = '. $process_state_id . ' AND ';
}
$where = $where_process . ' ' . $where_process_state;
// echo $where . "<br />";
// die();
AfterEdit
// Set id of next state
// echo "phpcode - edit_id: " . $edit_id . "<br />";
modJNInterfacebuilderWorkflow::setNextState($edit_id, $process_action_id);
BeforeDelete
AfterDelete
Javascript
Javascript for Add form
/* selectElement('object_status_id', '1'); */
/* selectElement('item_addressee_id', '1'); */
/* Positie in dropdown vasthouden */
const params = new URLSearchParams(window.location.search)
params.has('pos')
var myselect = document.getElementById("sg0_gp0_item_process_action_id");
myselect.options.selectedIndex = params.get('pos')
Javascript for Edit form
Elements
De volgende elementen moeten aanwezig zijn om een goede vulling te krijgen van de items tabel: id number created_by created_by modified_by modified_by organisation_id
organisation_id
return "4";
Make hidden yes
item_type_id
return "13";
Make hidden yes
item_subtype_id
Categorie
Pulldown - database join
jnxt_jne_wfm_item_subtypes
id
item_type_id = 13
item_subtype_name_nl_NL
item_process_state_id
Proces & processtap
Pulldown - database join
wfm_v02_process_states_list
id
$where_process_state
process_process_state_option_nl_NL
Readonly Add yes
Readonly Edit yes
item_process_action_id
Actie
Action Button
SQL where $where process_action_access_id IN (1,2)
item_startdate
Default value Add (Eval)
echo date('Y-m-d\TH:i');
Readonly Add yes Readonly Edit yes
item_enddate
$start_date = date('Y-m-d H:i');
$date = strtotime($start_date);
$date = strtotime("+7 day", $date);
echo date('Y-m-d\TH:i', $date);
item_email_addressees
E-mail naar
Checkbox multiple
SQL where id <> 3
SQL order process_action_access_nl_NL
Checkboxtable jnxt_jne_wfm_process_action_access
Checkbox Label process_action_access_nl_NL