- Introdução
- Configuração e Instalação
- Projetos de automação
- Dependências
- Tipos de fluxos de trabalho
- Fluxo de controle
- Comparação de arquivos
- Melhores Práticas de Automação
- Integração de controle de origem
- Sobre o controle de versões
- Como gerenciar projetos com o TÁS
- Como gerenciar projetos com o SN
- Dif. do fluxo de trabalho
- Depuração
- Geração de logs
- A ferramenta de diagnóstico
- Analisador de Fluxo de Trabalho
- Sobre o Analisador de Fluxo de Trabalho
- STN MG-001 - Convenção de nomenclatura de variáveis
- STN MG-002 - Convenção de nomenclatura de argumentos
- STN MG-004 - Duplicação de Nome de Exibição
- STN MG-005 - Variável substitui variável
- STN MG-006 - Variável substitui argumento
- STN MG-008 - Comprimento de variável excedido
- STN MG-009 - Variáveis Catablema de prefixo
- STN MG-011 - Argumentos Catablema de prefixo
- STN MG-012 - Valores padrão de argumentos
- STN MG-016 - Comprimento do argumento excedido
- ST-NMG-017 - O nome da classe corresponde ao namespace padrão
- SR-DB-002 - Contagem alta de argumentos
- SR-DB-003 - Esvaziar bloco catechu
- SR-DB-007 - Múltiplas camadas Com fluxograma
- ST-DPB-010 - Várias instâncias de [Fluxo de trabalho] ou [Caso de teste]
- SR-DB-020 - Propriedades de saída indefinidas
- SR-DB-021 - Tempo limite embutido em código
- SR-DB-023 - Fluxo de trabalho vazio
- SR-DB-024 - Verificação da atividade Persistente
- SR-DB-025 - Pré-requisito de serialidade de variáveis
- SR-DB-027 - Melhores práticas de persistência
- SR-DB-028 - Pré-requisito de serialidade de argumentos
- ST-USG-005 - Propriedades de atividade codificadas
- SR-US-009 - Variáveis não utilizadas
- SR-US-010 - Dependências não utilizadas
- SR-US-014 - Restrições de pacotes
- ST-USG-017 – Modificador de parâmetro inválido
- SR-US-020 - Mensagens de logue mínimas
- SR-US-024 - Não utilizado e postergado
- SR-US-025 - Uso incorreto do valor salvo
- SR-US-026 - Restrições da atividade
- SR-US-027 - Pacotes necessários
- ST-USG-28 — restringir modelos de invocação de arquivos
- ST-USG-032 — rótulos obrigatórios
- ST-USG-034 — URL do Automation Hub
- Variáveis
- Argumentos
- Namespaces Importados
- Automações codificadas
- Introdução
- Registro de serviços personalizados
- Contextos Antes e Depois
- Gerando código
- Geração de caso de teste codificado a partir de casos de teste manuais
- Integração do OpenAI com fluxos de trabalho codificados
- Solicite um empréstimo com o UiBank
- Geração de filas com fluxos de trabalho codificados e APIs do Orchestrator
- Usando projetos de biblioteca importados em automações codificadas
- Usando autenticação de dois fatores em automações codificadas
- Conexão com MongoDB Atlas com automações codificadas
- Solução de problemas
- Automação assistida baseada em gatilho
- Repo. de Objetos
- A ferramenta ScreenScrapeJavaSupport
- Extensões
- Sobre extensões
- Ferramenta SetupExtensions
- UiPathRemoteRuntime.exe não está sendo executado na sessão remota
- O UiPath Remote Runtime bloqueia a sessão do Citrix de ser fechado
- O UiPath Remote Runtime causa vazamento de memória
- O pacote UiPath.UIAutomation.Activities e as versões do UiPath Remote Runtime não correspondem
- A extensão do UiPath necessária não está instalada na máquina remota
- Configurações de resolução de tela
- Políticas de grupo
- Não é possível se comunicar com o navegador
- A extensão do Chrome é removida automaticamente
- A extensão pode ter sido corrompida
- Verifique se a extensão para o Chrome está instalada e habilitada
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Habilite o Acesso às URLs do arquivo e o Modo Anônimo
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- Lista de extensões para Chrome
- Extensão do Chrome no Mac
- Políticas de grupo
- Não é possível se comunicar com o navegador
- A extensão Edge é removida automaticamente
- A extensão pode ter sido corrompida
- Check if the Extension for Microsoft Edge is installed and enabled
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Enable access to file URLs and InPrivate mode
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- Lista de extensões para Edge
- Extensão para Safari
- Extensão para o Varear Horizonte
- Extensão para Amazon WorkSpaces
- Plug-in do SAP Solution Manager
- Suplemento do Excel
- Teste do Studio
- Solução de problemas
- Sobre a solução de problemas
- Erros de compilação de montagem
- Suporte e limitações do Microsoft Apo-V
- Solução de problemas do Internet Explorer x64
- Problemas do Microsoft Office
- Como identificar elementos de EU em PDF com opções de acessibilidade
- Reparando o suporte da Active Accessibility
- Validation of large Windows-legacy projects takes longer than expected

