Esempio n. 1
0
 function import_process($data)
 {
     //Now the show begins
     $am = new ActivityManager($this->db);
     $rm = new RoleManager($this->db);
     // First create the process
     $vars = array('name' => $data['name'], 'version' => $data['version'], 'description' => $data['description'], 'lastModif' => $data['lastModif'], 'isActive' => $data['isActive'], 'isValid' => $data['isValid']);
     $pid = $this->replace_process(0, $vars, false);
     //Put the shared code
     $proc_info = $this->get_process($pid);
     $procname = $proc_info['normalized_name'];
     $fp = fopen(GALAXIA_PROCESSES . "/{$procname}/code/shared.php", "w");
     fwrite($fp, $data['sharedCode']);
     fclose($fp);
     $actids = array();
     // Foreach activity create activities
     foreach ($data['activities'] as $activity) {
         $vars = array('name' => $activity['name'], 'description' => $activity['description'], 'type' => $activity['type'], 'lastModif' => $activity['lastModif'], 'isInteractive' => $activity['isInteractive'], 'isAutoRouted' => $activity['isAutoRouted'], 'expirationTime' => $activity['expirationTime']);
         $actname = $am->_normalize_name($activity['name']);
         $actid = $am->replace_activity($pid, 0, $vars);
         $fp = fopen(GALAXIA_PROCESSES . "/{$procname}/code/activities/{$actname}" . '.php', "w");
         fwrite($fp, $activity['code']);
         fclose($fp);
         if ($activity['isInteractive'] == 'y') {
             $fp = fopen(GALAXIA_PROCESSES . "/{$procname}/code/templates/{$actname}" . '.tpl', "w");
             fwrite($fp, $activity['template']);
             fclose($fp);
         }
         $actids[$activity['name']] = $am->_get_activity_id_by_name($pid, $activity['name']);
         $actname = $am->_normalize_name($activity['name']);
         $now = date("U");
         foreach ($activity['roles'] as $role) {
             $vars = array('name' => $role, 'description' => $role, 'lastModif' => $now);
             if (!$rm->role_name_exists($pid, $role)) {
                 $rid = $rm->replace_role($pid, 0, $vars);
             } else {
                 $rid = $rm->get_role_id($pid, $role);
             }
             if ($actid && $rid) {
                 $am->add_activity_role($actid, $rid);
             }
         }
     }
     foreach ($data['transitions'] as $tran) {
         $am->add_transition($pid, $actids[$tran['from']], $actids[$tran['to']]);
     }
     // FIXME: recompile activities seems to be needed here
     foreach ($actids as $name => $actid) {
         $am->compile_activity($pid, $actid);
     }
     // Check whether the uploaded process is valid.
     $valid = $am->validate_process_activities($pid);
     //As roles have yet to be mapped, it isn't. So let's deactivate the uploaded process.
     if (!$valid) {
         $this->deactivate_process($pid);
     }
     // create a graph for the new process
     $am->build_process_graph($pid);
     unset($am);
     unset($rm);
     $msg = sprintf(tra('Process %s %s imported'), $proc_info['name'], $proc_info['version']);
     $this->notify_all(2, $msg);
 }
Esempio n. 2
0
 function import_process($data)
 {
     //Now the show begins
     $am = new ActivityManager();
     $rm = new RoleManager();
     // First create the process
     if (isset($data['last_modified'])) {
         $last_modified = $data['last_modified'];
     } elseif (isset($data['lastModif'])) {
         // if Bonnie or TW
         $last_modified = $data['lastModif'];
     }
     if (isset($data['is_active'])) {
         $is_active = $data['is_active'];
     } elseif (isset($data['isActive'])) {
         // if Bonnie or TW
         $is_active = $data['isActive'];
     }
     if (isset($data['is_valid'])) {
         $is_valid = $data['is_valid'];
     } elseif (isset($data['isValid'])) {
         // if Bonnie or TW
         $is_valid = $data['isValid'];
     }
     $vars = array('procname' => $data['name'], 'version' => $data['version'], 'description' => $data['description'], 'last_modified' => $last_modified, 'is_active' => $is_active, 'is_valid' => $is_valid);
     $pid = $this->replace_process(0, $vars, false);
     //Put the shared code
     $proc_info = $this->get_process($pid);
     $procname = $proc_info['normalized_name'];
     $fp = fopen(GALAXIA_PROCESSES . "/{$procname}/code/shared.php", "w");
     fwrite($fp, $data['sharedCode']);
     fclose($fp);
     $actids = array();
     // Foreach activity create activities
     foreach ($data['activities'] as $activity) {
         if (isset($activity['last_modified'])) {
             $last_modified = $activity['last_modified'];
         } elseif (isset($activity['lastModif'])) {
             // if Bonnie or TW
             $last_modified = $activity['lastModif'];
         }
         if (isset($activity['is_interactive'])) {
             $is_interactive = $activity['is_interactive'];
         } elseif (isset($activity['isInteractive'])) {
             // if Bonnie or TW
             $is_interactive = $activity['isInteractive'];
         }
         if (isset($activity['is_auto_routed'])) {
             $is_auto_routed = $activity['is_auto_routed'];
         } elseif (isset($activity['isAutoRouted'])) {
             // if Bonnie or TW
             $is_auto_routed = $activity['isAutoRouted'];
         }
         $expiration_time = isset($activity['expiration_time']) ? $activity['expiration_time'] : 0;
         $vars = array('name' => $activity['name'], 'description' => $activity['description'], 'act_type' => $activity['act_type'], 'last_modified' => $last_modified, 'is_interactive' => $is_interactive, 'is_auto_routed' => $is_auto_routed, 'expiration_time' => $expiration_time);
         $actname = $am->_normalize_name($activity['name']);
         $actid = $am->replace_activity($pid, 0, $vars);
         $fp = fopen(GALAXIA_PROCESSES . "/{$procname}/code/activities/{$actname}" . '.php', "w");
         fwrite($fp, $activity['code']);
         fclose($fp);
         if ($activity['is_interactive'] == 'y') {
             $fp = fopen(GALAXIA_PROCESSES . "/{$procname}/code/templates/{$actname}" . '.tpl', "w");
             fwrite($fp, $activity['template']);
             fclose($fp);
         }
         $actids[$activity['name']] = $am->_get_activity_id_by_name($pid, $activity['name']);
         $actname = $am->_normalize_name($activity['name']);
         $now = date("U");
         foreach ($activity['roles'] as $role) {
             $vars = array('name' => $role, 'description' => $role, 'last_modified' => $now);
             if (!$rm->role_name_exists($pid, $role)) {
                 $rid = $rm->replace_role($pid, 0, $vars);
             } else {
                 $rid = $rm->get_role_id($pid, $role);
             }
             if ($actid && $rid) {
                 $am->add_activity_role($actid, $rid);
             }
         }
     }
     foreach ($data['transitions'] as $tran) {
         $am->add_transition($pid, $actids[$tran['from']], $actids[$tran['to']]);
     }
     $am->compile_process_activities($pid);
     $valid = $am->validate_process_activities($pid);
     if (!$valid) {
         $this->deactivate_process($pid);
     }
     // create a graph for the new process
     $am->build_process_graph($pid);
     unset($am);
     unset($rm);
     $msg = sprintf(tra('Process %s %s imported'), $proc_info['procname'], $proc_info['version']);
     $this->notify_all(2, $msg);
 }