Récupérer bpm:context dans une action

cancel
Showing results for 
Search instead for 
Did you mean: 
skank
Member II

Récupérer bpm:context dans une action

Bonjour,

désolé si ma question est triviale, mais j'essaie sans succès et je n'y arrive pas  :?

Ma question est : comment récupérer la valeur de bpm:context dans une action ?

Je m'explique : je voudrais déplacer un noeud dans une action généré par un workflow, et après avoir regardé le wiki, il faut que je récupère bpm:context qui contient le nodeRef dont j'ai besoin.

J'ai procédé ainsi :

<process-definition xmlns="http://jbpm.org/jpdl-3.1.xsd"
                    name="azwf:plateauairbusworkflow">

    <swimlane name="initiator" />

    <start-state name="Start">
        <task name="azwf:start" swimlane="initiator" />
        <transition name="toDraft" to="Draft">
            <action name="StartWorkflowHandler" class="com.workflow.handler.StartWorkflowHandler">
                <contextNode type="org.alfresco.service.cmr.repository.NodeRef">#{bpm_context}</contextNode>
            </action>
        </transition>
    </start-state>

Et ensuite dans l'action :

public class StartWorkflowHandler implements ActionHandler {

    public NodeRef contextNode;

    public void setContextNode(NodeRef contextNode) {
        this.contextNode = contextNode;
    }
   
    public void execute(ExecutionContext ec) throws Exception {

        (…)
        Map<QName, Serializable> contentProps = new HashMap<QName, Serializable>();
        contentProps = service.getProperties(contextNode);
        service.moveNode(contextNode, draft, ContentModel.ASSOC_CONTAINS,QName.createQName(…);
       

Seulement, contextNode est nul. D'après la doc de jPDL (http://docs.jboss.org/jbpm/v3/userguide/jpdl.html#configurationofdelegations), il faut un constructeur de String dans NodeRef (il y en a un), mais cela ne fonctionne pas quand même…

Il est peut-être possible de faire autrement, par exemple en créant un bean, mais je ne suis pas très familier avec les concepts de Spring, malgré les tutos…

Quelqu'un peut-il m'aider s'il vous plait ?

Cordialement.
2 Replies
skank
Member II

Re: Récupérer bpm:context dans une action

De manière générale, comment faire pour récupérer le NodeRef "actuel" ( = celui qui a lancé le workflow dans mon cas) ?
skank
Member II

Re: Récupérer bpm:context dans une action

Je pensais avoir trouvé avec NavigationBean :

NavigationBean navigationBean = (NavigationBean) FacesHelper.getManagedBean(FacesContext.getCurrentInstance(), "NavigationBean");
NodeRef contextNode = navigationBean.getCurrentNode().getNodeRef();

Mais en fait, il me renvoie le noeud "file" actuel, et pas le noeud "content"… Personne n'a d'idées ?