В рамках процесса необходимо чтобы пользователь с ролью “Ответственный” автоматически добавлялся в список согласующих на одноименную роль. Брать его надо из доп. поля “Ответственный” на вкладке “Детали”.
В скрипте необходимо указать код доп. поля, имя роли и код процесса. Пример дизайна, где используется скрипт.
Скрипт
import com.haulmont.cuba.core.global.AppBeans
import com.haulmont.cuba.core.global.DataManager
import com.haulmont.cuba.core.global.LoadContext
import com.haulmont.cuba.core.global.Metadata
import com.haulmont.cuba.security.entity.User
import com.haulmont.thesis.core.entity.Doc
import com.haulmont.workflow.core.entity.CardRole
import com.haulmont.workflow.core.entity.ProcRole
import groovy.transform.Field
Doc doc = card;
@Field DataManager dataManager = AppBeans.get(DataManager.NAME)
clearChiefRoles();
User user = doc.getValue("+123");
if (user != null) {
ProcRole procRole = getProcRoleByCode("Ответственный");
Metadata metadata = AppBeans.get(Metadata.NAME);
CardRole chiefCardRole = metadata.create(CardRole.class);
chiefCardRole.setCard(doc);
chiefCardRole.setProcRole(procRole);
chiefCardRole.setCode(procRole.getCode());
chiefCardRole.setUser(user);
chiefCardRole.setSortOrder(1);
dataManager.commit(chiefCardRole);
}
return true;
def void clearChiefRoles() {
ProcRole procRole = getProcRoleByCode("Ответственный");
for (CardRole cardRole : card.getRoles()) {
if (cardRole.getProcRole().equals(procRole)) {
dataManager.remove(cardRole);
}
}
}
def ProcRole getProcRoleByCode(String code) {
LoadContext context = new LoadContext(ProcRole.class)
.setView("task-edit");
context.setQueryString("select pr from wf\$ProcRole pr where pr.code = :code and pr.proc.code = :procCode")
.setParameter("code", code)
.setParameter("procCode", "ubi");
return dataManager.load(context);
}