# Изменение пользователя инициатора в процессе (пример скрипта для дизайнера) **Category:** [Дизайнер процессов](https://community.tezis-doc.ru/c/workflow-guides/44) **Created:** 2024-07-02 07:50 UTC **Views:** 118 **Replies:** 0 **URL:** https://community.tezis-doc.ru/t/izmenenie-polzovatelya-inicziatora-v-proczesse-primer-skripta-dlya-dizajnera/263 --- ## Post #1 by @d.slepnev Скрипт 1 изменяет инициатора на другого пользователя и скрипт 2 высылает уведомление прежнему инициатору. **Скрипт 1. Изменяет инициатора на другого пользователя** ``` import com.haulmont.cuba.security.entity.User import com.haulmont.thesis.core.entity.Doc import com.haulmont.workflow.core.entity.CardRole Doc doc = ((Doc) card); User initiator = null for (CardRole role : doc.roles) { if (role.getCode().equals("Initiator")) { initiator = role.getUser() } } for (CardRole role : doc.roles) { if (role.getCode().equals("Сотрудник БСС")) { if (role.getUser().equals(initiator)) { return false } } } return true ``` **Скрипт 2. Высылает уведомление прежнему инициатору** ``` import com.haulmont.cuba.core.EntityManager import com.haulmont.cuba.core.Persistence import com.haulmont.cuba.core.Query import com.haulmont.cuba.core.Transaction import com.haulmont.cuba.core.global.AppBeans import com.haulmont.cuba.core.global.View import com.haulmont.cuba.security.entity.User import com.haulmont.thesis.core.entity.Doc import com.haulmont.workflow.core.app.MailService import com.haulmont.workflow.core.entity.CardRole import org.apache.commons.collections.CollectionUtils Doc doc = ((Doc) card); Persistence persistence = AppBeans.get(Persistence.class) Transaction tr = persistence.createTransaction() try { EntityManager em = persistence.entityManager Query query = em.createQuery("select u from sec\$User u where u.userRoles in (select ur from sec\$UserRole ur where ur.role.name = :currentRole)") .setParameter("currentRole", "bss"); query.setView(User.class, View.MINIMAL) List bssUsers = query.getResultList() if (CollectionUtils.isEmpty(bssUsers)) { return } User initiatorUser = null User bssUser = (User) bssUsers.get(0) for (CardRole role : doc.roles) { if (role.getCode().equals("Initiator")) { if (bssUsers.contains(role.getUser())) { return } else { initiatorUser = role.getUser() role.setUser(bssUser) } } } MailService mailService = AppBeans.get(MailService.NAME); String subject = "Смена инициатора по документу " + doc.getDescription() String body = "Смена инициатора по документу " + doc.getDescription() + ". Новый инициатор: " + bssUser.instanceName mailService.sendEmail(initiatorUser, subject, body); tr.commit() } catch (Exception e) { throw new RuntimeException(e) } finally { tr.end() } ``` --- **Canonical:** https://community.tezis-doc.ru/t/izmenenie-polzovatelya-inicziatora-v-proczesse-primer-skripta-dlya-dizajnera/263 **Original content:** https://community.tezis-doc.ru/t/izmenenie-polzovatelya-inicziatora-v-proczesse-primer-skripta-dlya-dizajnera/263