APIs a utilizar en políticas personalizadas

Cuando escribe políticas personalizadas, puede utilizar varias APIs. Las API que puede utilizar dependen de los activos con los que trabaja y de lo que desea hacer con esos activos. Por ejemplo, puede utilizar diferentes APIs para actualizar el activo sobre el que se está ejecutando una política que las que utiliza para crear un activo.

APIs a utilizar con el activo actual

Puede crear políticas utilizando las API de cliente Java.

Si solo realiza actualizaciones en el activo en el que se ejecuta la política, puede utilizar los métodos de contexto de política para crear una sesión y obtener el activo. Para crear una RAMSession y recuperar el RAMAsset actual, utilice las API siguientes:
RAMSession ramSession = getPolicyContext().getRAMSession();
RAMAsset ramAsset = getPolicyContext().getRAMAsset();

Puede utilizar varias de las clases de API de Rational Asset Manager Java para actualizar el activo actual. Por ejemplo, puede añadir una relación o establecer una acción. También puede utilizar las clases de API para trabajar con activos, atributos de activos y artefactos.

También puede utilizar la API Java para cambiar o crear otros activos además de aquel en el que se está ejecutando la política. Debe incluir los archivos JAR de cliente Java y utilizar una RAMSession(). Para obtener un mejor rendimiento al utilizar APIs de ram.client, limite las actualizaciones de activos a una sola sesión.

Siga estos pasos en el código de política personalizada:
  1. Cree una sesión utilizando el método getRAMSession. No se consumen licencias para estas sesiones.
  2. Obtenga un activo con el método getRAMAsset.
  3. Utilice las API RAMSession y RAMAsset para realizar operaciones de activo.
  4. Confirme los cambios como una transacción utilizando el método session.putAssets.
Por ejemplo:
RAMSession session = getPolicyContext().getRAMSession();  
RAMAsset currentAsset = this.getPolicyContext().getRAMAsset();  
  
// Utilice las API de cliente para realizar los cambios en el activo ...

// También puede modificar o crear otros activos:
			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") });
		 	
// Confirme los cambios en el repositorio de activos para el activo actual:
			session.putAsset(currentAsset);  

// Puede utilizar queueAssetForPut y luego putAssets para colocar en cola y luego
// confirmar todos los activos que ha cambiado en la sesión como una transacción:
			session.queueAssetForPut(currentAsset);  

// Confirmar los cambios de todos los activos que ha cambiado en la sesión:
			session.putAssets(new NullProgressMonitor());  	
Para utilizar las API de ram.client, debe cargar el ram.client y los archivos JAR de política e importar los archivos en el código de política:
import com.ibm.ram.common.*
import com.ibm.ram.client.* 

Para las API de cliente Java , consulte: paquete de cliente y paquete de datos común.

Consulte la sección Ejemplo de este tema y Utilización de la API Java de Rational Asset Manager para obtener ejemplos adicionales.

  • Obtener el ID de activo:
    myAssetUniqueID = getManifestAccessor().getId();
  • Captar el activo por su GUID y versión:
    RAMAsset myAsset = session.getAsset(new AssetIdentification(myAssetUniqueID, "*"));
    
    // Obtener ejemplos de atributos de activo:
    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();
  • Crear una consulta para buscar activos:
    SearchQuery query = session.createAssetQuery(queryParam);
    int offset = 0;
    int maxResults = 100;
    query.setResultsStartIndex(offset);
    query.setMaxResults(maxResults);
    SearchResult result = session.getAssets(query);
  • Crear un activo:
    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.");
  • Crear un AssetID para el activo nuevo:
    AssetID id = new AssetID();
    id.setGUID(newAsset.getId());
    id.setVersion(newAsset.getVersion());
  • Utilizar las API de cliente Java para una búsqueda:
    public Result test() {
    		try {
    			// Crear parámetros de configuración para el url, el usuario y la contraseña
    			String url = "http://host-name-goes-here:9080/ram";
    			String user = "admin";
    			String password = "admin";
    			String queryParam = null;
    
    			// Establecer una 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 un activo aquí, por ejemplo,
    				// crear una relación "DependsOn" de los activos de tipo Release e Implementation al activo Specification del mismo nombre mediante las API de cliente, de esta manera:
    				// Relationship theRelationships = session.getRelationships
    				// getRelationships().add(newItem);
    				}
    			}
    		}
     
    		// Capturar excepciones...
    				Result result = new Result();
    		result.setMessage("Success");
    		return result;
    		 
    	}
  • Obtener la ubicación de carpeta mediante la API Java de Rational Asset Manager para recuperar información de artefactos de activo y descargar los artefactos:
     		// Obtener el activo
    		RAMAsset ramAsset = getRAMAsset(); 
                
    		 		// Obtener la ubicación y el contenido de los artefactos
    		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);
             }

Comentarios