APIs a Serem Usadas em Políticas Customizadas

Ao escrever políticas customizadas, você pode usar diversas APIs. As APIs que você usa dependem dos recursos com os quais você trabalha e com o que deseja fazer com esses recursos. Por exemplo, use APIs diferentes para atualizar o recurso no qual uma política está em execução do que você usaria para criar um recurso.

APIs a Serem Usadas com o Recurso Atual

É possível criar políticas usando as APIs do cliente Java.

Se você estiver fazendo atualizações apenas para o ativo com relação ao qual a política está em execução, será possível usar os métodos de contexto de política para criar uma sessão e obter o ativo. Para criar um RAMSession e recuperar o RAMAsset atual, use as seguintes APIs:
RAMSession
ramSession = getPolicyContext().getRAMSession();
RAMAsset ramAsset = getPolicyContext().getRAMAsset();

É possível usar várias classes de API Java do Rational Asset Manager para atualizar o ativo atual. Por exemplo, você poderá incluir um relacionamento ou configurar uma ação. Também poderá usar as classes de API para trabalhar com recursos, atributos de recursos e artefatos.

Você também pode usar as APIs Java para alterar ou criar recursos além daquele no qual a política está em execução. Inclua os arquivos JAR do cliente Java e use um RAMSession(). Para obter melhor desempenho ao usar APIs ram.client, limite as atualizações de recursos a uma única sessão.

Siga estas etapas em seu código de política customizado:
  1. Crie uma sessão usando o método getRAMSession. Nenhuma licença é consumida para essas sessões.
  2. Obtenha um ativo com o método getRAMAsset.
  3. Use as APIs RAMSession e RAMAsset para executar operações de ativos.
  4. Confirme as mudanças como uma transação usando o método session.putAssets.
Por exemplo:
RAMSession session =
getPolicyContext().getRAMSession();  
RAMAsset currentAsset = this.getPolicyContext().getRAMAsset();  
  
// Usar as APIs de cliente para fazer mudanças no ativo ...

// Também é possível modificar ou criar outros ativos:
			RAMAsset asset = session.createAsset("1.0");
			asset.setName("Test Asset");
			asset.setCommunity(session.getCommunity("Sample Application Development"));
			asset.setAssetType(session.getAssetType("Business Solution"));
			asset.setShortDescription("Test asset");
			asset.setOwners(new RAMUser[] { session.getUser("admin") });
		 	
// Confirmar as mudanças para o repositório de ativos para o ativo atual:
			session.putAsset(currentAsset);  

// É possível usar queueAssetForPut e, em seguida, putAssets para enfileirar e, depois,
// confirmar todos os ativos alterados na sessão como uma transação:
			session.queueAssetForPut(currentAsset);  

// Confirme as alterações em todos os ativos alterados na sessão:
			session.putAssets(new NullProgressMonitor());  	
Para usar as APIs ram.client, você deve carregar o ram.client e os arquivos JAR de política e importar os arquivos no código de política:
import com.ibm.ram.common.*
import com.ibm.ram.client.* 

Para as APIs do cliente Java, consulte: pacote de clientes e pacote de dados comuns.

Consulte a seção Exemplo neste tópico e Usando a API Java do Rational Asset Manager para exemplos adicionais.

  • Obter o ID do recurso:
    myAssetUniqueID = getManifestAccessor().getId();
  • Buscar o recurso por GUID e versão:
    RAMAsset myAsset = session.getAsset(new AssetIdentification(myAssetUniqueID, "*"));
    
    // Obter exemplos de atributos de recursos:
    AssetAttribute myAttribute = myAsset.getAssetAttribute("Family Name");
    String[] myAttrValue = myAttribute.getValues();
    
    myAttribute = myAsset.getAssetAttribute("Work Item");
    myAttrValue = myAttribute.getValues();
    
    myAttribute = myAsset.getAssetAttribute("Requirement");
    myAttrValue = myAttribute.getValues();
  • Criar uma consulta para procurar recursos:
    SearchQuery query = session.createAssetQuery(queryParam);
    int offset = 0;
    int maxResults = 100;
    query.setResultsStartIndex(offset);
    query.setMaxResults(maxResults);
    SearchResult result = session.getAssets(query);
  • Criar um recurso:
    RAMAsset newAsset = session.createAsset("1.0");
    newAsset.setName("The new related asset");
    newAsset.setCommunity(session.getCommunity("Rational Asset Manager Development"));
    newAsset.setAssetType(session.getAssetType("Specification"));
    newAsset.setShortDescription("The Specification asset is required.");
  • Criar um AssetID para o novo recurso:
    AssetID id = new AssetID();
    id.setGUID(newAsset.getId());
    id.setVersion(newAsset.getVersion());
  • Use as APIs de cliente Java para uma procura:
    public Result test() {
    		try {
    			// Criar parâmetros de configuração para url, usuário, senha
    			String url = "http://host-name-goes-here:9080/ram";
    			String user = "admin";
    			String password = "admin";
    			String queryParam = null;
    
    			// Configurar uma consulta 
    			RAMSession session = new RAMSession(url, user, password);
    			SearchQuery query = session.createAssetQuery(queryParam);
    			int offset = 0;
    			int maxResults = 100;
    			query.setResultsStartIndex(offset);
    			query.setMaxResults(maxResults);
    			SearchResult result = session.getAssets(query); 
    			 
    			if (result != null && result.getAssetSearchResults() != null) {
    				AssetSearchResult[] assets = result.getAssetSearchResults();
    	
    				for (AssetSearchResult asset : assets) {
    					AssetInformation assetInformation = asset.getAsset();
    				// Modificar um recurso aqui, por exemplo,
    				// criar um relacionamento "DependsOn" a partir dos recursos de tipos de Liberação e Implementação para um recurso de Especificação do mesmo nome usando as APIs de cliente, como este:
    				// Relationship theRelationships = session.getRelationships
    				// getRelationships().add(newItem);
    				}
    			}
    		}
     
    		// Capturar exceções...
    				Result result = new Result();
    		result.setMessage("Success");
    		return result;
    		 
    	}
  • Obtenha o local da pasta usando as APIs Java do Rational Asset Manager para recuperar as informações dos artefatos do ativo e fazer download dos artefatos:
     		// Obtenha o ativo
    		RAMAsset ramAsset = getRAMAsset(); 
                
    		 		// Obtenha o local e o conteúdo dos artefatos
    		RAMFolderArtifact srcFolderArtifact = (RAMFolderArtifact)ramAsset.getArtifactsRoot();
    		Artifact[] srcArtifacts = srcFolderArtifact.computeArtifactsAsFlatList(new NullProgressMonitor());
    		 
    		for (Artifact artifact : srcArtifacts) {
            RAMArtifact ramArtifact = (RAMArtifact) artifact;
    					InputStream is = ramArtifact.downloadContents();
    					f = File.createTempFile("theArtifact", null, new File(ramSession.getLocalStorageLocation()));
    					UtilitiesCommon.copyStreams(is, new FileOutputStream(f), null, true, true);
             }

Feedback