Guia do usuário do Studio
Registro de serviços personalizados
Para melhorar suas automações codificadas, considere registrar serviços personalizados. Ao registrar um serviço personalizado, você pode usá-lo globalmente em seu projeto. Dessa forma, ele é acessível não apenas em uma única automação codificada, mas em todas as automações codificadas dentro de seu projeto.
- Crie um arquivo de código-fonte e defina uma interface pública nomeada como o serviço que você deseja criar.
Essa interface deve listar os métodos que você pretende usar com seu serviço personalizado. Cada método deve ser implementado em uma classe separada que herda o mesmo arquivo onde você está definindo a interface.
Para este exemplo, nomeie a interface como e IMyServicechame o método dentro dela DoMyMethod.
{
public interface IMyService
{
void DoMyMethod();
}
}
{
public interface IMyService
{
void DoMyMethod();
}
}
- Prossiga para outro arquivo de código-fonte e implemente os métodos da interface criada anteriormente.
Esta classe deve herdar do mesmo arquivo de código-fonte onde a interface pública foi criada.
Neste exemplo, implemente o DoMyMethodmétodo para gerar o valor de uma variável.
public class MyService : IMyService
{
public void DoMyMethod()
{
var a = "hello world";
Console.WriteLine(a);
}
}
}
public class MyService : IMyService
{
public void DoMyMethod()
{
var a = "hello world";
Console.WriteLine(a);
}
}
}
- Crie uma classe parcial para encapsular seu serviço personalizado, tornando-o acessível a partir de qualquer fluxo de trabalho codificado que herde essa classe.
- Crie outro arquivo de código-fonte e declare a classe parcial pública chamada
Coded Workflow. Faça essa classe herdar classeCodedWorkflowBase. - Crie uma propriedade get-only para o serviço personalizado que você criou, que permite acesso a uma instância da interface de serviço.
- Crie outro arquivo de código-fonte e declare a classe parcial pública chamada
A instância é obtida por meio de injeção de dependência usando o serviceContainer.Resolve<IMyService>()método .Isso fornece uma maneira de interagir com o serviço personalizado dentro da classe parcial.
```
public IMyService myService { get => serviceContainer.Resolve<IMyService>()};
```
```
public IMyService myService { get => serviceContainer.Resolve<IMyService>()};
```
3. Expanda ainda mais sua classe adicionando o método RegisterServices.
Ao invocar esse método, você registra seu serviço personalizado no contêiner de serviço UiPath.
```
protected override void RegisterServices(ICodedWorkflowsServiceLocator serviceLocator)
{
serviceLocator.RegisterType<IMyService, MyService>();
}
```
```
protected override void RegisterServices(ICodedWorkflowsServiceLocator serviceLocator)
{
serviceLocator.RegisterType<IMyService, MyService>();
}
```
Você também pode usar RegisterInstance em vez de RegisterType. Verifique as seguintes diferenças entre as duas implementações e seus métodos de assinatura: * RegisterType - Quando você usa RegisterType, você especifica o contêiner para criar uma nova cópia ou instância do seu serviço cada vez que você o chama.RegisterType oferece um plano a ser seguido, com base no qual criar um novo serviço de cada vez. + TService: este é o tipo de interface de serviço que será consumido pelo serviço. É a interface que você cria para seu serviço. Para este exemplo, é IMyService. + TServiceImplementation: esta é a classe que implementa a interface TService.É a classe que é criada quando um serviço do tipo TService é solicitado.+ registrationType: esse padrão é CodeServiceRegistrationType.Singleton. Define a política de registro de serviço. void RegisterType<TService, TServiceImplementation>(CodeServiceRegistrationType registrationType = CodeServiceRegistrationType.Singleton) where TService : class where TServiceImplementation : class, TService; * RegisterInstance - Quando você usa RegisterInstance, você oferece ao contêiner uma instância pronta desse serviço, que você já criou antes. Toda vez que você chama o serviço, o contêiner retorna esse serviço pré-fabricado exato. RegisterInstance retorna uma cópia exata do serviço que você criou. + TServiceImplementation: esta é a instância pronta de uma classe que você já criou. Essa instância é retornada sempre que um serviço desse tipo precisa ser resolvido. Para este exemplo, MySecondService. + serviceTypes: esta é uma matriz de tipos com os quais a Instância estará disponível, quando chamada. void RegisterInstance<TServiceImplementation>(TServiceImplementation instance, params Type[] serviceTypes) where TServiceImplementation : class;
O fragmento de código abaixo mostra um exemplo de como a classe parcial pública foi implementada:
public partial class CodedWorkflow : CodedWorkflowBase
{
public IMyService myService { get => serviceContainer.Resolve<IMyService>() ; }
protected override void RegisterServices(ICodedWorkflowsServiceLocator serviceLocator)
{
// Implementation using 'RegisterType'
serviceLocator.RegisterType<IMyService, MyService>();
// Implementation using 'RegisterInstance'
var secondService = new MySecondService();
serviceLocator.RegisterInstance<MySecondService>(secondService);
}
public partial class CodedWorkflow : CodedWorkflowBase
{
public IMyService myService { get => serviceContainer.Resolve<IMyService>() ; }
protected override void RegisterServices(ICodedWorkflowsServiceLocator serviceLocator)
{
// Implementation using 'RegisterType'
serviceLocator.RegisterType<IMyService, MyService>();
// Implementation using 'RegisterInstance'
var secondService = new MySecondService();
serviceLocator.RegisterInstance<MySecondService>(secondService);
}
Próximas Etapas
Para usar o serviço personalizado que você criou, faça referência ao namespace desse serviço dentro do arquivo em que você está trabalhando, empregando a instrução using. O namespace do serviço personalizado representa o nome do projeto e o nome das pastas/subpastas nas quais o arquivo .cs pode estar. O formato do namespace é o seguinte: <ProjectName>.<Folder>.<SubFolder>
Por exemplo, se você criar um serviço personalizado dentro de um projeto chamado GeneralCustomServices, dentro da pasta MyCustomService, o namespace desse serviço será: GeneralCustomServices.MyCustomService.