Creating variables in BO using BO SDK

Hi,
We can create variables which can be formulas applied on objects using infoview.
Is there any way, these variables can be created using java BO SDK?
Please paste some sample code for us.
Cheers,
Shruti

Please find below a snippet code based on java managed RAS api that adds a formula onto the report. I hope this answer your question.
<%@ include file="logon.jsp"%>
<%
    ReportClientDocument oReportClientDocument;
    IReportAppFactory oReportAppFactory;
    IInfoObjects oInfoObjects=null;
     IInfoObject oInfoObject=null;
     String reportName = "SimpleRCAPIReport.rpt";
    // Retrieve report to be modified
    oInfoObjects = iStore.query("Select * from CI_INFOOBJECTS where SI_PROGID = 'CrystalEnterprise.Report' and SI_INSTANCE = 0 and SI_NAME = '" + reportName + "'");
     oReportAppFactory = (IReportAppFactory)es.getService("", "RASReportService");
     oReportClientDocument = oReportAppFactory.openDocument((IInfoObject)oInfoObjects.get(0), 0, java.util.Locale.ENGLISH);
     // First create the formula field
     FormulaField newFormulaField = new FormulaField();
     //  Set the parameters (assume it's a string and Crystal Syntax)
    newFormulaField.setText("{Customer.Contact First Name} + ' ' + {Customer.Contact Last Name}");
    newFormulaField.setName("CustomerName");
    newFormulaField.setSyntax(FormulaSyntax.crystal);
    newFormulaField.setType(FieldValueType.stringField);
    // Now add it to the report
    oReportClientDocument.getDataDefController().getFormulaFieldController().add(newFormulaField);
     // Now that the formula has been created, add the newly created formula to the report
     // First determine which section to add the formula field to - in this case the details section
     ISection sectionToAddTo = oReportClientDocument.getReportDefController().getReportDefinition().getDetailArea().getSections().getSection(0);
     // Get back all the formulafields in the report
     Fields formulaFields = oReportClientDocument.getDataDefController().getDataDefinition().getFormulaFields();
     int formulaFieldIndex = formulaFields.find("{@CustomerName}", FieldDisplayNameType.formulaName, java.util.Locale.ENGLISH);
     Field formulaField = (Field)formulaFields.getField(formulaFieldIndex);
     // Set the type of field this is
     formulaField.setType(FieldValueType.stringField);
     // Now create a new Field object which will be added to the report
     FieldObject oFieldObject = new FieldObject();
     // Set the datasource of this field object to the formula form of the above Database Field Object
     oFieldObject.setDataSourceName(formulaField.getFormulaForm());
     oFieldObject.setFieldValueType(formulaField.getType());
     // Now set the co-ordinates of where the field will go
     oFieldObject.setLeft(8000);
     oFieldObject.setTop(1);
     oFieldObject.setWidth(1911);
     oFieldObject.setHeight(226);
     // And finally Add it to the report
     oReportClientDocument.getReportDefController().getReportObjectController().add(oFieldObject, sectionToAddTo, -1);
     // Now display the report
   session.setAttribute("reportSource", oReportClientDocument.getReportSource());
   response.sendRedirect("CrystalReportViewer.jsp");
%>
Cheers
Alphonse

Similar Messages

  • Creating a sample report using JAVA SDK

    Hi,
    I am trying to create a sample report using JAVA SDK.
    I slelect 4 "free cells" and pass 4 different strings to it.
    I even slelect the font colour and size. When i run the class and try to view the report in Infoview, I only seeblank blocks without any data. Now if I edit the report from infoview, and save the changes, I am able to see the data.
    My issue is, Why am I not able to see the data when I run the java code.
    Please find teh code below.
    package com;
    import java.awt.Color;
    import java.io.FileOutputStream;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import com.businessobjects.rebean.wi.BinaryView;
    import com.businessobjects.rebean.wi.DataProvider;
    import com.businessobjects.rebean.wi.DataProviders;
    import com.businessobjects.rebean.wi.DataSource;
    import com.businessobjects.rebean.wi.DataSourceObject;
    import com.businessobjects.rebean.wi.DocumentInstance;
    import com.businessobjects.rebean.wi.DocumentLocaleType;
    import com.businessobjects.rebean.wi.FontImpl;
    import com.businessobjects.rebean.wi.FreeCell;
    import com.businessobjects.rebean.wi.HTMLView;
    import com.businessobjects.rebean.wi.OutputFormatType;
    import com.businessobjects.rebean.wi.PageHeaderFooter;
    import com.businessobjects.rebean.wi.Query;
    import com.businessobjects.rebean.wi.Recordset;
    import com.businessobjects.rebean.wi.Report;
    import com.businessobjects.rebean.wi.ReportBody;
    import com.businessobjects.rebean.wi.ReportCell;
    import com.businessobjects.rebean.wi.ReportContainer;
    import com.businessobjects.rebean.wi.ReportElement;
    import com.businessobjects.rebean.wi.ReportEngine;
    import com.crystaldecisions.sdk.framework.CrystalEnterprise;
    import com.crystaldecisions.sdk.framework.IEnterpriseSession;
    import com.crystaldecisions.sdk.framework.ISessionMgr;
    import com.crystaldecisions.sdk.occa.infostore.IInfoObject;
    import com.crystaldecisions.sdk.occa.infostore.IInfoObjects;
    import com.crystaldecisions.sdk.occa.infostore.IInfoStore;
    import com.crystaldecisions.sdk.plugin.CeKind;
    public class Aug7th {
          * @param args
         public static void main(String[] args) {
              // TODO Auto-generated method stub
              String CMS = "pundl8136:6400";
              String userID = "srivas";
              String password = "morcom123";
              String auth = "secEnterprise";
              List<String> entire =new ArrayList<String>();
              List<String> country =new ArrayList<String>();
              List<String> resort =new ArrayList<String>();
              IEnterpriseSession enterpriseSession;
              try
                   ISessionMgr mySessionMgr = CrystalEnterprise.getSessionMgr();
                   enterpriseSession = mySessionMgr.logon(userID, password, CMS,auth);
                   if (enterpriseSession != null)
                   {//Create and store useful objects for the session.
                        IInfoStore iStore = (IInfoStore)enterpriseSession.getService("InfoStore");
                        ReportEngine reportEngine = (ReportEngine)enterpriseSession.getService("WebiReportEngine");
                        IInfoObject infoView = null;
                        String str = "SELECT SI_ID, SI_NAME, SI_PARENTID FROM CI_INFOOBJECTS WHERE (SI_KIND = '"+CeKind.WEBI+"' OR SI_KIND='FullClient') " +
                        "AND SI_INSTANCE = 'false' AND SI_NAME='Structure Test_001_Java' ORDER BY SI_NAME ASC ";
                        //String str = "SELECT SI_ID, SI_NAME, SI_PARENTID FROM CI_INFOOBJECTS ORDER BY SI_NAME ASC ";
                        IInfoObjects objInfoObjectsWIDs = (IInfoObjects) iStore.query(str);
                        System.out.println(objInfoObjectsWIDs.size());
                        IInfoObject objInfoObjectWID = (IInfoObject) objInfoObjectsWIDs.get(0);
                        DocumentInstance doc = reportEngine.openDocument(objInfoObjectWID.getID());
                        DataProviders dps = doc.getDataProviders();
    //                     Retrieve the 1st data provider
                        DataProvider dp = dps.getItem(0);
    //                     Retrieve the universe objects
                        DataSource ds = dp.getDataSource ();
                        Query q = dp.getQuery();
                        Recordset rs = dp.getResult(0);
    //                     0: assume query has one flow
                        rs.first();
    //                     Print the column types. They can be Integer, String,
    //                     or Date.
                        for (int i = 0; i < rs.getColumnCount(); i++) {
                        Class c = rs.getColumnType(i);
                        StringBuffer sbt = new StringBuffer();
                        if ( c.equals(Integer.class) )
                        sbt.append("Integer");
                        if ( c.equals(String.class) )
                        sbt.append("String");
                        if ( c.equals(Date.class) )
                        sbt.append("Date");
                        sbt.append(";");
                        System.out.println(sbt.toString());
                        System.out.println(rs.getColumnCount());
                        while (!rs.isLast()) {
    //                          column names
                             StringBuffer sbn = new StringBuffer();
                             StringBuffer sbd = new StringBuffer();
                             for (int j = 0; j < rs.getColumnCount(); j++) {
                             sbn.append( rs.getColumnName(j).toString() );
                             sbn.append(";");
                             System.out.println("sbn "+sbn.toString());
    //                          data
                             for (int k= 0; k< rs.getColumnCount(); k++) {
                             sbd.append( rs.getCellObject(k).toString() );
                             sbd.append(";");
                             entire.add(rs.getCellObject(k).toString());
                             System.out.println("sbd "+sbd.toString());
                             rs.next();
                        System.out.println(entire.size());
                        for(int i=0;i<entire.size();i++){
                             country.add(entire.get(i));
                             i++;
                             System.out.println("entireList "+entire.get(i));
                             resort.add(entire.get(i));
                        DataSourceObject city = ds.getClasses().getChildByName("Country");
                        DataSourceObject resorts = ds.getClasses().getChildAt(1);
                        dp.runQuery();
                        ReportContainer report = doc.createReport("Resort");
                        PageHeaderFooter header = report.getPageHeader();
                        FreeCell headerCell = header.createFreeCell("Resort Report");
                        PageHeaderFooter footer = report.getPageFooter();
                        FreeCell footerCell = footer.createFreeCell("Report Ends");
                        ReportBody body =  report.createReportBody();
                        for(int k=0;k<resort.size();k++){
                        FreeCell res=body.createFreeCell(resort.get(k));
                        res.getAttachTo();
                        res.setHeight(15d);
                        res.setWidth(30d);
                        Color c = new Color(255,255,255);
                        Color c1 = new Color(255,0,0);
                        FontImpl fnt = (FontImpl)res.getFont();
                        fnt.getDecoration().setTextColor(c1);
                        res.setFont(fnt);
                        //res.deleteAttachment();
                        //res.setAttachTo(body,VAnchorType.BOTTOM,HAnchorType.NONE);
                        doc.applyFormat();
                        doc.refresh();
                        final String l_docToken = doc.getStorageToken();
                        final DocumentInstance l_docToSave = reportEngine.getDocumentFromStorageToken(l_docToken);
                        doc.saveAs("mor31",835,null,null);
                        doc.closeDocument();
                        str = "SELECT SI_ID, SI_NAME, SI_PARENTID FROM CI_INFOOBJECTS WHERE (SI_KIND = '"+CeKind.WEBI+"' OR SI_KIND='FullClient') " +
                        "AND SI_INSTANCE = 'false' AND SI_NAME='mor31' ORDER BY SI_NAME ASC ";
                        //String str = "SELECT SI_ID, SI_NAME, SI_PARENTID FROM CI_INFOOBJECTS ORDER BY SI_NAME ASC ";
                        objInfoObjectsWIDs = (IInfoObjects) iStore.query(str);
                        System.out.println(objInfoObjectsWIDs.size());
                        objInfoObjectWID = (IInfoObject) objInfoObjectsWIDs.get(0);
                        DocumentInstance doc1 = reportEngine.openDocument(objInfoObjectWID.getID());
                        String token = doc1.getStorageToken();
                        DocumentInstance doc2 = reportEngine.getDocumentFromStorageToken(token);
                        doc2.saveAs("123123", 835, null, null);
                   //     doc.refresh();
                        //doc.save();
                   enterpriseSession.logoff();
              catch(Exception e)
                   e.printStackTrace();

    duplicate post:
    Sample report using JAVA SDK

  • How to create a blank PDF using acrobat SDK in perl or c#

    please help me with creating blank pdf using acrobat SDK in c# or in perl

    Hi, can you please let me know which version of Adobe you used in this tutorial?
    I have the Adobe Reader XI - is there a similar tutorial for this version?
    Thank you.

  • How to create cross tab reports using RAS SDK api with Crystal Reports XI

    Hi Everybody,
    Iam generating reports in a web-based application with Crystal Reports XI using Report Application Server(RAS) SDK API. The columns in my report exceed that of an A4 sized page. So, when I export that report to pdf, only those columns that fit to a page are showing up. To solve, this problem, I thought of using cross tab. But, I donot know how to generate cross tab report using RAS SDK API. I have tried to get some code from the internet. But, I did not find any java code for that.Can some one give me some sample code.It is very urgent.
    Thanks in advance.

    Hi,
    The easiest way I use is to create the worksheet as regular table and then when i verify the data I get (non aggregate) I duplicate it as a cross tab.
    In the duplication wizard I just need to define the axis (using drag and drop).
    if you want to create a cross tab from the beginning you need to define that in the new workbook wizard (check the "cross tab" rather then "table"), chose your fields and define the place you want them.
    The data point (the center of the cross tab) is aggregated as to your machine definition and will happen automatically.
    for example: to find the amount of receipt by months:
    On the left put the "Buyer Name", on top put the "Months" and in the data point put the amount.
    What you'll get is something like:
    months: jan feb mar apr ......
    buyer_name
    jhon_smith 100 50 30 250 ......
    jhon_doe 80 45 90 453 ........
    and so on.....

  • Creating Schedule With CalendarDays Using WS-SDK Seems To Miss Days

    I've tried to create a couple of schedules in Business Objects using the WS-SDK, creating schedules that run on a monthly basis.
    The parameters all appear correctly in the InfoView application, but the next run time misses out the first possible instance. E.g.
    Creation Time:              5/26/2011 3:47 PM (Start time is 5/26/2011 11:02 PM)
    Next Run Time:      7/1/2011 11:02 PM (Should have been 6/3/2011 11:02 PM)
    Recurrence Type:      Object runs every month on the Friday of week 1.
    Creation Time:              5/26/2011 12:33 PM (Start time is 5/27/2011 9:32 AM)
    Next Run Time:      7/2/2011 9:32 AM (should have been 6/4/2011 9:32 AM)
    Recurrence Type:      Object runs every month on the Saturday of week 1.
    Any ideas why the first month in the range is missed out?

    I fixed this by not specified the start date and end date in the CalendarDays object I was passing in.

  • Is there a way to create a virtual network using C# and the Azure SDK/API?

    I don't see a clear way to create an Azure Virtual Network using the SDK.
    I have all the methods to create the virtual network configuration, but no way to submit it:
    IList<string> VirtualNetworkAddressPrefixes = new List<string>();
    IList<string> LocalNetworkAddressPrefixes = new List<string>();
    IList<NetworkListResponse.DnsServer> DNSServers = new List<NetworkListResponse.DnsServer>();
    IList<NetworkListResponse.Subnet> Subnets = new List<NetworkListResponse.Subnet>();
    NetworkListResponse.Gateway Gateway = new NetworkListResponse.Gateway();
    IList<NetworkListResponse.LocalNetworkSite> LocalSites = new List<NetworkListResponse.LocalNetworkSite>();
    IList<NetworkListResponse.Connection> Connections = new List<NetworkListResponse.Connection>();
    VirtualNetworkAddressPrefixes.Add("a.b.c.d/cidr");
    DNSServers.Add(new NetworkListResponse.DnsServer() { Name = "TestDNS1", Address = "a.b.c.d" });
    Subnets.Add(new NetworkListResponse.Subnet() { Name = "Subnet-1", AddressPrefix = "a.b.c.d/cidr" });
    Subnets.Add(new NetworkListResponse.Subnet() { Name = "GatewaySubnet", AddressPrefix = "a.b.c.d/cidr" });
    Connections.Add(new NetworkListResponse.Connection() { Type = LocalNetworkConnectionType.IPSecurity });
    LocalNetworkAddressPrefixes.Add("a.b.c.d/cidr");
    LocalSites.Add(new NetworkListResponse.LocalNetworkSite()
    Name = "On-Prem",
    Connections = Connections,
    VpnGatewayAddress = "a.b.c.d",
    AddressSpace = new NetworkListResponse.AddressSpace() { AddressPrefixes = LocalNetworkAddressPrefixes }
    Gateway.Sites = LocalSites;
    Gateway.Profile = GatewayProfile.ExtraLarge;
    NetworkManagementClient netMgmtClient = new NetworkManagementClient(CloudCredentials);
    NetworkListResponse netlistresp = GlobalSettings.mainWindow.netMgmtClient.Networks.List();
    netlistresp.VirtualNetworkSites
    .Add(new NetworkListResponse.VirtualNetworkSite()
    Name = "TestVirtualNetwork",
    AddressSpace = new NetworkListResponse.AddressSpace() { AddressPrefixes = VirtualNetworkAddressPrefixes },
    DnsServers = DNSServers,
    Subnets = Subnets,
    AffinityGroup = "East US",
    Gateway = Gateway,
    Label = "LabelValue"
    I have also created the entire XML response and sent it to the NetworkManagementClient -> Networks.SetConfiguration() method, but it appears this command expects the virtual network to already be in existence. If anyone could give guidance, it would be
    appreciated.

    Hi,
    As discuss above , we have to create the XML response  ,before that first you have to
    GetConfiguration() details of existing virtual network. 
    string.format("@<NetworkConfiguration xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns='http://schemas.microsoft.com/ServiceHosting/2011/07/NetworkConfiguration'>
                <VirtualNetworkConfiguration>
                <Dns />
                <VirtualNetworkSites>
                <VirtualNetworkSite name=""{0}"" Location=""{1}"">
                <AddressSpace>
                <AddressPrefix>10.0.0.0/8</AddressPrefix>
                </AddressSpace>
                <Subnets>
                <Subnet name=""Subnet-2"">
                <AddressPrefix>10.0.0.0/11</AddressPrefix>
                </Subnet>
                </Subnets>
                </VirtualNetworkSite>",Networkname,location)+(@"<VirtualNetworkSite name=""demodsf1"" Location=""West Europe"">
            <AddressSpace>
              <AddressPrefix>10.0.0.0/8</AddressPrefix>
            </AddressSpace>
            <Subnets>
              <Subnet name=""Subnet-1"">
                <AddressPrefix>10.0.0.0/11</AddressPrefix>
              </Subnet>
            </Subnets>
          </VirtualNetworkSite>  </VirtualNetworkSites>
                </VirtualNetworkConfiguration>
                </NetworkConfiguration>")
    you have to append the node for existing node with new values , i got it its adding new virtual network 
    Best regards,

  • Creating variables in a java swing program useing event

    This is my code:
    *Old School Calculator
    *@Collin Doering
    *Version 2.00
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class OSC {
         private static void createAndShowGUI() {
              int first = 0;
              int second = 0;
              int third = 0;
              int fourth = 0;
              int fifth = 0;
              int answer;
              System.out.println ("Calculations");
              System.out.println ("-------------");
              JFrame.setDefaultLookAndFeelDecorated(true);
              JFrame frame = new JFrame("OSC");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JButton button1 = new JButton("1");
    button1.setMnemonic(1);
    button1.addActionListener
         new ActionListener() {
              public void actionPerformed (ActionEvent e) {
    first = 1;
    //This is when the error says "Local variable first is accesed from
    with in inner class; needs to be declared final;
                   System.out.println ("first = ");
    JButton button2 = new JButton("2");
    button2.setMnemonic(2);
    button2.addActionListener
         new ActionListener() {
              public void actionPerformed (ActionEvent e) {
                   System.out.println ("Second = ");
    JButton buttonx = new JButton("x");
    buttonx.addActionListener
         new ActionListener() {
              public void actionPerformed (ActionEvent e) {
                   System.out.println ("answer: ");
    JPanel panel = new JPanel(new GridLayout(10,10));
    panel.add(button1);
              panel.add(button2);
              panel.add(buttonx);
              frame.getContentPane().add(panel);
    panel.setBorder(BorderFactory.createEmptyBorder(
    30, //top
    30, //left
    10, //bottom
    30) //right
    frame.pack();
    frame.setVisible(true);
         public static void main(String[] args) {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    createAndShowGUI();
    I am trying to create variables so i can make a calculator (right now i only have buttons 1, 1 and multiply). //This is when the error says "Local variable first is accesed from
    with in inner class; needs to be declared final; then when i declare it final it says <identifier expected>. Could some one please help me. thanx.

    Please post code within code tags (press the "code" button).
    Why are you using an inner class? Simplify:
    public class OSC implements ActionListener {
    button1.addActionListener( this );
    public void actionPerformed( ActionEvent e ) {
        if ( e.getSource() == button1 ) . . .

  • Creating variables in Process Flows and using thse variables in the filter

    Hi,
    I am new to OWB and in learing stage. Need to information.
    *1. as to how pass/create/use variables to OWB mapping ?*
    *2. Creating variables in Process Flows and using thse variables in the filter operator of the OWB mapping?*
    *3. Other mechanisms of how to create/use variables within OWB mapping itself ?*
    can you please provide the above details and guide me / help me in this regard.
    Thanks,
    skms.

    1. Add parameters to your mapping using the MAPPING INPUT PARAMETER from the pallette.
    2. Add parameters to the START operator in the process flow. Bind the process flow parameter to the Mapping parameter.
    3. May be appropriate to use CONSTANTS instead of parameters.
    Regards
    Si

  • Creating variables using set()

    Does the set() function for dynamically creating variables
    have a substitute in AS3?
    This is a generic example written in AS2:

    You're welcome. Until your posting, I didn't know there was
    such a thing as set, so as often happens, I learn new things here.
    My approach normally would have been along the lines of the = one.
    If you're ever wondering about other changes, in the AS3 help
    docs you can search on "Migration" and one of the few choices there
    is titled as such wrt AS2. It tabulates the status of most of the
    AS2 code elements and identifies alternatives for AS3 when
    applicable.
    Also, there's this offering you might find useful...
    http://www.actionscriptcheatsheet.com/downloads/as3cs_migration.pdf

  • Creating PDF using Acrobat SDK

    Hello All,
                    I am developing application in VC++ which has requirement to create PDF file programatically and then write that file .
                    I just wanted to know can I use Acrobat SDK to create and Edit PDF file?
                    Please help me as I am new to this.
    Waiting 4 soon reply.......................
    Thanks

    Dear Arthi,
    This is the C++ code which will help u to create the pdf using the VC++ plugin, Hope this helps you,
    PDDoc TargetPDF = PDDocCreate();
    ASFixedRect mediaBox = { fixedZero, ASInt32ToFixed(792), ASInt32ToFixed(612), fixedZero };
    PDPage emptyPage = PDDocCreatePage (TargetPDF, PDBeforeFirstPage, mediaBox);
    PDPageRelease (emptyPage);
    PDDocSave (TargetPDF, PDSaveFull | PDSaveCollectGarbage | PDSaveLinearized,
        pdfPathName, ASGetDefaultUnicodeFileSys(), NULL, NULL);
    PDDocClose (TargetPDF);
    ASFileSysReleasePath(fileSys, pdfPathName);
    Regard's
    Amith Sai

  • Creating DLL using Acrobat SDK

    Hi,
    I want to create one DLL using Acrobat SDK and VS 2010 Win32. If i use this dll in our program it should show functions for opening pddoc, total number of annots, Can I do this using Acrobat SDK. I know we can create plug-in extension with .API.
    Please let me know can i do this using Acrobat SDK.
    Thanks,
    Kruthi

    Please use the forum for Acrobat SDK.

  • Creating variables using for loop

    is there any way in java to create a variable called "xi" using a for loop say:
    for (int i =0; i < 1000000;i++){
      int xi;
    }so I want to create a million of different variable names based on the i... I know this may be a stupid question

    I don't think there is a way to do this. More importantly why do you want to do this? If you dynamically generate 1 million variables, then how will the rest of your program refer to them? Maybe what you need is some sort of collection.

  • How to Get the created Request Activity Status using SCSM 2012 SDK

    Hi, i have created a ServiceRequest,
    so there are Activities related to Servicerequest.
    I am trying to know the Status of the each Activity (Completed,Failed etc)
    and the Change of Activity (like from ReviewActivity to RunBookActivity).
    how can we get the Activity status change programmatically.
    so that i could Display this Status to other Portal, 
    I am Creating a CustomActivity with ActivityID as Parameter to Workflow inheriting WorkflowActivityBase
    protected
    override
    ActivityExecutionStatus Execute(ActivityExecutionContext
    executionContext)
    Is this a Right Approach..???
    Plz respond as m not getting the way ..

    I'm not entirely clear on what you're trying to accomplish, but I can give you some guidance on getting the status of activities that are part of a service request.
    Quick overview before we get to the code: After we connect to the database we want to retrieve some management packs, a relationship, and a type projection. We then want to create some criteria for querying the Service Manager database. Then we execute the
    query and traverse the results, displaying the activity ID and it's status.
    //Connect to Service Manager
    EnterpriseManagementGroup emg = new EnterpriseManagementGroup("<your management server>");
    //Get some management packs
    ManagementPack mpSystem = emg.ManagementPacks.GetManagementPack(SystemManagementPack.System);
    ManagementPack mpSRLib = emg.ManagementPacks.GetManagementPack("ServiceManager.ServiceRequest.Library", mpSystem.KeyToken, new Version("7.5.1464.0"));
    ManagementPack mpWorkItemLibrary = emg.ManagementPacks.GetManagementPack("System.WorkItem.Library", mpSystem.KeyToken, new Version("7.5.1464.0"));
    ManagementPack mpActivityLib = emg.ManagementPacks.GetManagementPack("System.WorkItem.Activity.Library",mpSystem.KeyToken,new Version("7.5.1464.0"));
    //Get the relationship and type projection we'll be using for this query
    ManagementPackRelationship mprWIContainsActivity = mpActivityLib.GetRelationship("System.WorkItemContainsActivity");
    ManagementPackTypeProjection mptpWIActivities = mpSRLib.GetTypeProjection("System.WorkItem.ServiceRequestAndActivityViewProjection");
    //This is the work item (such as a service request) ID that we're looking for
    String WorkItemID = "SR123";
    //Setup the criteria. This will instruct service manager to "Get me the service request with ID SR123"
    String strWICriteria = String.Format(@"
    <Criteria xmlns=""http://Microsoft.EnterpriseManagement.Core.Criteria/"">
    <Reference Id=""System.WorkItem.Library"" PublicKeyToken=""{0}"" Version=""{1}"" Alias=""WILib"" />
    <Expression>
    <SimpleExpression>
    <ValueExpressionLeft>
    <Property>$Target/Property[Type='WILib!System.WorkItem']/Id$</Property>
    </ValueExpressionLeft>
    <Operator>Equal</Operator>
    <ValueExpressionRight>
    <Value>" + WorkItemID + @"</Value>
    </ValueExpressionRight>
    </SimpleExpression>
    </Expression>
    </Criteria>
    ", mpWorkItemLibrary.KeyToken, mpWorkItemLibrary.Version.ToString());
    //Build the projection criteria
    ObjectProjectionCriteria opcWI = new ObjectProjectionCriteria(strWICriteria, mptpWIActivities,emg);
    //Perform the query
    IObjectProjectionReader<EnterpriseManagementObject> oprWIs = emg.EntityObjects.GetObjectProjectionReader<EnterpriseManagementObject>(opcWI,ObjectQueryOptions.Default);
    //oprWIs contains all of the work items with ID "SR123" (and there will only be one work item with that ID)
    //We loop through all the work items in the oprWIs collection
    foreach (EnterpriseManagementObjectProjection emopWI in oprWIs)
    //Next we loop through all of the activities contained by our work item, using the WorkItemContainsActivity relationship
    //NOTE that these activities are in no particular order. You'll have to use the icpActivity.Object[null,"SequenceId"].Value to order them
    foreach (IComposableProjection icpActivity in emopWI[mprWIContainsActivity.Target])
    //Since activity status is an enumeration, we want to display it's displayname, not it's value (enumeration values are just GUIDs or other unique identifiers)
    ManagementPackEnumeration status = (ManagementPackEnumeration)icpActivity.Object[null, "Status"].Value;
    //For this little snippet, we're just outputting the activity ID and it's status
    Console.WriteLine(icpActivity.Object[null,"Id"].Value + " " + status.DisplayName);
    Regarding the rest of your post, I'm not sure what you meant when you said you wanted the "change of activity". Are you trying to display the time that an activity's status changed (stored in the activity's history records)?
    Second, if you're displaying this information on some other custom portal, what is the purpose for the workflow?
    A couple disclaimers: Use this code at your own risk, there are no guarantees, etc etc :) Second, I'm assuming you're on Service Manager 2012 RC at least (otherwise the "versions" in the code will need to be changed)
    Are you new to the SCSM SDK? If so, this code snippet might seem overwhelming. I recommend reading the Service Manager blog to get an idea about how classes, objects, relationships, type projections, etc all work.
    Here's a link to a post by Travis that uses the SDK..he also references a lot of the information necessary to best understand Service Manager's inner workings :)
    http://blogs.technet.com/b/servicemanager/archive/2010/10/04/using-the-sdk-to-create-and-edit-objects-and-relationships-using-type-projections.aspx

  • Can i create ADM Modeless dialog using Photoshop CS5 SDK

    Hi,
    I am developing a photoshop plugin using CS3 SDK. I am using ADM to create dialogs. Developing ADM Modeless dialog is not possible in CS3 SDK.
    Can any one please tell me whether it is possible in CS5 SDK to create Modeless dialog. ( So that user of my plugin will be free to use photoshop even after invocation of DialogBox. )
    If Modeless dialogs are not possible in photoshop using ADM,..... Is ther any other way to create modeless dialogs in photoshop ??
    Regards,
    Prafulla Vedante

    ADM Modeless dialog is not supported in Photoshop in any version.
    Your only option to make a panel / palette in Photoshop is to use the CS SDK (CS5) or the "Photoshop Panel Developer's Guide" ( CS4 or CS5 ).
    http://www.adobe.com/devnet/photoshop.html
    http://blogs.adobe.com/cssdk/tag/cs-sdk

  • Anyone successfully used ODI SDK to create master repository?

    I'm just trying to compile and run the sample code given by Oracle (odi_sdk_samples.zip downloaded from http://www.oracle.com/technetwork/indexes/samplecode/dataintegration-sample-522116.html) to create a master repository, and I am running into an error below.
    java CreateMasterAndWorkRepositorySample
    oracle.odi.setup.RepositoryScriptsNotFoundException: Scripts were not found
    at oracle.odi.setup.support.MasterRepositorySetupImpl.internalCreateMaster(MasterRepositorySetupImpl.java:146)
    at oracle.odi.setup.support.MasterRepositorySetupImpl.createMasterRepository(MasterRepositorySetupImpl.java:52)
    at CreateMasterAndWorkRepositorySample.main(CreateMasterAndWorkRepositorySample.java:43)
    Caused by: java.io.FileNotFoundException: Directory /scripts/xml/ does not exist.
    at com.sunopsis.repository.manager.RepositoryManager.getRepositoryCreationXMLFilesDirectory(RepositoryManager.java:4565)
    at oracle.odi.setup.support.MasterRepositorySetupImpl.internalCreateMaster(MasterRepositorySetupImpl.java:139)
    ... 2 more
    Does anyone know how to tell JVM the location of /scripts/xml ? This happens to exist at oracledi.sdk/lib/scripts/xml under ODI installation. All I am doing to run the above program is adding all JARS from oracledi.sdk/lib to CLASSPATH and compiling this and one other file (SimpleOdiInstanceHandle.java) in the same directory. Unfortunately, there is no documentation out there on how to set up the environment properly. Apparently it is trying to get to some XML files that ODI needs to execute in order to create the master repository....
    Thank you in advance for your help.
    글 수정: user11180669

    Well hindsight is 20/20 but oraparams.sh needed to be run before running any program that uses ODI SDK. :)

Maybe you are looking for