Setting singleton

Hi...
I am not able to set the singleton property of the context node.I am not able to edit the true value to false in the context properties.How can I do this.Can it be done through code or if ,so how.

You have to make the changes in the object that the context node has been created - not in the object that it has been bound to.
So if you create a context node in the component controller and then bind it to the context of a view, you can only change the properties in the controller and not the view.
Hope this helps,
Gareth.

Similar Messages

  • Hi! regarding the singleton property in webdynpro abap

    Hi experts ,
    Could anyone explain me in detail the property of singleton and wht r the conditions tht we should use wht will represents..
    plz explain me in detail......rather than sending links plz do explain me in detail....
    Regards,
    Sana...

    Cardinality : number of possible elements within the node.
    Singleton property means whether or not all instances of this node get created at runtime or not.
    Singleton property is mostly used to save memory & increase performance. we would go for singleton nodes in cases where UI needs only display from one-instance of data from my node.....
    What happens when you set singleton property to YES for a node??  Assume you have context structure like
    Context
         Vehicle( parent node )
           ( attribute veh-ID primary key for all types of vehicles, dealer, area )
              twowheeler( subnode of vehicle with cardinality-0..n singleton-NO)
                        ( attributes veh-ID, regno, model, color)
              fourwheeler( subnode of vehicle with cardinality-0..n singleton-YES)
                       ( attributes veh-ID, regno, model, color)
    At design time you fill the data within this context. Now you have 100 entries under the subnode  twowheeler & 90 entries under the subnode fourwheeler . You create UI elements to display the node twowheeler details in a View . At runtime when user selects the veh-ID and identifies that a twowheeler data needs to be fetched/displayed all the 100 entries for the twowheeler node get created in the background although you are displaying only the ONE corresponding to the veh-ID.
    if Veh-ID selected coresponded to fourwheeler( singleton property -yes) only ONE row of the data from the fourwheeler entries would have been fetched and ONLY Once instance of the fourwheeler would be created by background process!!
    thus saving memory & processing time.
    Scenarios singleton-YES
    If i were required to display details of only ONE vehicle based on the entered Veh-ID , i will make twowheeler & fourwheeler nodes singleton-YES.
    Scenario singleton-NO
    if i were required to show all the vehicles that belong to one particular Area.

  • Unable to change singleton property of context parent node.

    Hi
    I am having a view context node structure as follows.
    Root context Node
    |__Parent
    *****|__child 1
    *****|__child 2
    I have created a table view which is using above structure.
    Now I have selected "Selection Mode" property of my table to "Multi", as i intend to select multiple rows in this table.
    When i tried to run this application..I got following error :
    com.sap.tc.webdynpro.progmodel.context.ContextException: Node(TableView.Person): selection cardinality does not allow multiple selection
    What i traced from this problem is that i have set "singleton" property of my "Parent" context node to "true".
    But what if i wish to change it to "false"...
    I AM UNABLE TO DO THAT !!
    Please help me out.
    Thanks in anticipation.
    Edited by: Saurabh Agarwal on Jun 23, 2008 8:20 AM

    Yes....
    Now i changed my Selection property of my component context...
    and that change was automatically reflected to my view context...
    Actually what is happening..
    if mapping to component context is set in view context..
    then Properties could not be changed directly from view context.
    Thanks all....for your help..
    my problem is solved now....
    Thanks...

  • DB Adapter polling as singleton process is not working as expected

    Am using poller DB adapater to control the transaction per seconds to the downstream system and i want this poller process as singleton (One instance should be in running state at a time).
    As suggested in oracle documents , below is the parameters configured in composite.xml file.
    <service name="polling_Mange_Alert_Events"
      ui:wsdlLocation="polling_Mange_Alert_Events.wsdl">
    <interface.wsdl interface="http://xmlns.oracle.com/pcbpel/adapter/db/Application1/int_app_manageAlerts/polling_Mange_Alert_Events#wsdl.interface(polling_Mange_Alert_Events_ptt)"/>
      <binding.jca config="polling_Mange_Alert_Events_db.jca">
      <property name="singleton">true</property>
      </binding.jca>
      <property name="jca.retry.count" type="xs:int" many="false" override="may">2147483647</property>
      <property name="jca.retry.interval" type="xs:int" many="false"
      override="may">1</property>
      <property name="jca.retry.backoff" type="xs:int" many="false"
      override="may">2</property>
      <property name="jca.retry.maxInterval" type="xs:string" many="false"
      override="may">120</property>
      </service>
    Below is the JCA file parameters configured :
    <adapter-config name="polling_Mange_Alert_Events" adapter="Database Adapter" wsdlLocation="polling_Mange_Alert_Events.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
      <connection-factory location="eis/DB/vff-int-fus" UIConnectionName="PT_APPINFRA" adapterRef=""/>
      <endpoint-activation portType="polling_Mange_Alert_Events_ptt" operation="receive">
        <activation-spec className="oracle.tip.adapter.db.DBActivationSpec">
          <property name="DescriptorName" value="polling_Mange_Alert_Events.ManageAlertEvents"/>
          <property name="QueryName" value="polling_Mange_Alert_EventsSelect"/>
          <property name="MappingsMetaDataURL" value="polling_Mange_Alert_Events-or-mappings.xml"/>
          <property name="PollingStrategy" value="LogicalDeletePollingStrategy"/>
          <property name="MarkReadColumn" value="TRANSACTION_STATUS"/>
          <property name="MarkReadValue" value="Processing"/>
          <property name="PollingInterval" value="10"/>
          <property name="MaxRaiseSize" value="5"/>
          <property name="MaxTransactionSize" value="5"/>
          <property name="NumberOfThreads" value="1"/>
          <property name="ReturnSingleResultSet" value="false"/>
          <property name="MarkUnreadValue" value="Pending"/>
        </activation-spec>
      </endpoint-activation>
    </adapter-config>
    This poller process is running on clustered environment (2 soa nodes) and it is not working as expected as singleton process.
    Please advise to solve this issue ?

    Hi,
    1.Set Singleton property outside   <binding.jca> like this:
    <binding.jca config="polling_Mange_Alert_Events_db.jca"/>
      <property name="singleton">true</property>
      <property name="jca.retry.count" type="xs:int" many="false" override="may">2147483647</property>
      <property name="jca.retry.interval" type="xs:int" many="false"
    2.Also you can try setting these values in jca file:
    <property name="RowsPerPollingInterval" value="100"/>
    <property name="MaxTransactionSize" value="100"/>
    3. try to increase the polling interval time.
    Regards,
    Anshul

  • Concept behind Cardinality, Singleton property?

    hi,
          will anyone explain me the concept of cardinality, singleton & Initialize lead selection properties of noce. by example... when i need to set singleton /Initialize lead selection  property true / fasle for perticular node...
    suppose i am having node structure like this ..
                     CLAIM                                   Node1
                            CLAIMITEM                    Node2
                                     EXPENSETYPE    Node3 ...  Comes under node2
                                          key      
                                          value
                                    Claimid                attribute.. Comes under node2
                                    Description          attribute.. Comes under node2
                                    Amount               attribute.. Comes under node2
    if Node CLAIMITEM is bind to table on view....having 4 column ,
    first as dropdown by index bind to EXPENSETYPE value...
    second as inputfield bind to Claimid....
    third as inputfield bind to Description....
    fourth as inputfield bind to Amount....
    table is having multiple rows so Node CLAIMITEM must have cardinality 0...N
    what abt others...
    please dont give me any link which is alreay on sdn...
    jst try to explain me how does it go and why if possible ..
    thanks
    saurin shah

    Hi Saurin,
    Please check this Article which explains in detail about Context,cardinality and singleton properties with examples.I hope it will help you.
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/60730016-dbba-2a10-8f96-9754a865b814

  • Setting Sinleton property of tree

    How we can set Singleton property to FALSE of a context value created for a tree node??
    Thanks & Regards
    Vipin

    Hello Vipin
    Do you mean Singlton property for recursion node in the context? It's always FALSE.
    Best Regards
    Sergei

  • Table Control in web-dynpro for java

    Hi SDN,
    I was working on a web-dynpro application where I has to display a table control.
    Here I am listing my Requirement.
    1) A table with 7 columns are to be displayed.
    2) 5 of the columns are Drop down list where  3 of the 5 drop downs have dependency of the pervious drop down selection.
    3)other 2 columns are input box.
    4)The list for the drop downs come from a bapi.
    5)the user is to be allowed as many rows he can
    6)when he clicks save button the values are to be stored using table of another bapi
    Hi all, I have posted this earlier but no solution for this please help me in resolving this.
    Thanks in advance.
    Regards,
    Sai krishna.

    Hi Sai,
    I have better solution, I will explain solution for your design and then I will explain new design.
    <b>Solution to your problem</b>
    How many values each drop down contains? If its not large, execute all drop downs in the beginning of the application and store them in HashMap with dependency key and value as the list of populated values.
    - Create a top Node
    <b>1) A table with 7 columns are to be displayed.</b>
    Create 5 Value Nodes with simple type attributes under your topnode. Set singleton property for each of the node to false. And attach them to the Drop Downs. Populate the parent drop down and non dependent drop downs in the begining itself.
    <b>2) 5 of the columns are Drop down list where 3 of the 5 drop downs have dependency of the pervious drop down selection.</b>
    Attach onSelect events and based on the current selection of the values, check your pre populated HashMap and fill the node with new values.
    <b>3)other 2 columns are input box.</b>
    This is normal, create two nodes with simple types under Top Node.
    <b>4)The list for the drop downs come from a bapi.</b>
    As mentioned previously all these values are pre populated. so you need not to call the BAPI for each request.
    <b>5)the user is to be allowed as many rows he can</b>
    Provide  Add,Delete buttons which dynamically creates rows which means your context elements.
    <b>6)when he clicks save button the values are to be stored using table of another bapi</b>
    Read the values from nodes and send it to other BAPI.
    <b>New Design</b>
    As per your requirement create a form with 5 drop downs and 2 input fields( for dependency you can use the logic mentioned in the previous design). Provide Add,Delete and Update Buttons under the form. And also create a Result table with 7 columns with simple attribute types. Once user enters some values in the form and clicks on Add button then add a new value to the Bottom result table which doesn't have any drop downs. When user needs to update any row on selection of the row populate the values back to the form, then user clicks on update button. Same logic applies to delete also.
    Regards
    Abhilash

  • Showing Image in table

    Hi
         I want to show image in table based on the result i have a field status which contains the 01 / 02 / 03 values and now i want to show 3 images insted of value I have created one value attribute of string type and assigned the path of the image to it but its taking the image of last record only so can any one tell me what i have to do for this bellow is the code i am using
    wdContext.currentContextElement().setImgXiStatus("");
    if(xistatus.equals("01"))
        wdContext.currentContextElement().setImgXiStatus("green.bmp");
    else if(xistatus.equals("02"))
        wdContext.currentContextElement().setImgXiStatus("yellow.bmp");
    else if(xistatus.equals("03"))
        wdContext.currentContextElement().setImgXiStatus("red.bmp");
    else
        wdContext.currentContextElement().setImgXiStatus("");
    Thanks
    Ninad

    1 - NODE_MY_TRNAS
    1.1---NODEoutput
    1.1.1---NODEetData
    1.1.1.1---NODEimageNodeHelper
    1.1.1.1.1---icon
    Set singleton = false for node "NODEimageNodeHelper" and selection(NODEimageNodeHelper) = 1:1.
    Assuming card(NODEetData) =0:N, you can set the icon for row number i as follows:
    INODEetDataElement e = wdContext.nodeNODEetData().getNODEetDataElementAt(i);
    e.nodeNODEimageNodeHelper().currentNODEimageNodeHelperElement().setIcon("icon.gif");
    For naming nodes, the following rule is useful: Name in camel-case, first letter uppercase, for cardinality =0:N, use plural name.
    Example:
    Node "Books" (node, card=0:N) leads to IBooksNode, IBooksElement interfaces.
    Armin

  • How create report with data from table and some columns results function ?

    Hi,
    How can i create on apex report region with some columns (of the report) as returned from a table and the other columns as results of plsql functions ?
    for example , I want to create a report like that:
    device last_date error_msg stop/start
    kodak1 06/04/08 null >>
    kodak2 08/03/08 good msg --^--
    kodak3 08/04/08 err msg >>
    3 rows returned
    where the 3 first columns are data returned from the table and the forth column is the result of plsql function (returned for example false) and on that i want to display a button of start ( >> in this example ) or stop ( --^-- in this example)

    Thomas,
    There is no problem here -- this is fully suported scenario.
    1. Bind Table dataSource to Customers node.
    2. Bind individual cell editors to any attribute of customer or any nested node like Address, say create column with InputField as editor, then for "value" property select Customer.Address.Street.
    Your nested nodes (like Address) must be non-singleton, set singleton=false on context designer tab.
    Valery Silaev
    EPAM Systems
    http://www.NetWeaverTeam.com

  • Tab strip data binding

    Hi,
    i have a tabstrip with a fix numebr of tabs.
    in each tab i have a tableview.
    in context i have
    nodea
    >nodeb
    >elementc
    How can i bind the firest instance of nodea to a tableview in the first tab, the second instance to another table view from the seconds tab...
    Florin

    Try this:
    Add a Table UI element inside each tab. Bind the <i>dataSource</i> property of each table to node "nodeb" (set singleton=false for "nodeb").
    Assign an action to the TabStrip.<i>onSelect</i> event, in the action handler, set the lead selection of "nodea" to the index corresponding to the new selected tab.
    Then if a tab is selected, the lead selection of "nodea" is changed and the table in the selected tab shows the rows corresponding to the "nodeb" element of the selected "nodea" element.
    Armin

  • Accessing node within a node in a context

    Hi!
    I have Node strucrure like this in my context..
    Node           (0..n)(singleton="true")
       Node1      (0..n)(singleton="true")
         Node11  (0..n)(singleton="true")
           atrr1
           attr2
    Can you tell me that how can I access Node11 and its attributes?
    Iam having n number of Node1's under each Node and again n number of Node11's under each Node1. I need to access attributes of each Node11. How can i do that??
    Thanks,
    Archana

    Hi Archana,
    As u described ur scenario, there are multiple instances of Node1 exist for Node
    and Node11 for Node1.So u have to set "singleton" property of child nodes to false.
    Otherwise the elements of the relevant node are instantiated for only one element of the parent node.
    for(int i=0;i<wdContext.nodeNode().size();i++)
      wdContext.nodeNode().setLeadSelection(i);
    for(int j=0;j<wdContext.nodeNode1().size();j++)
       wdContext.nodeNode1().setLeadSelection(j);
       for(int k=0;k<wdContext.nodeNode11().size();k++)
        wdContext.nodeNode11().setLeadSelection(k);
        wdContext.currentNode11Element.getAttributeValue("attrName");
    Hope it helps!

  • Setting Node Attributes for a non singleton node

    HI,
    I want to know what is the correct way to set attributes for a non singleton node dynamically.
    I have node A which contains the non singleton node B.
    At runtime I want to change the attributes of node B dynamically. What is the correct way for this?
    When I try wdContext.nodeB().getNodeInfo I get a NullPointerException.
    For example this code works: wdContext.nodeA().getAElementAt(0).nodeB().getNodeInfo(). Here I get the node info.
    But when I set attributes for the second line, are there valid for all Elements in Node B?
    What is the correct way to set the attribut infos for non singleton Node B?
    Best regards,
    Peter

    Hi Peter
    The main rule here - do not touch node instances at all. Deal only with node metadata:
    IWDNodeInfo nodeBInfo = wdContext.getNodeInfo().getChild("node A").getChild("node B");
    nodeBInfo.getAttribute("xAttr");
    nodeBInfo.addAttribute(...);
    BR, Siarhei
    Edited by: Siarhei Pisarenka on Jan 13, 2010 12:55 PM

  • Singleton class for logging in the application, and setting the flag

    Hi Friends,
    I have a singleton class for logging in the application, and setting the flag once logged. can some one help me in doing this.
    with regards,

    rtfm, for example here - http://www.javacamp.org/designPattern/

  • Creating a cursor that returns both a set and a singleton

    I have a situation where I have dozens of statically defined pl/sql cursors, along with result processing, where I'd like to modify the cursor definitions in such a way that they may be used to return either a single row or a set.
    The effect would be to dynamically add a 'where xx.id = <variable>' predicate to the set oriented cursor to return a single row, but where if I say something (which I know I can't) like 'where xx.id = ANY', then the predicate is effectively ignored.
    I don't want to use dynamic sql for performance reasons, and obviously I don't want to have replicate reams of queries and code.
    Anyone have any thoughts on how to do this?
    Thanks, Jim
    Edited by: 922615 on Mar 21, 2012 7:35 PM

    It sounds like you just want
    CURSOR cursor_name( p_id IN NUMBER )
        IS SELECT *
             FROM some_table
            WHERE (p_id IS NULL or id = p_id );If you pass a NULL for p_id, you'll get every row back. If you pass a non-NULL ID, you'll get just the one row.
    Justin

  • Why do I have to set the PrincipalName property on my discovered ApplicationComponent instances?

    In the simple example below I define three classes:
    MyComputerRoleClass (with base Microsoft.Windows.ComputerRole)
    MyLocalApplicationClass (with base Microsoft.Windows.LocalApplication)
    MyApplicationComponentClass (with base Microsoft.Windows.ApplicationComponent)
    As well as a hosting relationship
    MyLocalApplicationClassHostsMyApplicationComponentClass
    that let's MyLocalApplicationClass host MyApplicationComponentClasses.
    In a timed PowerShell discovery targeting the RootManagementServer (Root Management Server Emulator) I create
    1 MyComputerRoleClass instance
    1 MyLocalApplicationClass instance and 
    2 MyApplicationComponentClass instances hosted on the instance of MyLocalApplicationClass
    By setting the PrincipalName property for the instances of MyComputerRoleClass
    and MyLocalApplicationClass I implicitly create hosting relationship instances of
    Microsoft.Windows.ComputerHostsComputerRole and Microsoft.Windows.ComputerHostsLocalApplication
    respectively.
    But why do I have to set PrincipalName on instances of MyApplicationComponentClass as well? If I don't I'll get this error:
    Microsoft.EnterpriseManagement.Common.DiscoveryDataMissingKeyException,Missing key in the discovery data item.
    Key property name: Microsoft.Windows.Computer.PrincipalName
    Here my discovery script:
    param($sourceId,$managedEntityId)
    $api = new-object -comObject "MOM.ScriptAPI"
    $api.LogScriptEvent('DiscoverClassesAndRelationships.ps1', 1001, 0, "Discovery started (12)")
    $discoveryData = $api.CreateDiscoveryData(0,$sourceId,$managedEntityId)
    $computer = 'SomeServer.SomeDomain'
    $myComputerRoleClass = $discoveryData.CreateClassInstance("$MPElement[Name='MyDiscoveryDemoManagementPack.MyComputerRoleClass']$")
    $myComputerRoleClass.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "MyComputerRoleClass instance on $computer")
    $myComputerRoleClass.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computer)
    $discoveryData.AddInstance($myComputerRoleClass)
    $myLocalApplicationClass = $discoveryData.CreateClassInstance("$MPElement[Name='MyDiscoveryDemoManagementPack.MyLocalApplicationClass']$")
    $myLocalApplicationClass.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "MyLocalApplicationClass instance on $computer")
    $myLocalApplicationClass.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computer)
    $discoveryData.AddInstance($myLocalApplicationClass)
    $myApplicationComponentClass1 = $discoveryData.CreateClassInstance("$MPElement[Name='MyDiscoveryDemoManagementPack.MyApplicationComponentClass']$")
    $myApplicationComponentClass1.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "MyApplicationComponentClass instance")
    $myApplicationComponentClass1.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computer) # Why is this needed
    $myApplicationComponentClass1.AddProperty("$MPElement[Name='MyDiscoveryDemoManagementPack.MyApplicationComponentClass']/Name$", "Number 1")
    $discoveryData.AddInstance($myApplicationComponentClass1)
    $myApplicationComponentClass2 = $discoveryData.CreateClassInstance("$MPElement[Name='MyDiscoveryDemoManagementPack.MyApplicationComponentClass']$")
    $myApplicationComponentClass2.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "MyApplicationComponentClass instance")
    $myApplicationComponentClass2.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computer) # Why is this needed
    $myApplicationComponentClass2.AddProperty("$MPElement[Name='MyDiscoveryDemoManagementPack.MyApplicationComponentClass']/Name$", "Number 2")
    $discoveryData.AddInstance($myApplicationComponentClass2)
    $relationshipInstance1 = $discoveryData.CreateRelationshipInstance("$MPElement[Name='MyDiscoveryDemoManagementPack.MyLocalApplicationClassHostsMyApplicationComponentClass']$")
    $relationshipInstance1.Source = $myLocalApplicationClass
    $relationshipInstance1.Target = $myApplicationComponentClass1
    $discoveryData.AddInstance($relationshipInstance1)
    $relationshipInstance2 = $discoveryData.CreateRelationshipInstance("$MPElement[Name='MyDiscoveryDemoManagementPack.MyLocalApplicationClassHostsMyApplicationComponentClass']$")
    $relationshipInstance2.Source = $myLocalApplicationClass
    $relationshipInstance2.Target = $myApplicationComponentClass2
    $discoveryData.AddInstance($relationshipInstance2)
    $api.LogScriptEvent('DiscoverClassesAndRelationships.ps1', 1002, 0, "Discovery ended - data returned now")
    #$api.return($discoveryData)
    $discoveryData
    Here my classes and relationships:
    <TypeDefinitions>
    <EntityTypes>
    <ClassTypes>
    <ClassType ID="MyDiscoveryDemoManagementPack.MyComputerRoleClass" Base="Windows!Microsoft.Windows.ComputerRole" Accessibility="Internal" Abstract="false" Hosted="true" Singleton="false"/>
    <ClassType ID="MyDiscoveryDemoManagementPack.MyLocalApplicationClass" Base="Windows!Microsoft.Windows.LocalApplication" Accessibility="Internal" Abstract="false" Hosted="true" Singleton="false"/>
    <ClassType ID="MyDiscoveryDemoManagementPack.MyApplicationComponentClass" Base="Windows!Microsoft.Windows.ApplicationComponent" Accessibility="Internal" Abstract="false" Hosted="true" Singleton="false">
    <Property Key="true" ID="Name" Type="string"/>
    </ClassType>
    </ClassTypes>
    <RelationshipTypes>
    <RelationshipType ID="MyDiscoveryDemoManagementPack.MyLocalApplicationClassHostsMyApplicationComponentClass" Base="System!System.Hosting" Abstract="false" Accessibility="Internal">
    <Source ID="Source" Type="MyDiscoveryDemoManagementPack.MyLocalApplicationClass"/>
    <Target ID="Target" Type="MyDiscoveryDemoManagementPack.MyApplicationComponentClass"/>
    </RelationshipType>
    </RelationshipTypes>
    </EntityTypes>
    </TypeDefinitions>
    For anyone who would like to try this out, the complete management pack (you need to change $computer = 'SomeServer.SomeDomain' to match some managed computer in your system):
    <?xml version="1.0" encoding="utf-8"?>
    <ManagementPack SchemaVersion="2.0" ContentReadable="true" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Manifest>
    <Identity>
    <ID>MyDiscoveryDemoManagementPack</ID>
    <Version>1.0.0.28</Version>
    </Identity>
    <Name>MyDiscoveryDemoManagementPack</Name>
    <References>
    <Reference Alias="SC">
    <ID>Microsoft.SystemCenter.Library</ID>
    <Version>7.0.8433.0</Version>
    <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
    </Reference>
    <Reference Alias="Windows">
    <ID>Microsoft.Windows.Library</ID>
    <Version>7.5.8501.0</Version>
    <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
    </Reference>
    <Reference Alias="System">
    <ID>System.Library</ID>
    <Version>7.5.8501.0</Version>
    <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
    </Reference>
    </References>
    </Manifest>
    <TypeDefinitions>
    <EntityTypes>
    <ClassTypes>
    <ClassType ID="MyDiscoveryDemoManagementPack.MyComputerRoleClass" Base="Windows!Microsoft.Windows.ComputerRole" Accessibility="Internal" Abstract="false" Hosted="true" Singleton="false" />
    <ClassType ID="MyDiscoveryDemoManagementPack.MyLocalApplicationClass" Base="Windows!Microsoft.Windows.LocalApplication" Accessibility="Internal" Abstract="false" Hosted="true" Singleton="false" />
    <ClassType ID="MyDiscoveryDemoManagementPack.MyApplicationComponentClass" Base="Windows!Microsoft.Windows.ApplicationComponent" Accessibility="Internal" Abstract="false" Hosted="true" Singleton="false">
    <Property Key="true" ID="Name" Type="string" />
    </ClassType>
    </ClassTypes>
    <RelationshipTypes>
    <RelationshipType ID="MyDiscoveryDemoManagementPack.MyLocalApplicationClassHostsMyApplicationComponentClass" Base="System!System.Hosting" Abstract="false" Accessibility="Internal">
    <Source ID="Source" Type="MyDiscoveryDemoManagementPack.MyLocalApplicationClass" />
    <Target ID="Target" Type="MyDiscoveryDemoManagementPack.MyApplicationComponentClass" />
    </RelationshipType>
    </RelationshipTypes>
    </EntityTypes>
    </TypeDefinitions>
    <Monitoring>
    <Discoveries>
    <Discovery ID="MyDiscoveryDemoManagementPack.MyDiscovery" Target="SC!Microsoft.SystemCenter.RootManagementServer" Enabled="true" ConfirmDelivery="false" Remotable="true" Priority="Normal">
    <Category>Discovery</Category>
    <DiscoveryTypes>
    <DiscoveryClass TypeID="MyDiscoveryDemoManagementPack.MyComputerRoleClass" />
    <DiscoveryClass TypeID="MyDiscoveryDemoManagementPack.MyLocalApplicationClass" />
    <DiscoveryClass TypeID="MyDiscoveryDemoManagementPack.MyApplicationComponentClass" />
    <DiscoveryRelationship TypeID="MyDiscoveryDemoManagementPack.MyLocalApplicationClassHostsMyApplicationComponentClass" />
    </DiscoveryTypes>
    <DataSource ID="DS" TypeID="Windows!Microsoft.Windows.TimedPowerShell.DiscoveryProvider">
    <IntervalSeconds>300</IntervalSeconds>
    <SyncTime />
    <ScriptName>DiscoverClassesAndRelationships.ps1</ScriptName>
    <ScriptBody><![CDATA[param($sourceId,$managedEntityId)
    $api = new-object -comObject "MOM.ScriptAPI"
    $api.LogScriptEvent('DiscoverClassesAndRelationships.ps1', 1001, 0, "Discovery started (12)")
    $discoveryData = $api.CreateDiscoveryData(0,$sourceId,$managedEntityId)
    $computer = 'SomeServer.SomeDomain'
    $myComputerRoleClass = $discoveryData.CreateClassInstance("$MPElement[Name='MyDiscoveryDemoManagementPack.MyComputerRoleClass']$")
    $myComputerRoleClass.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "MyComputerRoleClass instance on $computer")
    $myComputerRoleClass.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computer)
    $discoveryData.AddInstance($myComputerRoleClass)
    $myLocalApplicationClass = $discoveryData.CreateClassInstance("$MPElement[Name='MyDiscoveryDemoManagementPack.MyLocalApplicationClass']$")
    $myLocalApplicationClass.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "MyLocalApplicationClass instance on $computer")
    $myLocalApplicationClass.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computer)
    $discoveryData.AddInstance($myLocalApplicationClass)
    $myApplicationComponentClass1 = $discoveryData.CreateClassInstance("$MPElement[Name='MyDiscoveryDemoManagementPack.MyApplicationComponentClass']$")
    $myApplicationComponentClass1.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "MyApplicationComponentClass instance")
    $myApplicationComponentClass1.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computer) # Why is this needed
    $myApplicationComponentClass1.AddProperty("$MPElement[Name='MyDiscoveryDemoManagementPack.MyApplicationComponentClass']/Name$", "Number 1")
    $discoveryData.AddInstance($myApplicationComponentClass1)
    $myApplicationComponentClass2 = $discoveryData.CreateClassInstance("$MPElement[Name='MyDiscoveryDemoManagementPack.MyApplicationComponentClass']$")
    $myApplicationComponentClass2.AddProperty("$MPElement[Name='System!System.Entity']/DisplayName$", "MyApplicationComponentClass instance")
    $myApplicationComponentClass2.AddProperty("$MPElement[Name='Windows!Microsoft.Windows.Computer']/PrincipalName$", $computer) # Why is this needed
    $myApplicationComponentClass2.AddProperty("$MPElement[Name='MyDiscoveryDemoManagementPack.MyApplicationComponentClass']/Name$", "Number 2")
    $discoveryData.AddInstance($myApplicationComponentClass2)
    $relationshipInstance1 = $discoveryData.CreateRelationshipInstance("$MPElement[Name='MyDiscoveryDemoManagementPack.MyLocalApplicationClassHostsMyApplicationComponentClass']$")
    $relationshipInstance1.Source = $myLocalApplicationClass
    $relationshipInstance1.Target = $myApplicationComponentClass1
    $discoveryData.AddInstance($relationshipInstance1)
    $relationshipInstance2 = $discoveryData.CreateRelationshipInstance("$MPElement[Name='MyDiscoveryDemoManagementPack.MyLocalApplicationClassHostsMyApplicationComponentClass']$")
    $relationshipInstance2.Source = $myLocalApplicationClass
    $relationshipInstance2.Target = $myApplicationComponentClass2
    $discoveryData.AddInstance($relationshipInstance2)
    $api.LogScriptEvent('DiscoverClassesAndRelationships.ps1', 1002, 0, "Discovery ended - data returned now")
    #$api.return($discoveryData)
    $discoveryData]]></ScriptBody>
    <Parameters>
    <Parameter>
    <Name>sourceId</Name>
    <Value>$MPElement$</Value>
    </Parameter>
    <Parameter>
    <Name>managedEntityId</Name>
    <Value>$Target/Id$</Value>
    </Parameter>
    </Parameters>
    <TimeoutSeconds>120</TimeoutSeconds>
    </DataSource>
    </Discovery>
    </Discoveries>
    </Monitoring>
    <LanguagePacks>
    <LanguagePack ID="ENU" IsDefault="true">
    <DisplayStrings>
    <DisplayString ElementID="MyDiscoveryDemoManagementPack.MyComputerRoleClass">
    <Name>A demo Computer Role (base Microsoft.Windows.ComputerRole)</Name>
    <Description></Description>
    </DisplayString>
    <DisplayString ElementID="MyDiscoveryDemoManagementPack.MyLocalApplicationClass">
    <Name>A demo Local Application (base Microsoft.Windows.LocalApplication)</Name>
    <Description></Description>
    </DisplayString>
    <DisplayString ElementID="MyDiscoveryDemoManagementPack.MyApplicationComponentClass">
    <Name>A demo Application Component (base Microsoft.Windows.ApplicationComponent)</Name>
    <Description></Description>
    </DisplayString>
    <DisplayString ElementID="MyDiscoveryDemoManagementPack.MyDiscovery">
    <Name>My Demo Discovery</Name>
    <Description>Script based discovey of all demo classes and relationships in this demo. To run at the Root Management Server Simulator</Description>
    </DisplayString>
    </DisplayStrings>
    <KnowledgeArticles></KnowledgeArticles>
    </LanguagePack>
    </LanguagePacks>
    </ManagementPack>

    According to
    System Center Authoring Hub:
    "Any key properties of the class being discovered and the key properties of any of its parents must be provided. Values for other properties are optional. In this example [as well as mine], the class being discovered is hosted by Windows Computer
    and the key property of that class is added to the instance."
    http://social.technet.microsoft.com/wiki/contents/articles/14261.operations-manager-management-pack-authoring-discovery-scripts.aspx
    So that's why :-)
    Michael

Maybe you are looking for