O conceito basico da organizacao do moodle e apresentado pela figura a seguir.Essa ideia tem uma grande desvantagem, principalmente para quem usar um banco de dados como o MySQL (MyISAM), que nao possui integridade referencial... a base pode ficar com problemas de integridade nas relacoes.No meu caso, a situacao foi observada, seguindo a seguinte trilha:select * from mdl_role;Onde se obtem os role_ids dos perfil desejados, no meu caso, Tutor/Professor (id=3)Para verificar quem tem uma regra especifica, podemo verificar na tabela _role_assignments. Nessa tabela, temos a associacao dos usuarios com os contextos e com as regras+--------------+---------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+--------------+---------------------+------+-----+---------+----------------+| id | bigint(10) unsigned | NO | PRI | NULL | auto_increment || roleid | bigint(10) unsigned | NO | MUL | 0 | || contextid | bigint(10) unsigned | NO | MUL | 0 | || userid | bigint(10) unsigned | NO | MUL | 0 | || hidden | tinyint(1) unsigned | NO | | 0 | || timestart | bigint(10) unsigned | NO | | 0 | || timeend | bigint(10) unsigned | NO | | 0 | || timemodified | bigint(10) unsigned | NO | | 0 | || modifierid | bigint(10) unsigned | NO | | 0 | || enrol | varchar(20) | NO | | | || sortorder | bigint(10) unsigned | NO | MUL | 0 | |+--------------+---------------------+------+-----+---------+----------------+Logo, se precisamos listar os usuarios de um determinado perfil, podemos usar a query a seguir:select id,username,lastname,email from mdl_user where id in (select userid as id from mdl_role_assignments where roleid=3);Mas o problema que verifiquei (no meu caso) e nao sei exatamente quando isso ocorreu, foi o usuario nao ter um registro em _role_assignments mas ter o vinculo ao curso na tabela context. Para entender o problema, a tabela possui esses campos:+--------------+---------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+--------------+---------------------+------+-----+---------+----------------+| id | bigint(10) unsigned | NO | PRI | NULL | auto_increment || contextlevel | bigint(10) unsigned | NO | MUL | 0 | || instanceid | bigint(10) unsigned | NO | MUL | 0 | || path | varchar(255) | YES | MUL | NULL | || depth | tinyint(2) unsigned | NO | | 0 | |+--------------+---------------------+------+-----+---------+----------------+Os valores contextlevel sao definidos no codigo php, eu os encontrei em accesslib.php dentro da pasta lib do moodle. Os valores sao:// context definitionsdefine('CONTEXT_SYSTEM', 10);define('CONTEXT_USER', 30);define('CONTEXT_COURSECAT', 40);define('CONTEXT_COURSE', 50);define('CONTEXT_MODULE', 70);define('CONTEXT_BLOCK', 80);No path, encontramos uma string que indica categoria,curso,bloco etc... a inconsistencia estava aqui, o usuario nao estava associado ao curso pela tabela _role_assignments, mas tinha no seu contexto as informacoes do curso.Para saber mais sobre o assunto:Roles and permissionsContext Antes de rodar o RGS, carreguei um arquivo de contigs:contigs=fastaread('contigs_frag_k19_opt.fa');Carregando e rodando o RGS:load dbstructanotado = sila(dbstruct,contigs,'HGF',true);an2 = annotmat2fascov(anotado); As ultimas APIs de concorrencia do Java tornaram o trabalho de gerenciar a execucao das tarefas muito mais facil, mas existem alguns cuidados a serem observados.Primeiro, evite utilizar Executor e utilize ExecutorService. O problema e que a primeira interface nao possui o metodo shutdown... o programa simplesmente nao ira terminar.Para criar os executores: