...
Code Block |
---|
language | js |
---|
linenumbers | true |
---|
collapse | true |
---|
|
var person = null;
var startDate = wfItem.getDateMap().get("proposalStartDate");
person = wfItem.getPersonMap().get("owner");
var person2 = gaService.getPerson(person.getId());
var ownerElement = new Packages.it.cilea.wf.model.WfItemElement();
ownerElement.setDiscriminator("owner");
ownerElement.setWfItemId(wfItem.getId());
ownerElement.getPersonMap().put("ownerId", person);
if (Packages.it.cilea.core.configuration.util.ConfigurationUtil.getConfigValue("ap.prj.owner.role.enabled").equalsIgnoreCase("true")){
var myRole = Packages.it.cilea.core.configuration.util.ConfigurationUtil.getConfigValue("ap.prj.owner.role.main");
if (myRole == null){
throw "Configuration variables ap.prj.owner.role.main MUST BE DEFINED";
} else {
var ownerRole = wfService.getWfDictionary(new Packages.java.lang.Integer(myRole));
ownerElement.getWfDictionaryMap().put("roleId", ownerRole);
}
}
var ownerStartDateDefault = Packages.it.cilea.core.configuration.util.ConfigurationUtil.getConfigValue("ap.project.ownerStartDate.default");
if(ownerStartDateDefault != null && "true".equals(ownerStartDateDefault)){
ownerElement.getDateMap().put("startDate", startDate);
}
wfService.saveOrUpdate(ownerElement);
wfItem.getWfItemElementSet().add(ownerElement);
var positionLastSet = person2.getPositionLastSet();
var maxPriority = Packages.it.cilea.ga.util.GaUtil.getMaxPriority(positionLastSet, "research", "department");
//var maxPriority2 = Packages.it.cilea.ga.util.GaUtil.getMaxPriority(positionSet, "research", "academicField2000");
positionLastSetIterator = positionLastSet.iterator();
while (positionLastSetIterator.hasNext()){
var position = positionLastSetIterator.next();
if (maxPriority == null || maxPriority.equals(position.getPriority())) {
if ("research".equals(position.getDiscriminator()) && "department"
.equals(position.getOrganizationUnit().getOrganizationUnitType().getDescription())) {
var internalOrganizationUnitElement = new Packages.it.cilea.wf.model.WfItemElement();
internalOrganizationUnitElement.setDiscriminator("internalOrganizationUnit");
internalOrganizationUnitElement.setWfItemId(wfItem.getId());
var internalOrganizationUnitRoleId = Packages.it.cilea.core.configuration.util.ConfigurationUtil.getConfigValue("ap.project.internalOrganizationUnit.role.main");
var internalOrganizationUnitRole = wfService.getWfDictionary(new Packages.java.lang.Integer(internalOrganizationUnitRoleId));
internalOrganizationUnitElement.getOrganizationUnitMap().put("ouId", position.getOrganizationUnit());
internalOrganizationUnitElement.getWfDictionaryMap().put("ouRole", internalOrganizationUnitRole);
wfService.saveOrUpdate(internalOrganizationUnitElement);
wfItem.getWfItemElementSet().add(internalOrganizationUnitElement);
break;
}
}
}
//partner
var uniquePartnerRoleId = Packages.it.cilea.core.configuration.util.ConfigurationUtil.getConfigValue("ap.project.partner.role.uniquePartner");
var myOrganization = Packages.it.cilea.core.configuration.util.ConfigurationUtil.getConfigValue("ap.project.partner.myOrganization");
if (uniquePartnerRoleId == null || myOrganization == null){
throw "Configuration variables ap.project.partner.role.uniquePartner and ap.project.partner.myOrganization MUST BE DEFINED";
} else {
uniquePartnerRoleId = wfService.getWfDictionary(new Packages.java.lang.Integer(uniquePartnerRoleId));
myOrganization = gaService.getOrganizationUnit(new Packages.java.lang.Integer(myOrganization));
var partnerElement = new Packages.it.cilea.wf.model.WfItemElement();
partnerElement.setDiscriminator("partner");
partnerElement.setWfItemId(wfItem.getId());
partnerElement.getOrganizationUnitMap().put("partnerId", myOrganization);
partnerElement.getWfDictionaryMap().put("partnerRole", uniquePartnerRoleId);
wfService.saveOrUpdate(partnerElement);
}
wfItem.getPersonMap().put("owner", null);
var year = startDate.get(Packages.java.util.Calendar.YEAR);
wfItem.setYear(new Packages.java.lang.Integer(year));
true;
|
Anchor |
---|
wfActionLogicEnterRecalculateIdentifier-anchor | wfActionLogicEnterRecalculateIdentifier-anchor |
wfActionLogicEnterRecalculateIdentifier Questa logica viene eseguita in ingresso allo stato Operativo di un progetto per ricalcolare l'indentifico che viene poi inviato a Ugov PJ. Richiama la logica di ricalcolo dell'identificativo opportuno solo nel caso in cui questa operazione non sià già stata eseguita (salvataggio di un flag apposito). Code Block |
---|
language | js |
---|
linenumbers | true |
---|
collapse | true |
---|
|
if(object.getIntegerMap().get("syncCounter").equals(new Integer(1))){
var startLogic = Packages.it.cilea.wf.WfConstant.START_LOGIC_MAP.get("wfStartLogicIdentifier");
startLogic.start(object, request);
}
|
Anchor |
---|
|
isYearGreaterOrEqualThanConfigurationProject-anchor | | isYearGreaterOrEqualThanConfigurationProject-anchor |
---|
|
isYearGreaterOrEqualThanConfigurationProject Questa è un'applicability rule che viene valutata prima di eseguire altre validazioni.
Se ritorna true allora vengono eseguite le altre validazioni altrimenti no.
Verifica anche che il progetto in questione sia relativo ad un anno maggiore o uguale a quello definito nella configurazione
ap.prj.year.validation.threashold.
Se la configurazione NON è definita o non può essere convertita in un numero intero valido viene settato uguale a 0.
Questo approccio serve per evitare lo scatenarsi delle validazioni su vecchi progetti che non rispettano nuove e più stringenti validazioni, ed evitare quindi di dovere fare una bonifica a tappeto.
Code Block |
---|
language | js |
---|
linenumbers | true |
---|
collapse | true |
---|
|
var yearTreasholdConf=Packages.it.cilea.core.configuration.util.ConfigurationUtil.getConfigValue("ap.prj.year.validation.threashold");
var year=new Packages.java.lang.Integer(0);
if (yearTreasholdConf!=null){
try{
year=new Packages.java.lang.Integer(Packages.org.apache.commons.lang.StringUtils.trim(yearTreasholdConf));
}catch (e){}
}
(
object.getYear()!=null
&&
object.getYear().compareTo(year)>=0
)
|
...
Anchor |
---|
| startDateAndEndDateValidator-anchor |
---|
| startDateAndEndDateValidator-anchor |
---|
|
startDateAndEndDateValidator Questa validazione controlla che la date di inizio preceda la data di fine
Dal punto di vista del modello dati si tratta degli attributi
startDate e
endDate Per maggiori dettagli cfr. modello dati dell'entità in questione
Code Block |
---|
language | js |
---|
linenumbers | true |
---|
collapse | true |
---|
|
if(object.getDateMap().get("endDate") != null && object.getDateMap().get("startDate") != null){
if(object.getDateMap().get("startDate").getTime().after(object.getDateMap().get("endDate").getTime())){
errors.reject("error.date.startDateEndDateNotCompatible");
}
}
|
Anchor |
---|
| startDateOfElementAfterStartDateOfItemValidatorcheckElementDateBetweenItemDateValidator-anchorstartDateOfElementAfterStartDateOfItemValidator |
---|
| checkElementDateBetweenItemDateValidator-anchor |
---|
|
startDateOfElementAfterStartDateOfItemValidator checkElementDateBetweenItemDateValidator Code Block |
---|
language | js |
---|
linenumbers | true |
---|
collapse | true |
---|
|
var wfItemElementStartDate = object.getDateMap().get("startDate");
var wfItemElementEndDate = object.getDateMap().get("endDate");
var wfItemStartDate = object.getWfItem().getDateMap().get("startDate");
var wfItemEndDate = object.getWfItem().getDateMap().get("endDate");
var formatter = Packages.org.apache.commons.lang.time.FastDateFormat.getInstance("dd/MM/yyyy");
if( wfItemElementStartDate!= null && wfItemStartDate && (wfItemElementStartDate.before(wfItemStartDate) || (wfItemEndDate!=null && wfItemElementStartDate.after(wfItemEndDate))) ){
var suffixMessage=" - ";
if (wfItemEndDate!=null){
suffixMessage+=formatter.format(wfItemEndDate.getTime());
} else
suffixMessage+="<QUALSIASI DATA MAGGIORE DELLA DATA DI INIZIO>";
errors.rejectValue("dateMap[startDate]", "error.date.startDateOfElementAfterStartDateOfItemValidator", [formatter.format(wfItemStartDate.getTime()) + suffixMessage], null);
}
if( wfItemElementEndDate != null && wfItemStartDate && (wfItemElementEndDate.before(wfItemStartDate) || (wfItemEndDate != null && wfItemElementEndDate.after(wfItemEndDate))) ){
var suffixMessage=" - ";
if (wfItemEndDate != null){
suffixMessage += formatter.format(wfItemEndDate.getTime());
} else
suffixMessage += "<QUALSIASI DATA MAGGIORE DELLA DATA DI INIZIO>";
errors.rejectValue("dateMap[endDate]", "error.date.checkElementDateBetweenItemDateValidator.endDate", [formatter.format(wfItemStartDate.getTime()) + suffixMessage], null);
}
|
Anchor |
---|
| internalOrganizationUnitValidator-anchor |
---|
| internalOrganizationUnitValidator-anchor |
---|
|
internalOrganizationUnitValidator Questa validazione controlla che esista almeno una unità organizzativa responsabile (
internalOrganizationUnit)
Per maggiori dettagli cfr. modello dati dell'entità in questione.
Code Block |
---|
language | js |
---|
linenumbers | true |
---|
collapse | true |
---|
|
var internalOrganizationUnitWfElementSet=FragmentUtil.getCurrentFragmentSetByParentAndDiscriminator(object, "it.cilea.wf.model.WfItemElement","internalOrganizationUnit", wfService);
if(internalOrganizationUnitWfElementSet.isEmpty()){
errors.reject("error.internalOrganizationUnit.required");
}
|
...
Code Block |
---|
language | js |
---|
linenumbers | true |
---|
collapse | true |
---|
|
if (!errors.hasErrors() && object.getId()==null){
var isInternalOrganizationMandatory=WfUtil.getMandatory(object,"owner");
if (isInternalOrganizationMandatory){
var checkDate = WfUtil.getCheckDate(object, wfService);
var positionContext = WfUtil.getPositionContext(object, wfService);
var owner = object.getPersonMap().get("owner");
var ownerPositionSet = WfUtil.getPositionSet(owner, checkDate, positionContext, "department", gaService);
if(ownerPositionSet.isEmpty()){
var positionContextDescription="";
var checkDateDescription="";
if ("research"==positionContext){
positionContextDescription="di ricerca";
}
if (checkDate==null){
checkDateDescription="corrente o ultima disponibile"
} else {
checkDateDescription="alla data " + FastDateFormat.getInstance("dd/MM/yyyy").format(checkDate);
}
errors.reject("error.owner.position", [positionContextDescription,checkDateDescription], null);
}
}
}
|
...