Assign an instance within a screenflow

Hi,
I would like to assign an instance to the first participant, who "opens" a task, meaning who opens the screenflow of the current activity. And he or she should be still assigned even the screen might be cancelled. So usually, I know, you can assign using Participant.next, but is that working also within a screenflow? And I guess it will not work in case of a cancel, because if someone cancels the screen it would rollback all changes, right? Is there any other solution?
Regards
Matthias

Sure you've tried about everything and know you're not going to like this answer.
You'd think you could assign the participant.next in the Interactive activity's outgoing argument mappings but this will not work (sorry to remind you of a frustrating 10 minutes you recently had).
The only way you can assign the instance to the participant who opened the screenflow is to have it leave the Interactive activity and then flow to an Automatic activity (where participant.next is set) and then flow back into the Interactive activity.
Here are the steps to do this in case you need them:
1. Create a new String instance variable in your screenflow called "personInSF".
2. Inside an automatic task immediately after the Begin in the Screenflow, set this variable to "Participant.name".
3. Map this instance variable to an outgoing argument variable that exits the screenflow. Make sure that the Interactive activity has a variable mapped to this outgoing argument variable containing the participant's name (you'll need it in step 7 below).
4. Capture the fact that the user hit the "Cancel" button. Do not set the action predefined variable to CANCEL like you normally would. Just set some instance variable (call it "cancelFlag") inside the screenflow that goes out of the screenflow to "cancel" to flag that the button was clicked. Make sure that this variable is set to some value other than null as it leaves the Screenflow (e.g. either "cancel" or "ok").
5. (this is the part you're not going to like) In the process (not the screenflow), add an Automatic activity. Have your interactive activity flow to this Automatic activity using a conditional transition. The logic needs to detect if the cancel button was clicked so add this logic to your conditional transition "cancelFlag = "cancel".
6. Have this Automatic activity flow back to the Interactive activity.
7. In the logic in the Automatic activity, set "participant.next" to the name of the participant you passed out of the Interactive activity in step 3. Know you know this, but use logic like this:
{code}participant.next = participant.find(name : personInSf){code}
Dan

Similar Messages

  • Grab from an instance within split join

    Hi All
    I have a process, and every now and then a user from role 'G' wants to grab the instances of a process (that may exist in any activity) to one of his activities, say 'AAG' (Activity After Grab :)). The Grab activities properties are defined so that it can grab instances from 'All' activities and then assign to 'AAG'.
    You can visualize the process like this:
    Activity A1 --> Split ----> branch 1 after split forwards to Activity AS1, brach 2 after split forwards to Activity AS2 ---> join ---> A3 --> A4 ---> AAG --> A5 ---> end
    Now when an instance has executed the split, the main instance waits at join. THe child instances are each at activity AS1 and AS2.
    When a user wants to grab this instance, the idea is that AS1 and AS2 should disappear, the instance at join should go to AAG.
    To realize that, if I try to grab the instance waiting at join, I can move this to AAG. However instances at AS1 and AS2 still remain there.
    If I try to grab instances at AS1 or AS2, I can not send them to AAG.
    Any workarounds?
    I am basically using PAPI to get hold of the instances. Was thinking of grabbing the instance at join, and terminating all others. But am looking for a better solution.
    THanks
    Satinder

    Hi Dan
    You are right, this might be an option (I have not yet tried it though). But I guess it still might not be the best option because -
    1. This user can grab instance in any activity and assign to AAG. Now if an activity is not within split-join, then we dont really need to interrupt the instance and call this message activity, a grab works fine. Message activity will also work fine, but that would mean that for every activity in the process I will need to add a conditional transition (executed when flagToGoToAAG = true) that goes to AAG.
    2. We got a little more than usual complex process. It has about 6-7 splits. Also there are about three Grab activities. This would mean about 7*3 additional transitions originating from different joins.
    I was looking for a solution may be that can process/abort all instances within split-join when the instance at join is grabbed.
    Thanks for your help.
    Cheers
    BTW, I have never used a MessageWait, in case this becomes the only option available, could you let me know how to create an interrupt from PAPI for this messageWait.
    Thanks a lot
    Best
    Satinder

  • Creating New Entity Instances within OPA

    This is another one that I think I know the answer to, but I think it is best to confirm.
    In prior versions, it was not possible to create entity instances within RuleBurst/Haley Office Rules. Is that still the case in OPA?
    For example, my rules are determining the status of a case and the reason(s) why that status was determined. The case status may be Denied and the reasons may be "invalid customer Id", "expenses to income ratio too high", "primary customer not employed long enough", etc. I want to return all the reasons for the status. While the list of reasons is pre-determined, the ones that apply to a particular case are dynamic, as any, but not all can apply.
    Given this situation using a database, I would create an instance of reason for each applicable one and link it to the case. In the past, with OPA's predecessor(s), it was not possible to create new instances from within. They either had to all be passed into the rulebase or a list of all allowable reasons attributes had to be created and then set to true for the ones that applied.
    My preference is to create the instances inside OPA. Is that functionality provided in the current version?
    Thanks,
    Terry

    Hi Terry,
    Michael is correct that you can't write rules at design time which will dynamically create new entity instances at runtime. However, perhaps the new inferred relationships functionality in v10 could address what you're trying to do.
    You can write rules which conclude membership of an inferred relationship. So you might always have, say, 10 instances of 'the reason' in every case, but as for which of those instances apply in any particular case, it depends on the details of the case. You could use an inferred relationship to collect up the entity instances which apply in the case.
    First you'd need to set up a regular one-to-many relationship to instantiate the 10 instances at runtime - this would be done in the usual way. Then you'd also need to set up an inferred relationship and write rules to conclude the members of the inferred relationship. The instances which are members of the inferred relationship are then effectively the list of entity instances you wanted to create in your example above.
    Have a look at this OPM Help article: http://www.oracle.com/technology/products/applications/policy-automation/help/opm10_1/Content/Rules%20using%20entity%20instances/Reason_about_relship_between_2_entities.htm
    Cheers,
    Jasmine

  • How to assign instances within an OU?

    Hi,
    I have two OU's as follows:
    OU1
    |
    +-Sales_1
    |
    +-Infrastructure_1
    OU2
    |
    +-Sales_2
    |
    +-Infrastructure_2
    Right now if a Sales_1 participant generates an instance, both, Infrastructure_1 and 2 can see the instance in their inbox.
    What i need is: if the Sales_1 participant generates an instance, this instance must be only in the Infrastructure_1 participant's Inbox, and the same behavior if the instance is created by Sales_2 -Infrastructure_2. Is it possible to do this?
    Regards!!

    Hi,
         Essentially, the access to business process is determined by these 2 artifacts: OU and roles.
         For a person to have access to an activity in a process, this participant should belong to the Organizational Unit in which the process has been deployed as well as having the right roles assigned to him/her.
         In the event of a process connecting to a sub-process, the instance will be created without any problem even when the main process and sub-processes are deployed to different Organizational Units. The only problem may be that if the sub-process is deployed to a different Organizational Units, it will ONLY be visible by participants in the sub-process Ous and with the right roles assigned.
              eduardoc.

  • Null Instance Variables on Screenflow

    Hi,
    I have some problems with instance variable of type BPM Objects in a Screenflow.
    I always create automatic processes without user interaction, and on server side I have seen that it's not necessary to instantiate an instance variable. Moreover if within a method I write (I use the Java style syntax):
    String a;
    a.toString(); // just to call a method on a not-instantiated variable
    everything works correctly, the "a" variable is automatically instantiated.
    But it seems that in an automatic activity of a Screenflow it's different, I need to do the new also for Instance Variables.
    Then, in the Screenflow I have an Instance Variable myObject of type MyObject that is a BPM Object. This object has an attribute myStrings that is an array of String.
    To instantiate the instance variable I can write:
    myObject = new MyObject();
    But then I get a java.lang.*NullPointerException* when I call the extend method of its attribute myStrings to add a string.
    Do you agree with me that on the Screenflow code it's necessary to instantiate the variables?
    How can I instantiate an Array of String?
    Thank you.

    Thanks Daniel, I'm using ALBPM 6.0,
    i know the line where I get the exception, I have a logMessage before and after each line of code, and then in the exception stack there is the PBL Method line indicated:
    Caused by: java.lang.NullPointerException
         at xobject.Fuego__AutoGen__Screenflows__.__ScreenflowConJsp.automatic1(__ScreenflowConJsp.xcdl:*19*)
    19 is the code line where I get the exception. In this line I have this:
    myObject.myStrings.extend(arg1 : a);
    but the null object is not the array, it's myObject that is an Instance Variable.
    In ALBPM60_Studio_ReferenceGuide at chapter Programming Styles paragraph Java Programming Style there is:
    This style emulates Java syntax and adds several features to match PBL expressions. These added features include:
    • Output arguments
    • Input and display statements
    • Variable auto-initialization
    In fact in my previuos BPM projects I have seen that is not necessary to istantiate the variables, both for Instance Variable and local variable declared within a method. In my previous post I did an example:
    String a;
    a.toString();
    Usually this causes an Exception, but not in ALBPM methods.
    My main question is: is it possible that this is true just for Server side methods and not for Screenflow methods? Because in my case I need to instantiate every Instance Variable of my Screenflow (for example the myObject instance variable) in an Automatic Activity I have put as first Activity of the flow.
    Thanks again for your help.

  • Howto replace an embedded FPM-Instance within a Web DynPro Application?

    Hi,
    I have to build a Web DynPro application that displays an Navigation menu on the left side. On the right side within a UIViewContainer an embedded FPM Instance should be displayed depending on which entry I pressed on the Navigation menu. (Similiar to the Cockpit)
    For Test purposes I have 2 buttons in the navigation menu. One to add the fpm and one to remove the fpm.
    When I start the WD Application I first hit the addfpm button. And a new FPM Application is displayed within the UIViewElementContainer. When I hit the delfpm button the FPM will disappear. When I will the addfpm button again I get
    a dump[1]
    I have absolutely no idea why I get this dump.
    Do I have to reset the FPM application remove removing it? Or is it possible to load a new FPM configuration in the FPM without removing it first?
    Here are the Methods that I use to remove/add the FPM-Instance:
    method ONACTIONADDFPM .
      DATA: L_VIEW_CONTROLLER_API TYPE REF TO IF_WD_VIEW_CONTROLLER.
      DATA: L_COMPONENT_USAGE TYPE REF TO IF_WD_COMPONENT_USAGE.
      DATA: lf_conf_key TYPE WDY_CONFIG_KEY.
      L_VIEW_CONTROLLER_API = wd_this->WD_GET_API( ).
      "Wenn die Komponente-Usage noch nicht vorhanden ist dann erstelle Sie:
      L_COMPONENT_USAGE = wd_this->WD_CPUSE_FPM( ).
      IF L_COMPONENT_USAGE->HAS_ACTIVE_COMPONENT( ) IS INITIAL.
        lf_conf_key-CONFIG_ID = '/PLMU/WDC_MAT_OIF_CFG'.
        L_COMPONENT_USAGE->CREATE_COMPONENT( EXPORTING COMPONENT_NAME = 'FPM_OIF_COMPONENT'
                                                       CONFIGURATION_ID = lf_conf_key ).
        "Komponente mit der View verknüpfen:
        L_VIEW_CONTROLLER_API->PREPARE_DYNAMIC_NAVIGATION(
          SOURCE_WINDOW_NAME = 'WINDOW'
          SOURCE_VUSAGE_NAME = 'MAIN_USAGE_0' "MAIN_USAGE1/UIVIEW_VCA_1'
          SOURCE_PLUG_NAME   = 'TO_FPM'
          TARGET_COMPONENT_NAME = 'FPM_OIF_COMPONENT'
          TARGET_COMPONENT_USAGE = 'FPM'
          TARGET_VIEW_NAME = 'FPM_WINDOW'
          TARGET_PLUG_NAME = 'DEFAULT'
          TARGET_EMBEDDING_POSITION = 'MAIN/FPMVIEW' "'MAIN_USAGE_0/UIVIEW_VCA_1'
        WD_THIS->FIRE_TO_FPM_PLG( ).
      ENDIF.
    endmethod.
    And then remove the FPM using this button action:
    method ONACTIONDELFPM .
      DATA: L_VIEW_CONTROLLER_API TYPE REF TO IF_WD_VIEW_CONTROLLER.
      DATA: L_COMPONENT_USAGE TYPE REF TO IF_WD_COMPONENT_USAGE.
      L_VIEW_CONTROLLER_API = wd_this->WD_GET_API( ).
      "Wenn die Komponente-Usage vorhanden ist dann lösche sie:
      L_COMPONENT_USAGE = wd_this->WD_CPUSE_FPM( ).
      DATA: lo_event TYPE REF TO cl_fpm_event.
      lo_event = cl_fpm_event=>create_by_id( iv_event_id   = cl_fpm_event=>GC_EVENT_CLOSE  ).
      DATA: iwci_fpm TYPE REF TO IWCI_FPM_OIF_COMPONENT.
      iwci_fpm = wd_this->WD_CPIFC_FPM( ).
      CALL METHOD IWCI_FPM->CLOSE_DIALOG
        EXPORTING
          IO_EVENT        =  lo_event
          IV_EVENT_FAILED =  ABAP_FALSE
      IF L_COMPONENT_USAGE->HAS_ACTIVE_COMPONENT( ) IS NOT INITIAL.
        L_COMPONENT_USAGE->DELETE_COMPONENT( ).
        "FPM Ref holen und Exit-Event schicken:
        DATA: lo_fpm TYPE REF TO IF_FPM.
        lo_fpm = cl_fpm_factory=>get_instance( ).
       CHECK NOT lo_fpm IS INITIAL.
       DATA: lf_event        TYPE FPM_EVENT_ID.
       lf_event = cl_fpm_event=>GC_EVENT_CLOSE.
       lo_fpm->RAISE_EVENT_BY_ID( lf_event ).
      ENDIF.
    endmethod.
    The dump  says:
    Access via 'NULL' object reference not possible.
    The ABAP call hierarchy was:
    Method: /PLMU/IWCI_WDI_FRW_OIF~OVERRIDE_EVENT of program /1BCWDY/0O2TST5VUWTCOBML1BE7==CP
    Method: /PLMU/IF_FRW_CALLBACK_PROXY~OVERRIDE_EVENT of program /PLMU/CL_FRW_F_CALLBACK_PROXY=CP
    Method: OVERRIDE_EVENT of program /PLMU/CL_FRW_CALLBACK_PROXY===CP
    Method: OVERRIDE_EVENT_OIF of program /PLMU/CL_FRW_APPL_CNTRL_ASSISTCP
    Method: OVERRIDE_EVENT_OIF of program /1BCWDY/0O2TST5VUWTCNOS8226Y==CP
    Method: IWCI_IF_FPM_OIF_CONF_EXIT~OVERRIDE_EVENT_OIF of program /1BCWDY/0O2TST5VUWTCNOS8226Y==CP
    Method: GET_UIBBS_FOR_EVENT of program /1BCWDY/0O2TST5VUWTCNAR83UZE==CP
    Method: IWCI_IF_FPM_FLOORPLAN_COMP~GET_UIBBS_FOR_EVENT of program /1BCWDY/0O2TST5VUWTCNAR83UZE==CP
    Method: IF_FPM_FLOORPLAN~GET_UIBBS_FOR_EVENT of program CL_FPM_OIF_INTERNAL===========CP
    Method: GET_NEXT_UIBBS of program CL_FPM========================CP
    Thanks
    Sebastian

    Chris yes you are right, there is some special logic in the nav app,
    that I can't do with NWBC.
    If I would use a Portal to display the FPM within an Iframe.
    What happends when I replace the FPM in the Iframe with a new
    FPM/URl. Will the old FPM in the Iframe just disappear or will
    the FPM shutdown and release all the acquired locks?
    I already did a simliar thing where I just used URLs
    to display an FPM application within an IView/IFrame.
    But when I replace the URL of the IView/IFrame with a new URL/FPM,
    the old FPM only just disappered but no locks where released.
    So displaying the same FPM again, gives me a message that the Object is already
    locked.
    Thanks
    Sebastian

  • Using two editor instances within JTable

    Hello,
    I'm struggling around using component editors within JTable. E.g. selectAll text on entering a JTextField cell or immediately raising the popup while entering a JComboBox cell.
    In my analysis most of these problems arises due the re-use of the cell editor.
    The event sequence is doing things in the context of the old cell while preparing the editor for the new cell has already been started.
    Because it is the same component and some things are bound deep inside the L&F it seems not easy to handle them properly.
    Just an idea from me is to avoid such problems by working with two instances for the editors in general. This should avoid all problems coming out of overlapping event processing. (To provide each cell with an own component is of course no solution)
    Any comment on such an approach?
    Thanks in advance
    Wolfgang R.

    No, it wasn't the custom JTable extension.
    By entering a cell a popup will be shown for a short moment. This is only by using Windows L&F (not Metal). Within the L&F a togglePopup() is called which may cause this problem.
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Component;
    import java.util.EventObject;
    import javax.swing.DefaultCellEditor;
    import javax.swing.JComboBox;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.UIManager;
    import javax.swing.WindowConstants;
    import javax.swing.table.DefaultTableModel;
    import javax.swing.table.TableCellRenderer;
    public class JTableExt extends JTable {
         public static class ComboBoxEnumRenderer extends JComboBox implements
                   TableCellRenderer {
              public ComboBoxEnumRenderer() {
                   setEditable(false);
                   setBackground(Color.WHITE);
              public Component getTableCellRendererComponent(JTable table, Object value,
                        boolean isSelected, boolean hasFocus, int row, int column) {
                   this.removeAllItems();
                   this.addItem(value);
                   return this;
         public static class ComboBoxEnumEditor extends DefaultCellEditor {
              private static String[] values = null;
              public ComboBoxEnumEditor() {
                   super(new JComboBox());
                   values = new String[50000];
                   for (int i = 0; i < values.length; i++) {
                        values[i] = "row_" + i;
              public Component getTableCellEditorComponent(JTable table, Object value,
                        boolean isSelected, int row, int column) {
                   JComboBox combo = (JComboBox) getComponent();
                   combo.removeAllItems();
                   for (int i = 0; i < values.length; i++) {
                        combo.addItem(values);
                   combo.setSelectedIndex(0);
                   return super.getTableCellEditorComponent(table, value, isSelected, row,
                             column);
         public JTableExt() {
              super();
              init();
         // invoke editor on cell entry
         public void changeSelection(final int row, final int column, boolean toggle,
                   boolean extend) {
              super.changeSelection(row, column, toggle, extend);
              if (editCellAt(row, column))
                   getEditorComponent().requestFocusInWindow();
         private void init() {
              setDefaultEditor(Object.class, new ComboBoxEnumEditor());
              setDefaultRenderer(Object.class, new ComboBoxEnumRenderer());
         private static void setUI() {
              String lnfName = "";
              //lnfName = "com.jgoodies.plaf.plastic.Plastic3DLookAndFeel";
              lnfName = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
              try {
                   UIManager.setLookAndFeel(lnfName);
              } catch (Exception exc) {
         public static void main(String args[]) {
              try {
                   setUI();
                   javax.swing.JFrame frame = new javax.swing.JFrame();
                   frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                   frame.getContentPane().setLayout(new BorderLayout());
                   final JTableExt demo = new JTableExt();
                   Object[][] data = new Object[30][1];
                   demo.setModel(new DefaultTableModel(data, new String[] { "first column" }));
                   frame.getContentPane().add("Center", new JScrollPane(demo));
                   frame.setSize(600, 600);
                   frame.setVisible(true);
              } catch (Throwable t) {
                   System.exit(0);
    //end

  • Assigning position hierarchy within Org Model

    Hi,
    have maintained the org model with sales org and position in crm 5.0. This position is President sales and would like to maintain General Manager under this position as a subordinate. While doing so, I get the following message:
    <b>Before you select a function, select suitable entries in the structure.
        Message no. 5W707
    Diagnosis
        You have chosen a function for which a selection of  suitable entries in the structure is a prerequisite.
    Procedure
        Select one or more suitable functions in the structure and choose the function again. You can use the right mouse-button to display all the functions you can carry out for an entry.</b>
    What else am I missing here
    Thanks
    Kumar

    Hi Diana,
    Thanks for the inputs. I have rewarded points.
    As per your mail, we could maintain two positions under single organization unit one with the 'head of org unit' check and the other without that. Now they both appear under the same org unit but they appear as two positions (only difference is that the icons are different).
    What I am looking at is, Sales Org 1 should have a sub tree (arrow mark) with Mgr Director position, when I drop down this positions arrow mark, then I only I should be able to see the General Mgr's position (the GM's position should not appear parallel to the MD's position on the tree structure but should be within the MD's position)
    Can we assign any position to the head position by any standard means ?
    Hope you got my requirement clear, else let me know I can explain in more detail.
    Thanks
    Kumar

  • Assigning an instance to someone else

    Hi All
    Assume there are two roles "Employee" and "Manager" and four participants say E1, E2, E3 and M1
    E1,E2,E3 have Employee role
    M1 has Manager role
    Suppose there are two instances I1 and I2 assigned to E1.
    Now E1 goes on leave or leaves the company. M1 decides to take those instances from E1's queue and assign them to E2 or E3.
    How can we achieve this?
    Thanks
    Satinder

    Hi Satinder,
    You're right. My answer was underwhelming (using the Process Administration tool).
    Here's an approach to reassigning a batch of instances from one participant. You'll often run into problems reassigning instances because either the Interactive activity where the instance is located does not have its "Assignable" property checked or the supervisor does not have the role assigned. This logic overcomes both of these shortcomings.
    1) place this logic inside a Global Interactive activity in a role. This role should only be assigned to people who you want to be able to reassign instances from one participant to another.
    2) Add a new participant "AUTOCLIENT" and assign it to the new role
    3) Add a new Grab activity called "GrabAutomatic" (see the logic below) and define its property as "From all / To all". If you have a method for the Grab, you won't need the "on ie as Exception" catch block.
    4) the "input" statement is just so you can see an example working from this logic. Replace this with your own UI.
    Although this reassigns ALL of the instances assigned to a specific participant, you could use the search filter to return a list of instances and then let the supervisor pick which ones should be reassigned.
    fromPart as String
    toPart as String
    bp as BusinessProcess
    input "Name of the person to reassign from: " : fromPart,
          "Name of the person to reassign to: " : toPart
        using title = "title",
              buttons = ["Ok", "Cancel"]
        returning selectedButton = selection
    do     
        instF as InstanceFilter = InstanceFilter()
        instances as Fuego.Papi.Instance[]
        instanceDescription as String
        connectTo bp
            using url = Fuego.Server.directoryURL,
                  user = "AUTOCLIENT",
                  password = "P",
                  process = "/" + processName
        logMessage "next is prc id"
        create(instF, processService : bp.processService)
         instF.searchScope = SearchScope(participantScope : ParticipantScope.ALL,
              statusScope : StatusScope.ONLY_INPROCESS)
        addAttributeTo(instF, variable : VarDefinition.PARTICIPANT_ID, comparator : IS, value : fromPart)
        instances = getInstancesByFilter(bp, filter : instF)
        logMessage "instances" using severity = DEBUG
        for each inst in instances do
           logMessage "Found it: " + inst.id
           do
           logMessage "Select: " + inst.selected
           if inst.selected then
              logMessage "instance selected"
                  unSelect inst
           end
           logMessage "instance selected"
           reasign(inst, participant : toPart)
           logMessage "assigned it to " + toPart
           // Throws exception if activity was not assignable
           on e as Exception
              logMessage "Exception: ->" + e.message
              description as String = String(getVar(inst, var : "PREDEFINE_DESCRIPTION"))
              logMessage "Trying grab for " + description
              // determine where activity was before it was grabbed
              backToActivity as String
              backToActivity = inst.activityId
              do
                    grab inst
                         using grabActivity = "GrabAutomatic"
                    logMessage "Grabbed Instance Status: " + inst.grabbed
                        using severity = DEBUG
                     do
                        runTask inst using activity = "GrabAutomatic"
                     on ie as Exception
                        // exception that occurs if there is no logic inside Grab
                     end
                     logMessage "Ran Grab " + inst.grabbed
                        using severity = DEBUG
                       route inst
                          using activity = backToActivity
                     logMessage "Routed back"
                         using severity = DEBUG
                      reasign(inst, participant : toPart)
                      logMessage "reassigned it to " + toPart
               on e1 as Exception
                  logMessage "Exception w/i exception: " + e.message
                  errors as String
                  errors = errors + "Instance: " + description + " could not be reassigned\n\n"
                  logMessage "Errors: " + errors    
               end
           end
        end
    on exit
        disconnectFrom bp
    endHope this helps,
    Dan

  • Exclude a participant for a role while assigning an instance.

    Hello
    I'm trying to implement an approval process using ALBPM 5.7.
    Would like to know if there is a way of excluding a participant from a role and send the instance to all other participant.
    Do you have any suggestions or a solution?
    Thanks.

    I'm sure there are other ways to do this, but here are a couple approaches you've probably already thought of that have worked in the past to do this.
    One approach is to allow the screenflow associated with the Interactive activity to prevent the designated end user from invoking the work item instance. You'd pass in the name of the participant you want excluded into the screenflow as a variable. Inside the screenflow, you'd have a conditional transition from the Begin to a Interactive Component Call task with a screen that tells the designated end user that they cannot use this work item instance. The logic in this conditional transition going to this task would check to see if the name in the variable passed into the screenflow is equal to the predefined variable "Participant.name" (note the uppercase "P" in participant). Once the Interactive Component Call task completes it would flow to an Automatic Task that has the logic "action = CANCEL" and then flows to the End task in the Screenflow. The drawback to this approach is that designated end user will be able to see the work item instance in their inbox and they will be able to click on it (although they won't be able to take an action on it). The benefits are that this is simple to set up (a conditional transition and a couple tasks in a Screenflow).
    A second approach is more complicated, but more interactive. On the fly, you'd create a parametric role. This parametric role for this work item instance would have every participant in the role except for the designated person. When the work item instance flows across to the Interactive activity inside the parametric role, the designated employee won't see the instance and everyone else would be able to see it. The drawback to this approach is that you're creating a bunch of new parametric roles (one for each work item instance). The benefit is that the designated end user won't be able to click the instance since it won't even appear in their inbox.
    Dan

  • Adding subform instances within subform instances

    In this form (attached), the user chooses a type of page to add by clicking the buttons pagebtn, discussion, assessment, or dropbox. When they click this button, an instance of SBtemplate.Pages is created, but only the subform they requested (page, discussion, dropbox, assessment) appears. So, while the user only sees the page type they requested, they are actually seeing a subform within another subform.
    The problem I am having now is that I can't create instances of subforms within these. For example, in the page subform, I need users to be able to create instances of the image, audio, and video subforms. And in the discussion subform, I need the user to be able to create an instance of the customrubric subform. I think this is not working because I need to specify the instance of SBtemplate.Pages in the code calling the instance manager.
    Is this a correct assessment? If so, how do I do that? If not, what can I do to accomplish this action?
    Thank you!

    I figured this out, so I wanted to post my form in case anyone is having the same problem.
    This is an example of a click event within one of my subforms to create an instance of another subform:
    xfa.resolveNode("xfa.form.SBtemplate.Pages[" + (this.parent.parent.parent.index) + "]").page._image.addInstance(this.parent.index);

  • Multiple reporting instances within application

    Hi,
    Can I have 2 analytics instances in different tabs within the Siebel application. One reporting tab pointing to the production database instance and the other to the archival database instance.
    Thanks.

    Well that is something you may as well do in the RPD rather than duplicating the reports & dashboards. From your statement I take it that you want to have the same reports for the production and the backup system. You have several options for that:
    1.) You can simply have the report objects you have and by combining the two different data sources in the LTS of your business models, map your models to both sources and depending on which timeframe you choose in the prompt on the dashboards, the query will be fired against the one, the other or both data sources.
    This means that you have a seamless integration and users will not even notice that there's a physical break between the sources.
    2.) In case your requirements are to HAVE a break between the sources so that users are explicitly discovering production data or archived data you can use the approach I described here:
    http://hekatonkheires.blogspot.com/2009/10/obiee-101341-dynamic-data-source.html
    This means one single prompt and you can change the scope of all your analyses.
    Both these options allow you to keep your webcat simple and singular. No duplication.
    Is this something that'd suit your requirements?

  • How to create multiple instances within same AS

    Ramesh,
    I have a unique problem. I might have to create B2B instances for 4 owners. As in BPEL, I can have separate domains for the 4 clients in the same instance; what is the equivalent in B2B?
    I have a limited number of CPUs and need to install the instances on the same box and hence trying to be creative yet secure here.
    Could you please provide some pointers.
    Thanks
    Shamik

    Hello Shamik,
    Please elaborate your use case. Is this just caters to user management or to really have different domain like bpel for four different users. Please see, b2b do not have the notion of BPEL domain, you might have to install multiple instances of B2B pointing to the same MR.
    Rgds,Ramesh

  • Private creation of instance WITHIN class dumps

    Hi,
    So, I've activated some of my classes and executed it. The class is to be instantiated privately. Thus, also the constructor is private.
    Now, I've got a static attribute ro_object. And I've got a static public method CREATE, which shall create this static attribute via CREATE ro_object.
    Unfortunately, the program dumps at the call of the static method right at the point, where I call CREATE OBJECT.
    class is ZPLM_DL_CL_DM_SPECIFICATION.
    Error in the ABAP Application Program
    The current ABAP program "ZPLM_DL_CL_DM_SPECIFICATION===CP" had to be
    terminated because it has
    come across a statement that unfortunately cannot be executed.
    The following syntax error occurred in program
    "ZPLM_DL_CL_DM_DL_TYPE_CONTROL=CP " in include
    "ZPLM_DL_CL_DM_DL_TYPE_CONTROL=CM002 " in
    line 17:
    "You cannot create an instance of the class "ZPLM_DL_CL_DM_DL_TYPE" out"
    "side the class . . . . . . ."
    The include has been created and last changed by:
    Created by: "D052039 "
    Last changed by: "D052039 "
    Error in the ABAP Application Program
    The current ABAP program "ZPLM_DL_CL_DM_SPECIFICATION===CP" had to be
    terminated because it has
    come across a statement that unfortunately cannot be executed.
    At the code block at the bottom of the page, I've got the constructor of this class and the first line is selected (the one with METHOD constructor.)
    So, if you want more code, I'll provide it.
    To me, this doesn't make sense, as other similar classes look the very same but won't dump. Also, if I make the ctor public and the instantiation public, the dump stays! I've tried to re-activate each method but it doesn't help.
    Any ideas?
    Kind regards,
    Michael
    Edited by: Michael Alexander Voelkel on Oct 15, 2009 11:45 AM
    Edited by: Michael Alexander Voelkel on Oct 15, 2009 11:45 AM

    I saw this, too. The point is: I don't try to create an instance of this other class, it's just not true and the object which I try to create is of the type of the specification-class for sure.. The code seems to be old. Re-activiating doesn't help it and the application throws dumps linked to code statements which don't exist anymore.
    Edit: It works now. After my lunch. After I haven't changed anything... does anyone have an explanation for that?
    Anyway, the actual problem is now solved. Thank you all for your time and effort!
    Edited by: Michael Alexander Voelkel on Oct 15, 2009 1:15 PM

  • Implicit list when using TABLE OF instances within an object.

    I have been searching for a solution for this problem, but to no avail.
    I have an XML schema which specifies within the root element:
    <xsd:element name="onestring" type="xs:string" minOccurs="1" maxOccurs="1"/>
    <xsd:element name="manystrings" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
    So I have created a few types in my database:
    CREATE OR REPLACE TYPE VARCHAR_TABLE AS TABLE OF VARCHAR(5);
    CREATE OR REPLACE TYPE rootelement AS OBJECT(
    onestring VARCHAR(5),
    manystrings VARCHAR_TABLE
    Now I preform the following:
    DECLARE
    xml XMLTYPE;
    obj rootelement;
    BEGIN
         obj := rootelement('valA', VARCHAR_TABLE('val1','val2','val3'));
         xml := XMLTYPE(obj);
         print_out( xml.getstringval );
    END;
    And from this, the result I get is:
    <ROOTELEMENT>
    <ONESTRING>valA</ONESTRING>
    <MANYSTRINGS>
    <VARCHAR2>val1</VARCHAR2>
    <VARCHAR2>val2</VARCHAR2>
    <VARCHAR2>val3</VARCHAR2>
    </MANYSTRINGS>
    </ROOTELEMENT>
    When what I would like to see is:
    <ROOTELEMENT>
    <ONESTRING>valA</ONESTRING>
    <MANYSTRINGS>val1</MANYSTRINGS>
    <MANYSTRINGS>val2</MANYSTRINGS>
    <MANYSTRINGS>val3</MANYSTRINGS>
    </ROOTELEMENT>
    Can this be accomplished? I also need the outputted XML to be able to be read back in. (Currently I am calling XMLTYPE(xml).toObject(obj); ).
    Thanks in advance.
    Dave

    Well, since XSL Transformations worked in 10.1 too, the following will do what you want
    SELECT XMLTYPE(ROOTELEMENT('valA', VARCHAR_TABLE('val1', 'val2', 'val3'))).TRANSFORM(XMLTYPE('<?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="xml" indent="yes"/>
        <xsl:template match="*">
            <xsl:choose>
                <xsl:when test="*">
                    <xsl:apply-templates/>
                </xsl:when>
                <xsl:otherwise>
                    <xsl:copy-of select="."/>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:template>
        <xsl:template match="/ROOTELEMENT/MANYSTRINGS/node()">
            <xsl:element name="{name(..)}">
                <xsl:value-of select="text()">
           </xsl:value-of>
            </xsl:element>
        </xsl:template>
        <xsl:template match="ROOTELEMENT">
            <ROOTELEMENT>
                <xsl:apply-templates/>
            </ROOTELEMENT>
        </xsl:template>
    </xsl:stylesheet>
    ')) AS TRANSFORMED
      FROM DUALSorry for providing an earlier solution that would not apply to your version, but I find it hard to remember the features of each distinct one. I vaguely remembered (I work with 11g for quite a bit now) that APPENDCHILDXML was 10g functionality, but did not remember that it was actually 10.2.
    Regards
    Philip

Maybe you are looking for