cancel
Showing results for 
Search instead for 
Did you mean: 

number of jobs on job server/group

Former Member
0 Kudos

How do I determine the number of jobs currently executing and pending via AdminTools.

I can determine overall using si_schedule_status, but would like to obtain info for each of the job servers or each server group.

a) from the job server



FROM CI_SYSTEMOBJECTS
WHERE si_name='CrystalReportsJobServer-1'
and SI_KIND='Server'
and SI_SERVER_KIND='jobserver'

b) job servers attached to a report server group.



FROM CI_SYSTEMOBJECTS
WHERE si_name='CrystalReportsJobServerGROUP-1''
and SI_KIND='Server'?

something like this?

TIA,

JM

Accepted Solutions (1)

Accepted Solutions (1)

ted_ueda
Employee
Employee
0 Kudos

Need version info.

Also, it'll be good to indicate which metric - for example, is it being displayed in the CMC?

Sincerely,

Ted Ueda

Former Member
0 Kudos

Env = BOE XI 3.0

I found the info for jobs via IJobServerAdmin. But it seems to be deprecated. What should I use instead?

Metrics I am looking for :

Found these 2 in IJobServerAdmin

1) getCurrentJobs,

2) getMaxJobs

Trying to search for

3) names of jobs running /server

4) number of pending jobs/server

5) number of failed jobs/server

TIA,

JM

ted_ueda
Employee
Employee
0 Kudos

Server Metrics interface was changed with XI 3.x, to allow for increasing number of metrics and multi-language support. So given IServer server:


  serverMetrics = server.getMetrics();
  for(Iterator iServiceInterfaceName 
                = serverMetrics.getServiceInterfaceNames().iterator(); 
                iServiceInterfaceName.hasNext() 😉 {
            String serviceInterfaceName;
            IMLDescriptions mlDescriptions;
            IMetrics metrics;

            serviceInterfaceName = (String) iServiceInterfaceName.next();
            mlDescriptions = metricDescriptions.getMetricDescriptions(serviceInterfaceName);
            metrics = serverMetrics.getMetrics(serviceInterfaceName);

            for(Iterator imetric = metrics.iterator(); imetric.hasNext(); ) {
                IMetric metric;
                String  metricName;
                Object  metricValue;
                String  localizedMetricName;
                IPropertyRenderTemplate propertyRenderTemplate;

                metric      = (IMetric) imetric.next();
                metricName  = metric.getName();
                metricValue = metric.getValue();

                propertyRenderTemplate = mlDescriptions.getPropertyRenderTemplate(metricName);
                
                // Do not display hidden values
                if(ValueFormat.HIDDEN.equals(propertyRenderTemplate.getValueFormat())) {
                    continue;
                }
  
                localizedMetricName = propertyRenderTemplate.getLabel(Locale.ENGLISH);

                outputString = metricValueToString(metricValue, propertyRenderTemplate);                
            }
        }

where


/*
 * Convert Metric Value to String
 */
String metricValueToString (Object value, IPropertyRenderTemplate propertyRenderTemplate) {
    ValueFormat valueFormat;
    if (value == null)
        return null;
    
    valueFormat = propertyRenderTemplate.getValueFormat();
    
    if (ValueFormat.INTEGER.equals(valueFormat)) {
        return value.toString();
    } else if (ValueFormat.FLOAT.equals(valueFormat) 
                || ValueFormat.PERCENT.equals(valueFormat)
                || ValueFormat.SHIFTSIZE_KB.equals(valueFormat)
                || ValueFormat.SHIFTSIZE_MB.equals(valueFormat)
                || ValueFormat.SHIFTSIZE_GB.equals(valueFormat)) {
            
        double val;
        double scale = 1.0;
 
        if(value instanceof String) {
            val = Double.parseDouble((String) value);
        } else {
            val = ((Number) value).doubleValue();
        }

        if(ValueFormat.PERCENT.equals(valueFormat)) {
            scale = 100.0;
        } else if(ValueFormat.SHIFTSIZE_KB.equals(valueFormat)) {
            scale = 1024.0;
        } else if(ValueFormat.SHIFTSIZE_MB.equals(valueFormat)) {
            scale = 1024.0 * 1024.0;
        } else if(ValueFormat.SHIFTSIZE_GB.equals(valueFormat)) {
            scale = 1024.0 * 1024.0 * 1024.0;
        }
                        
        return "" + (val/scale);
    } else if (ValueFormat.DATETIME.equals(valueFormat)) {
        return value.toString();
    } else if (ValueFormat.PROPBAG.equals(valueFormat)) {
        PropertyBag propertyBag;

        if(value instanceof PropertyBag) {
            propertyBag = (PropertyBag) value;
        } else {
            WireOb3Unpacker unpacker;

            propertyBag = new PropertyBag();
            unpacker = new WireOb3Unpacker();
            unpacker.initialize(value.toString());

            propertyBag.unpack(unpacker);            
        }
        return propertyBagToHtml(propertyBag);
    } else if (ValueFormat.STRING_MAP.equals(valueFormat))  {     
        return value.toString();
    } else if (ValueFormat.BOOLEAN.equals(valueFormat)) {
        return value.toString();
    } else {
        return value.toString();
    }
}

Hope this helps.

Sincerely,

Ted Ueda

Answers (0)