public function cambiarInstancia(Tramite $tramite)
 {
     $repoInstancia = new InstanciaRepository();
     $repoTramiteInstancia = new TramiteInstanciaRepository();
     $repoTramiteInstanciaTarea = new TramiteInstanciaTareaRepository();
     $repoTarea = new RelTipoTramiteinstanciaTareaRepository();
     //siguiente instancia del tramite
     $nuevainstancia = $repoInstancia->getSiguienteInstancia($tramite->getIdTipoTramite(), $tramite->getidInstanciaActual());
     //var_dump($nuevainstancia);die;
     //asocio la nueva instancia con el tramite
     $tramiteInstancia = new TramiteInstancia();
     $tramiteInstancia->setIdTramite($tramite->getidTramite());
     $tramiteInstancia->setIdInstancia($nuevainstancia->getIdInstancia());
     $tramiteInstancia->setIdTramiteInstancia($repoTramiteInstancia->insert($tramiteInstancia));
     //tareas propias de la nueva instancia
     $tareasPropias = $repoTarea->getTareasPropias($tramite->getIdTipoTramite(), $nuevainstancia->getIdInstancia());
     //var_dump($tareasPropias);die;
     //agrego las tareas al tramite
     foreach ($tareasPropias as $tarea) {
         $tit = new TramiteInstanciaTarea();
         $tit->setIdTramiteInstancia($tramiteInstancia->getIdTramiteInstancia());
         $tit->setIdTarea($tarea->getIdTarea());
         $tit->setOrden($tarea->getOrden());
         $tit->setIdEstado(Estado::$TareaAbierta);
         //var_dump($tit);die;
         $repoTramiteInstanciaTarea->insert($tit);
     }
     //cambio la instancia actual del tramite
     $tramite->setIdInstanciaActual($nuevainstancia->getIdInstancia());
     $this->update($tramite);
     return $tramite;
 }
<?php

use Stel\Repository\InstanciaRepository;
use Stel\Model\Instancia;
$repo = new InstanciaRepository();
$entities = $repo->getAll();
Controller::render("instancias.php", array("entities" => $entities));
<?php

use Stel\Repository\RelTipoTramiteInstanciaRepository;
use Stel\Repository\TipoTramiteRepository;
use Stel\Repository\InstanciaRepository;
use Stel\Model\RelTipoTramiteInstancia;
use Stel\Model\Usuario;
$repo = new RelTipoTramiteInstanciaRepository();
$tis = array();
$tis = $repo->getAll();
//tipos de tramite
$repoTT = new TipoTramiteRepository();
$tiposTramite = $repoTT->getAll();
//instancias
$repoI = new InstanciaRepository();
$instancias = $repoI->getAll();
if (isset($_GET['forSelect'])) {
    foreach ($tis as $ti) {
        $text = "";
        //busco el tipo de tramite
        foreach ($tiposTramite as $tipoTramite) {
            if ($tipoTramite->getIdTipoTramite() == $ti->getIdTipoTramite()) {
                $text .= $tipoTramite->getCodigoNombre();
            }
        }
        foreach ($instancias as $instancia) {
            if ($instancia->getIdInstancia() == $ti->getIdInstancia()) {
                $text .= " - " . $instancia->getNombre();
            }
        }
        $return[] = array("value" => $ti->getIdRelTipoTramiteInstancia(), "text" => $text);
<?php

use Stel\Repository\TipoTramiteRepository;
use Stel\Repository\InstanciaRepository;
use Stel\Repository\RelTipoTramiteInstanciaRepository;
use Stel\Model\TipoTramite;
use Stel\Model\Instancia;
use Stel\Model\RelTipoTramiteInstancia;
$repo = new InstanciaRepository();
$instancias = array();
if (isset($_GET['tipotramite'])) {
    $idTipoTramite = (int) $_GET['tipotramite'];
    $repoRel = new RelTipoTramiteInstanciaRepository();
    $relTipoInstancia = $repoRel->getByTipoTramite($idTipoTramite);
    //var_dump($relTipoInstancia);die;
    $instancias = array();
    if ($relTipoInstancia) {
        foreach ($relTipoInstancia as $rel) {
            $instancias[] = $repo->getOne($rel->getIdInstancia());
        }
    } else {
        Controller::renderJson("ERROR");
    }
} else {
    $instancias = $repo->getAll();
}
if (isset($_GET['forSelect'])) {
    $instancias = array_map(function ($element) {
        return array("value" => $element->getIdInstancia(), "text" => $element->getNombre());
    }, $instancias);
}
<?php

use Stel\Model\Instancia;
use Stel\Repository\InstanciaRepository;
try {
    $action = $_GET["action"];
    $data = json_decode($_POST["object"]);
    $repo = new InstanciaRepository();
    switch ($action) {
        case "new":
            $instancia = new Instancia();
            $instancia->setNombre($data->nombre);
            $instancia->setIdInstancia($repo->insert($instancia));
            Controller::renderJson("OK", $instancia);
            break;
        case "edit":
            $instancia = $repo->getOne($data->idInstancia);
            $instancia->setNombre($data->nombre);
            $repo->update($instancia);
            Controller::renderJson("OK", $instancia);
            break;
        case "delete":
            Controller::renderJson("ERROR", "", "No implementado");
            break;
    }
} catch (Exception $e) {
    Controller::renderJson("ERROR", "", $e->getMessage());
}