Supprimer un fichier pendant le déroulement d'un workflow

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

Supprimer un fichier pendant le déroulement d'un workflow

Bonjour tout le monde,

  Je veux savoir comment je peux permette à un utilisateur de supprimer le fichier associé à un workfow et de le remplacer par un autre?

  je m'explique, un usager a une tâche de vérification d'un document, quand il trouve que le document est non conforme aux critères de validation, il doit avoir la possibilité de le supprimer et de le remplacer par un autre document plus conforme . De ce, via une action dans le workflow, l'usager doit être capable d'effectuer cette manip.

Quelqu'un a-t-il une idée?
5 Replies
skank
Member II

Re: Supprimer un fichier pendant le déroulement d'un workflow

J'ai peut-être mal compris, mais… peut-être suffit-il de permettre l'édition des éléments du package ?

Dans votre workflow model :

<type name="wf:start">
            <title>Start Node</title>
            <parent>bpm:workflowTask</parent>
            <overrides>
                <property name="bpm:packageItemActionGroup">
                    <default>edit_package_item_actions</default>
                </property>
            </overrides>
        </type>
arkantos
Member II

Re: Supprimer un fichier pendant le déroulement d'un workflow

Dans votre workflow model :

Code: Tout sélectionner
    <type name="wf:start">
                <title>Start Node</title>
                <parent>bpm:workflowTask</parent>
                <overrides>
                    <property name="bpmSmiley TongueackageItemActionGroup">
                        <default>edit_package_item_actions</default>
                    </property>
                </overrides>
            </type>

c'est vrai, mais pour mon cas il y a pas mal de traitement à faire, exemple ajout de métadonnées, associations … donc je dois passer par du code java
skank
Member II

Re: Supprimer un fichier pendant le déroulement d'un workflow

Pour supprimer un fichier, il suffit juste de supprimer le nœud auquel il est associé (via le NodeService).

Pour en uploader un, si contextNode est le répertoire père :

        // Création d'un nouveau noeud.
        ChildAssociationRef association = service.createNode(
                contextNode,
                ContentModel.ASSOC_CONTAINS,
                QName.createQName(ContentModel.TYPE_CONTENT, "nom du fichier"),
                ContentModel.TYPE_CONTENT, contentProps);

        // Référence du noeud nouvellement créé.
        NodeRef content = association.getChildRef();

        // Ajout du fichier dans le noeud.
        ContentService contentService = serviceRegistry.getContentService();
        ContentWriter writer = contentService.getWriter(content, ContentModel.PROP_CONTENT, true);
        writer.putContent(file);

Il faudra mettre ça dans une action, c'est-à-dire une classe de ce type :

public class TaClasseAction implements ActionHandler
arkantos
Member II

Re: Supprimer un fichier pendant le déroulement d'un workflow

le problème c'est que pour supprimer un fichier ajouté à un  workflow, vous devez préalablement faire un removePackageItem(…) méthode qui se trouve dans le ManageTaskDialog mais je ne sais pas comment procéder. Je ne suis pas en plein temps sur ce projet et je n'arrive pas à progresser  :cry:

Détails:
La méthode removePackageItem() récupère un objet ActionEvent dont le rôle m'est inconnu  :roll:


public void removePackageItem(ActionEvent event)

    {

        UIActionLink link = (UIActionLink) event.getComponent();

        Map<String, String> params = link.getParameterMap();

        String nodeRef = new NodeRef(Repository.getStoreRef(), params.get("id")).toString();



        if (this.packageItemsToAdd != null && this.packageItemsToAdd.contains(nodeRef))

        {

            // remove the item from the added list if it was added in this

            // dialog session

            this.packageItemsToAdd.remove(nodeRef);



            if (LOGGER.isDebugEnabled())

                LOGGER.debug("Removed item from the added list: " + nodeRef);

        }

        else

        {

            // add the node to the list of items to remove

            if (this.packageItemsToRemove == null)

            {

                this.packageItemsToRemove = new ArrayList<String>(1);

            }



            this.packageItemsToRemove.add(nodeRef);



            if (LOGGER.isDebugEnabled())

                LOGGER.debug("Added item to the removed list: " + nodeRef);

        }



        // reset the rich list so it re-renders

        this.packageItemsRichList.setValue(null);

    }


skank
Member II

Re: Supprimer un fichier pendant le déroulement d'un workflow

Le problème, c'est pour le récupérer ?

ManageTaskFolder manageTaskFolder = (ManageTaskFolder ) FacesHelper.getManagedBean(FacesContext.getCurrentInstance(), "ManageTaskFolder ");

Edit : Oups, je n'avais pas vu l'autre post   :mrgreen: