Skip to end of banner
Go to start of banner

Search assets with Java Api

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

This example searches for assets with asset type "all types" and asset ids between 10494 and 10495. And then extracts asset field values which contains core, system and attribute values.

If you would like to override security use aipIndexService.queryDocsForObjectOverrideSecurity, if you want permission check with current user use aipIndexService.queryDocsForObject(queryIndexParam, user);

Script

import com.atlassian.jira.component.ComponentAccessor
import com.onresolve.scriptrunner.runner.customisers.PluginModule
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
import groovy.transform.Field
import inventoryplugin.constant.StatusEnum
import inventoryplugin.constant.SubstatusEnum
import inventoryplugin.dto.portable.InventoryDto
import inventoryplugin.dto.portable.InventoryItemDto
import inventoryplugin.helper.JipUtilityHelper
import inventoryplugin.service.index.AipIndexService
import inventoryplugin.service.index.search.QueryIndexParam
import inventoryplugin.service.index.search.QueryIndexResult
import inventoryplugin.service.index.search.QueryIndexSearchParam
import inventoryplugin.service.rest.dto.SystemFieldDto
import org.apache.log4j.Level
import org.apache.log4j.Logger

@Field Logger logger = Logger.getLogger("snapbytes.inventoryplugin.groovy.script")
logger.setLevel(Level.DEBUG)

@WithPlugin("plugin.jip")

@PluginModule
AipIndexService aipIndexService

try {
    QueryIndexParam queryIndexParam = new QueryIndexParam();
    queryIndexParam.setQuerySource(QueryIndexParam.QuerySource.GENERIC_SEARCH);
    queryIndexParam.setSortField("asset.name");
    queryIndexParam.setSortDirection("asc");
    queryIndexParam.setSortType("STRING");
    queryIndexParam.setSearchType("basic");
    queryIndexParam.setPageNumber(1);
    queryIndexParam.setPageSize(1000);
    queryIndexParam.setQueryIndexSearchParams(new ArrayList<>());

    // filter by asset type
    QueryIndexSearchParam query = new QueryIndexSearchParam();
    query.setField("form.name");
    query.setKeywords(new ArrayList<>());
    query.getKeywords().add("all types");
    query.setRange(true);
    queryIndexParam.getQueryIndexSearchParams().add(query);

    QueryIndexSearchParam query2 = new QueryIndexSearchParam();
    query2.setField("asset.id");
    query2.setMinNum(10494);
    query2.setMaxNum(10495);
    query2.setRange(true);
    queryIndexParam.getQueryIndexSearchParams().add(query2);

    def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
    //QueryIndexResult queryIndexResult = aipIndexService.queryDocsForObject(queryIndexParam, user);
    QueryIndexResult queryIndexResult = aipIndexService.queryDocsForObjectOverrideSecurity(queryIndexParam, user);
    def queryIndexResultAsTxt = JipUtilityHelper.convertObjectToJsonStringSafe(queryIndexResult);

    List<InventoryDto> assets = JipUtilityHelper.convertJsonStringToListSafe(queryIndexResult.getAssets(), InventoryDto.class);

    if (assets != null) {
        logger.debug(assets.size() + ' assets found')

        for (InventoryDto oneAsset : assets) {
            logger.debug('----------------------------------------------------')
            logger.debug('----------------------------------------------------')
            logger.debug('Asset id: ' + oneAsset.id)
            logger.debug('Asset name: ' + oneAsset.name)
            logger.debug('Asset type id: ' + oneAsset.formId)
            logger.debug('Asset type name: ' + oneAsset.formName)
            logger.debug('Asset type scheme id: ' + oneAsset.objectSchemaId)
            logger.debug('Asset type scheme name: ' + oneAsset.objectSchemaName)
            logger.debug('Attachments json string: ' + oneAsset.attachments)
            logger.debug('Updated by: ' + oneAsset.updatedBy)
            logger.debug('Updated at: ' + oneAsset.updated)
            logger.debug('Created by: ' + oneAsset.creator)
            logger.debug('Created at: ' + oneAsset.created)

            logger.debug('--- Attributes ----------------------')
            List<InventoryItemDto> inventoryItems = oneAsset.getInventoryItems();
            for (InventoryItemDto assetAttr : inventoryItems) {
                logger.debug(assetAttr.attributeName + ': ' + assetAttr.value + " (Display value=" + assetAttr.displayValue + ")");
            }

            logger.debug('--- System Fields ----------------------')
            List<SystemFieldDto> systemFields = oneAsset.getSystemFields();
            for (SystemFieldDto systemFieldDto : systemFields) {

                if (systemFieldDto.fieldName == "asset.status") {
                    def status = StatusEnum.getByKey(systemFieldDto.value);
                    String displayValue = status != null ? status.displayName : ""
                    logger.debug(systemFieldDto.fieldName + ': ' + systemFieldDto.value + " (Display value: " + displayValue + ")");
                } else if (systemFieldDto.fieldName == "asset.substatus") {
                    def substatus = SubstatusEnum.getByKey(systemFieldDto.value);
                    String displayValue = substatus != null ? substatus.displayName : ""
                    logger.debug(systemFieldDto.fieldName + ': ' + systemFieldDto.value + " (Display value: " + displayValue + ")");
                } else {
                    logger.debug(systemFieldDto.fieldName + ': ' + systemFieldDto.value + " (Display value: " + systemFieldDto.displayValue + ")");
                }
            }
        }


    }
    return queryIndexResultAsTxt;

} catch (Exception e) {
    logger.debug(e.getMessage())
    return e.getMessage();
}

Output

2020-06-23 17:00:29,948 DEBUG [groovy.script]: 2 assets found
2020-06-23 17:00:29,948 DEBUG [groovy.script]: ----------------------------------------------------
2020-06-23 17:00:29,948 DEBUG [groovy.script]: ----------------------------------------------------
2020-06-23 17:00:29,948 DEBUG [groovy.script]: Asset id: 10494
2020-06-23 17:00:29,948 DEBUG [groovy.script]: Asset name: all two - clone 3
2020-06-23 17:00:29,948 DEBUG [groovy.script]: Asset type id: 36
2020-06-23 17:00:29,948 DEBUG [groovy.script]: Asset type name: all types
2020-06-23 17:00:29,948 DEBUG [groovy.script]: Asset type scheme id: 2
2020-06-23 17:00:29,948 DEBUG [groovy.script]: Asset type scheme name: HR Assets
2020-06-23 17:00:29,948 DEBUG [groovy.script]: Attachments json string: [ {
  "originalFileName" : "marla.jpg",
  "serverFileName" : "10653_77560_1591789643914.jpg",
  "fileSize" : "24 KB",
  "created" : "10/Jun/20 2:47 PM",
  "creator" : "admin"
} ]
2020-06-23 17:00:29,949 DEBUG [groovy.script]: Updated by: admin
2020-06-23 17:00:29,949 DEBUG [groovy.script]: Updated at: Wed Jun 10 14:47:23 MSK 2020
2020-06-23 17:00:29,949 DEBUG [groovy.script]: Created by: admin
2020-06-23 17:00:29,949 DEBUG [groovy.script]: Created at: Wed Jun 10 14:37:02 MSK 2020
2020-06-23 17:00:29,949 DEBUG [groovy.script]: --- Attributes ----------------------
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - Asset list:  (Display value=<a style="font-size: 100%" href="https://jira-test.snapbytes.com/secure/DashboardAIPAction!default.jspa#/browse/183">admin çalışanı</a>, <a style="font-size: 100%" href="https://jira-test.snapbytes.com/secure/DashboardAIPAction!default.jspa#/browse/221">Asset Name 0001</a>)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - asset list by type:  (Display value=<a style="font-size: 100%" href="https://jira-test.snapbytes.com/secure/DashboardAIPAction!default.jspa#/browse/10379">blue pc</a>, <a style="font-size: 100%" href="https://jira-test.snapbytes.com/secure/DashboardAIPAction!default.jspa#/browse/138">Emp 001</a>)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - checkbox:  (Display value=ada, bal)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - date picker: 24/Dec/19 (Display value=24/Dec/19)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - date time picker: 31/Dec/19 2:39 PM (Display value=31/Dec/19 2:39 PM)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - dropdown list: cam (Display value=cam)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - IP: 192.168.1.1 (Display value=192.168.1.1)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - IPv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 (Display value=2001:0db8:85a3:0000:0000:8a2e:0370:7334)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: All - Jira user: admin (Display value=admin (admin))
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - jira single user: agrant-sd-demo (Display value=Alana Grant (agrant-sd-demo))
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - jira multiple users:  (Display value=Mitch Davis (mdavis-sd-demo), Asset User 1 (assetuser))
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - listbox: lahmacun (Display value=lahmacun)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - listbox multiple:  (Display value=mavi, kırmızı)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - number long: 120 (Display value=120)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - number float: 150 (Display value=150)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - radio: paranoid (Display value=paranoid)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - text: sample text here (Display value=sample text here)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - text area: more sample 
text here (Display value=more sample 
text here)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: all - url: https://jira-test.snapbytes.com/ (Display value=<a style="font-size: 100%" href="https://jira-test.snapbytes.com/" target="_blank">https://jira-test.snapbytes.com/</a>)
2020-06-23 17:00:29,950 DEBUG [groovy.script]: --- System Fields ----------------------
2020-06-23 17:00:29,951 DEBUG [groovy.script]: asset.quantity: 100 (Display value: null)
2020-06-23 17:00:29,951 DEBUG [groovy.script]: asset.costCurrency: USD (Display value: null)
2020-06-23 17:00:29,951 DEBUG [groovy.script]: asset.reservedFor: vwong-sd-demo (Display value: null)
2020-06-23 17:00:29,952 DEBUG [groovy.script]: asset.assetTag: asset tag (Display value: null)
2020-06-23 17:00:29,952 DEBUG [groovy.script]: asset.owner: agrant-sd-demo (Display value: null)
2020-06-23 17:00:29,952 DEBUG [groovy.script]: asset.serialNumber: my serial 101 (Display value: null)
2020-06-23 17:00:29,952 DEBUG [groovy.script]: asset.status: 1 (Display value: In stock)
2020-06-23 17:00:29,953 DEBUG [groovy.script]: asset.installDate: 2020-06-10 (Display value: null)
2020-06-23 17:00:29,953 DEBUG [groovy.script]: asset.managedBy: mdavis-sd-demo (Display value: null)
2020-06-23 17:00:29,954 DEBUG [groovy.script]: asset.substatus: 2 (Display value: Reserved)
2020-06-23 17:00:29,954 DEBUG [groovy.script]: asset.assignee: rlee-sd-demo (Display value: null)
2020-06-23 17:00:29,954 DEBUG [groovy.script]: asset.belongsToGroup: [ "jira-servicedesk-users", "jira-software-users" ] (Display value: null)
2020-06-23 17:00:29,954 DEBUG [groovy.script]: asset.location: 2 (Display value: null)
2020-06-23 17:00:29,954 DEBUG [groovy.script]: asset.cost: 1200 (Display value: null)
2020-06-23 17:00:29,954 DEBUG [groovy.script]: asset.invoiceNumber: my invoice 10387 (Display value: null)
2020-06-23 17:00:29,954 DEBUG [groovy.script]: ----------------------------------------------------
2020-06-23 17:00:29,954 DEBUG [groovy.script]: ----------------------------------------------------
2020-06-23 17:00:29,954 DEBUG [groovy.script]: Asset id: 10495
2020-06-23 17:00:29,954 DEBUG [groovy.script]: Asset name: all two - clone 4
2020-06-23 17:00:29,954 DEBUG [groovy.script]: Asset type id: 36
2020-06-23 17:00:29,954 DEBUG [groovy.script]: Asset type name: all types
2020-06-23 17:00:29,954 DEBUG [groovy.script]: Asset type scheme id: 2
2020-06-23 17:00:29,954 DEBUG [groovy.script]: Asset type scheme name: HR Assets
2020-06-23 17:00:29,954 DEBUG [groovy.script]: Attachments json string: [ {
  "originalFileName" : "Marla_Singer_2.jpg",
  "serverFileName" : "10163_48190_1591789628314.jpg",
  "fileSize" : "27 KB",
  "created" : "10/Jun/20 2:47 PM",
  "creator" : "admin"
}, {
  "originalFileName" : "xps13-2.jpg",
  "serverFileName" : "23815_70783_1591870901186.jpg",
  "fileSize" : "42 KB",
  "created" : "11/Jun/20 1:21 PM",
  "creator" : "admin"
}, {
  "originalFileName" : "bobswift example2.groovy",
  "serverFileName" : "06040_73967_1592483691399.groovy",
  "fileSize" : "3 KB",
  "created" : "18/Jun/20 3:34 PM",
  "creator" : "admin"
} ]
2020-06-23 17:00:29,954 DEBUG [groovy.script]: Updated by: admin
2020-06-23 17:00:29,954 DEBUG [groovy.script]: Updated at: Mon Jun 22 16:41:41 MSK 2020
2020-06-23 17:00:29,954 DEBUG [groovy.script]: Created by: admin
2020-06-23 17:00:29,954 DEBUG [groovy.script]: Created at: Wed Jun 10 14:37:31 MSK 2020
2020-06-23 17:00:29,954 DEBUG [groovy.script]: --- Attributes ----------------------
2020-06-23 17:00:29,954 DEBUG [groovy.script]: all - Asset list:  (Display value=<a style="font-size: 100%" href="https://jira-test.snapbytes.com/secure/DashboardAIPAction!default.jspa#/browse/183">admin çalışanı</a>, <a style="font-size: 100%" href="https://jira-test.snapbytes.com/secure/DashboardAIPAction!default.jspa#/browse/221">Asset Name 0001</a>)
2020-06-23 17:00:29,954 DEBUG [groovy.script]: all - asset list by type:  (Display value=<a style="font-size: 100%" href="https://jira-test.snapbytes.com/secure/DashboardAIPAction!default.jspa#/browse/10379">blue pc</a>, <a style="font-size: 100%" href="https://jira-test.snapbytes.com/secure/DashboardAIPAction!default.jspa#/browse/138">Emp 001</a>)
2020-06-23 17:00:29,954 DEBUG [groovy.script]: all - checkbox:  (Display value=ada, bal)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - date picker: 26/Dec/19 (Display value=26/Dec/19)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - date time picker: 31/Dec/19 2:39 PM (Display value=31/Dec/19 2:39 PM)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - dropdown list: cam (Display value=cam)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - IP: 192.168.1.1 (Display value=192.168.1.1)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - IPv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 (Display value=2001:0db8:85a3:0000:0000:8a2e:0370:7334)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: All - Jira user: admin (Display value=admin (admin))
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - jira single user: agrant-sd-demo (Display value=Alana Grant (agrant-sd-demo))
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - jira multiple users:  (Display value=Mitch Davis (mdavis-sd-demo), Asset User 1 (assetuser))
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - listbox: lahmacun (Display value=lahmacun)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - listbox multiple:  (Display value=mavi, kırmızı)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - number long: 120 (Display value=120)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - number float: 150 (Display value=150)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - radio: paranoid (Display value=paranoid)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - text: sample text here (Display value=sample text here)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - text area: more sample 
text here (Display value=more sample 
text here)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: all - url: https://jira-test.snapbytes.com/ (Display value=<a style="font-size: 100%" href="https://jira-test.snapbytes.com/" target="_blank">https://jira-test.snapbytes.com/</a>)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: --- System Fields ----------------------
2020-06-23 17:00:29,955 DEBUG [groovy.script]: asset.quantity: 100 (Display value: null)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: asset.reservedFor: tyler (Display value: null)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: asset.costCurrency: USD (Display value: null)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: asset.assetTag: asset tag (Display value: null)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: asset.owner: agrant-sd-demo (Display value: null)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: asset.serialNumber: my serial 101 (Display value: null)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: asset.status: 1 (Display value: In stock)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: asset.installDate: 2020-06-10 (Display value: null)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: asset.managedBy: mdavis-sd-demo (Display value: null)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: asset.substatus: 2 (Display value: Reserved)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: asset.assignee: JIRAUSER10303 (Display value: null)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: asset.belongsToGroup: [ "jira-servicedesk-users", "jira-software-users" ] (Display value: null)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: asset.cost: 1200 (Display value: null)
2020-06-23 17:00:29,955 DEBUG [groovy.script]: asset.location: 2 (Display value: null)
2020-06-23 17:00:29,956 DEBUG [groovy.script]: asset.invoiceNumber: my invoice 10387 (Display value: null)
  • No labels