1. significations variables du processus:
Nous pouvons entre les systèmes et processus d'affaires dans le système, pour développer la branche correspondante par des variables de processus, tels que: congé personnel
jours de congé <= 3 puis de nouveau au directeur du service du personnel pour approbation, si> 3 puis après le chef de service à l' approbation du directeur général après l'approbation, le directeur général à la tâche
2. Les types de données variables de processus:
chaîne, double, boolean, court, long, entier, binaire, la date la date
Serializable, si la nécessité d'utiliser les variables de processus entre champ d'attribut de POJO, la nécessité de mettre en œuvre l'interface de sérialisation à POJO
3. La portée des variables de processus
1. Dans les variables de processus par défaut existent entre l'ensemble de l' instance de processus, chaque étape peut arriver à la variable appelée variables globales globales, comme Java
2. Des exemples de tâches et d' effectuer uniquement pour la mise en œuvre d'une tâche et une série d'exemples , les instances de processus sont pas grandes, appelées variables locales. Similaire à Java variables locales
4. Les variables de processus cas:
jours de congé <= 3 puis de nouveau au directeur du service du personnel pour approbation, si> 3 puis après le chef de service à l'approbation du directeur général pour approbation, après le directeur général à la tâche
4.1 Définitions organigramme des variables de processus prévus dans les conditions de la ligne d'écoulement
4.2 définition de POJO, allez à atteindre Interface sérialisable
/ ** * entité commerciale * / publique classe Holiday les outils du Serializable { privé statique finale longue serialVersionUID = 1L ; Private ID entier, privé Chaîne holidayName; // demandeur privé une date startDate; // Heure de départ privé une date endDate; // Heure de fin privé Entier NUM; // jours de congé privé raison String; // laisser l'objet de Private chaîne du type; // type de congé publiqueEntier getId () { retour id; } Publique vide setId (id Entier) { ce .id = id; } Publique Chaîne getHolidayName () { retour holidayName; } Publique vide setHolidayName (String holidayName) { ce .holidayName = holidayName; } Publique Date de getStartDate () { retour startDate; } Publique vide setStartDate (date startDate) { ce .startDate = startDate; } publique Date de getEndDate () { retour endDate; } Publique vide setEndDate (date endDate) { ce .endDate = endDate; } Publique entier getNum () { retour num; } Publique vide setNum (entier num) { ce .num = num; } Publique Chaîne getReason () { retour raison; } Publique vide setReason (motif String) { ce .reason = raison; } publiqueChaîne getType () { retour de type; } Publique vide setType (type String) { ce .type = le type; } }
4.3 déploiement de processus
/ ** * processus de déploiement * / @Test publique vide déploiement () { // Obtenir l'objet ProcessEngine nom du fichier de configuration par défaut: activiti.cfg.xml et la configuration de Bean ID d' instance processEngineConfiguration ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine (); // processus d'obtention objet RepositoryService RepositoryService RepositoryService = processEngine.getRepositoryService (); // déployé, va générer le fichier de définition de processus correspondant auquel la base de données est enregistré comme un enregistrement le déploiement de déploiement = repositoryService.createDeployment () .addClasspathResource ( « Location / holiday2 .bpmn « ) // fichiers de processus de chargement .addClasspathResource ( "Location / holiday2.png" ) .name ( "Processus de congé - variable process") // définir le nom du processus du .deploy (); // déploiement // informations de déploiement de sortie System.out.println ( « Processus Nom: "+ deployment.getName ()); System.out.println ( " ID de processus: "+ deployment.getId ()); System.out.println ( " processus clé: « + deployment.getKey ()); }
4.4 Démarrage de l'instance de processus
/ ** * processus de démarrage par exemple * / @Test publique vide startInstance () { // Obtenir l'objet ProcessEngine nom du fichier de configuration par défaut: activiti.cfg.xml et la configuration de Bean ID d' instance processEngineConfiguration ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine (); / / Get runtimeService runtimeService runtimeService = processEngine.getRuntimeService (); // ensemble des variables de processus les vacances = vacances new new les vacances (); holiday.setNum ( 3. ); // définir une valeur de consigne carte de stockage des variables de processus Map <String, Object> = assMap nouvelle nouvelleLe HashMap <> (); assMap.put ( "vacances" , vacances); // démarrer le processus du ProcessInstance le processInstance = runtimeService.startProcessInstanceByKey ( "holiday2" ); System.out.println ( "~ instance de processus a démarré avec succès" ); }
4.5 Exécution du processus d'essai
Lisi moins de trois jours après la mise en œuvre de l'agence directement au zhaoliu
Si vous laissez quatre jours, vous devrez transférer après l'approbation par Wangwu get à zhaoliu
5. l'exécution des tâches, ensemble des variables de processus
/ ** * Lorsque l'exécution des tâches, définir les variables de processus * / @Test publique vide le runTask () { // Obtenir l'objet ProcessEngine nom du fichier de configuration par défaut: activiti.cfg.xml et la configuration de Bean ID d' instance processEngineConfiguration ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine (); // obtenir un objets TaskService TaskService TaskService = processEngine.getTaskService (); // agence de requête tâche de requête createTaskQuery d'affaires tâche d'interrogation taskCandidateOrAssigned interprète processDefinitionKey: processus de requête / ** * règles de correspondance taskCandidateOrAssigned: 1.Assigned 2. Configurer BPMN la valeur définie dans le fichier * TaskAssignee匹配规则: 1.Assigned * / / *Liste <Tâche> Liste = taskService.createTaskQuery () taskCandidateOrAssigned ( "LISI") processDefinitionKey ( "vacances") liste ()... * / Liste <Tâche> Liste = taskService.createTaskQuery () taskAssignee ( "LISI") processDefinitionKey ( "holiday2".. ) .List (); // 分页: Liste <Tâche> Liste = taskService.createTaskQuery () taskAssignee ( "de Zhangsan") processDefinitionKey ( "de vacances") listPage (i, j)... pour (tâche Tâche: liste) { System.out.println ( "任务名称:" + task.getName ()); System.out.println ( "任务执行人:" + System.out.// ensemble des variables de processus les vacances = vacances nouvelle nouvelle Holiday (); holiday.setNum ( 5. ); // définir une collection de cartes, les valeurs des variables de processus de stockage Carte <String, Object> = assMap new new HashMap <> (); assMap.put ( "vacances" , vacances); // traitement de tâches taskService.complete (task.getId (), assMap); System.out.println ( "instance processus ID:" + task.getProcessInstanceId ()); } }
6. Le procédé exemple des valeurs de consigne d'identification des variables de processus
Avant d'effectuer la tâche de branche Lisi, effectuer ce réglage de la méthode
/ ** * Obtenir l'ID d'instance de processus, selon les valeurs de réglage d'instance de processus de variables de processus * / @Test publique vide de getInstanceVar () { // Obtenir l'objet ProcessEngine nom du fichier de configuration par défaut: activiti.cfg.xml Bean ID d'instance et la configuration il est processEngineConfiguration la processEngine processEngine = ProcessEngines.getDefaultProcessEngine (); // Get RuntimeService RuntimeService runtimeService = processEngine.getRuntimeService (); // ensemble des variables de processus les vacances = vacances new new Holiday (); holiday.setNum ( 3.); // variables de processus d'installation runtimeService.setVariable ( "25001", "vacances" , vacances); }
L'ID d'emploi, les variables de processus ensemble
/ ** * L'ID de travail, définir les variables de processus * / @Test publique vide le runTask () { // Obtenir l'objet ProcessEngine nom du fichier de configuration par défaut: activiti.cfg.xml et la configuration de Bean ID d' instance processEngineConfiguration ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine (); // obtenir un objets TaskService TaskService TaskService = processEngine.getTaskService (); // agence de requête tâche de requête createTaskQuery d'affaires tâche d'interrogation taskCandidateOrAssigned interprète processDefinitionKey: processus de requête / ** * règles de correspondance taskCandidateOrAssigned: 1.Assigned 2. Configurer BPMN la valeur définie dans le fichier * TaskAssignee匹配规则: 1.Assigned * / / *Liste <Tâche> Liste = taskService.createTaskQuery () taskCandidateOrAssigned ( "LISI") processDefinitionKey ( "vacances") liste ()... * / Liste <Tâche> Liste = taskService.createTaskQuery () taskAssignee ( "LISI") processDefinitionKey ( "holiday2".. ) .List (); // 分页: Liste <Tâche> Liste = taskService.createTaskQuery () taskAssignee ( "de Zhangsan") processDefinitionKey ( "de vacances") listPage (i, j)... pour (tâche Tâche: liste) { System.out.println ( "任务名称:" + task.getName ()); System.out.println ( "任务执行人:" + System.out.// ensemble des variables de processus les vacances = vacances nouvelle nouvelle , le Holiday () holiday.setNum ( 5. ); taskService.setVariable ( task.getId () , "vacances" , vacances); // tâches de traitement taskService.complete (task.getId () ); System.out.println ( "instance de processus ID:" + task.getProcessInstanceId ()); } }
Notez le problème:
1, si le nom de variable de processus d'expression UEL n'existe paserreur.
2, si la variable de processus d'expression UEL est NULL null, le processus est d'expression UEL à effectuer, et les extrémités de processus.
3, si l'expression UEL ne répondent pas aux conditions, le fluxtermine
4, si vous ne définissez pas les conditions de connexion, le débit sera petit nombre cette ligne