Développer avec RBS Change : [Résolu] Task non affiché en BO

  • 72689.1

    21/12/2012 17:15


    bcharfi
    Rang : Adepte
    Bonjour,

    Je viens de créer un script d'import de document et un task pour exécuter cet import. Lorsque j'execute le script par ligne de commande l'import se fait et je trouve les doc insérés dans la base de donnée mais je ne peux les voir en BO. De plus, la tâche que j'ai créée pour exécuter ce script n'est aussi affiché en BO dans Outils > Tâches.

    Je travaille sur une version 3.5.2 ECommerce Core

    Merci d'avance.

    Édité par bcharfi 21/12/2012 17:26




    RBS Change Version 3.5.2 - eCommerce Core
  • 72689.2 en réponse à 72689.1 écrit par bcharfi

    24/12/2012 09:39


    Loïc Couturier
    Rang : Adepte
    Bonjour,

    Il faudrait vérifier que la tache est bien créée dans un dossier (par exemple le système folder de votre module d'import)

    Pour les documents, si vous les trouver en base mais pas en backoffice, il faudrait vérifier :
    - Si vos documents sont spécifiques à votre projet, que la perspective du module est correctement écrite pour qu'il s'affiche en backoffice
    - Si ce sont des documents standards, qu'ils sont correctement insérés dans l'arbre.
  • 72689.3 en réponse à 72689.1 écrit par bcharfi

    24/12/2012 10:16


    Georges Njock-Bôt
    Rang : Membre
    Bonjour,

    j'aurais deux remarques à faire:

    A priori le script d'import dont vous parlez est un script php qui crée des documents Change et non un fichier xml que vous importeriez avec la commande
    change.php id <moduleName> <scriptName>


    Ceci dit, la création d'un document et sa visibilité en backoffice sont 2 choses distinctes; De manière générale, si vous voulez qu'un document soit visible en backoffice, vous devez renseigner l'identifiant du "noeud" parent lors de l'appel à la méthode save(). La signature de la méthode est
    function save($parentNodeId)

    D'ailleurs vous pouvez voir que tous les services de document possèdent une méthode
     protected function preSave($document, $parentNodeId = null)
    qui est appelée avant le save et reçoit cette valeur en second paramètre .

    Concernant la tâche que vous avez créé, je suppose que par "créer" vous avez simplement écrit une classe php qui étend task_SimpleSystemTask et que vous pouvez appeler en ligne de commande via un script php.

    Pour ce cas le constat est simple, vous avez peut-être créé une classe php mais visiblement vous n'avez pas créé de document task_persistentdocument_plannedtask correspondant à cette tâche. Dans ce cas il est donc normal que vous ne trouviez rien en backoffice puisque vous n'y avez rien mis. Pour obtenir le résultat souhaité, vous pouvez procéder de deux façons :

    Par un script php:
      
    $task = task_PlannedtaskService::getInstance()->getNewDocumentInstance();
    		$task->setLabel('le_nom_de_ma_tâche');
    		$task->setSystemtaskclassname('ma_class_php');
    //...
    	
    // Vous noterez le $parentNodeId comme vu plus haut
    $task->save(ModuleService::getInstance()->getSystemFolderId('task', 'task'));

    Voir un exemple dans --> modules/task/setup/initData.php

    Par un import xml :
    	<systemfolder module="task" relatedmodule="[module_de_la_tâche]">
    		<plannedtask label="[Libelle_backoffice_de_la_tâche]" systemtaskclassname="[nom_de_la_classe_php_de_la_tâche]"  />
    	</systemfolder>

    Voir un exemple dans --> modules/users/setup/init.xml

    "La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information"

    Albert Einstein
 
Merci de prendre connaissance et de respecter les règles des forums.
 
1471 membres
Aucun membre connecté