« Périmètre société d'une instance de processus métier (bp) » : différence entre les versions
(Page créée avec « Lorsqu'un processus métier est déclenché par un évènement métier le périmètre société de l'objet à l'origine de l'évènement détermine le périmètre sociét... ») |
m (a déplacé Périmètre société d'une instance de processus métier vers Périmètre société d'une instance de processus métier (bp)) |
||
(Une version intermédiaire par le même utilisateur non affichée) | |||
Ligne 72 : | Ligne 72 : | ||
</source> | </source> | ||
[[category:Processus Métiers]] | [[category:Processus Métiers]] |
Dernière version du 28 août 2014 à 11:09
Lorsqu'un processus métier est déclenché par un évènement métier le périmètre société de l'objet à l'origine de l'évènement détermine le périmètre société de l'instance du processus.
Lorsqu'un processus métier est déclenché par un évènement technique, le périmètre société du processus ne peut pas être déterminé automatiquement. Dans ce cas vous devez identifier le périmètre société du processus puis l'associé à l'instance du processus en positionnant la variable initial.oidEventPerimeter.
Dans l'exemple suivant le processus est déclenché par un la présence d'un fichier, le nom du fichier contient le nom de la société concernée :
Dans cet exemple les étapes sont décomposées pour plus de clarté.
Le nom du fichier déclenchant le processus comprend le nom du périmètre société :
La première activité script récupère le nom de la société :
<source lang="delphi"> var aFile,aSociety:string; xs,xe:Integer; begin
Result := bprNOK; aFile := ExtractFileName(GetParameter('infile','filename')); xe := Pos('.',aFile); if xe<>0 then begin xs := xe-1; while (xs>1) and (copy(aFile,xs,1)<>'_') do xs := xs-1; aSociety := Copy(aFile,xs+1,xe-xs-1); AddParameter(,'Society',aSociety); Result := bprOK; end;
end; </source>
La seconde activité associe le périmètre société à l'instance :
<source lang="delphi"> var aSociety:string; prm:TdbfPerimetrePartage; begin
Result := bprNOK;
aSociety := GetParameter(,'Society');
addMessage('Current society OID:'+ClassManager.ShareSociety); addMessage('Change context to new '+aSociety);
prm := ClassManager.FindObject('TdbfPerimetrePartage','(caption=%1)and(NiveauPartage=2)','Caption',false,[aSociety]); If Assigned(prm) then begin addMessage('New society OID:'+prm.OID);
/////////////////////////////////////////////// // // The Society perimeter OID of the process instance is stored in the variable "initial.oidEventPerimeter" // addParameter('initial','oidEventPerimeter',prm.OID); // ////////////////////////////////////////////////////
Result := bprOK; end else addMessage('No perimeter found for '+aSociety);
end; </source>
La troisième activité vérifie que le périmètre est correct pour les activités suivantes :
<source lang="delphi"> begin
addMessage('current society OID:'+ClassManager.ShareSociety); Result := bprOK;
end; </source>