Hierarchy of criteria workflow activation

Is there a specific way in which criteria for Criteria Workflows are evaluated? I'm trying to determine what would happen in the following case:
If I have 2 criteria workflows - one is checking for a content type (let's call it encyclopedias) and the other is checking for an account (let's call it librarians) - what happens when both are true? Is the item put into one workflow, followed by the other? Is an error generated?
Thanks

According to the UCM 10gR3 Workflow Implementation Guide (page 35): "+If a content item matches the criteria for two different workflows, it will enter the first workflow in the list of defined workflows.+" Hopefully this helps.
Thanks,
Jon Chartrand

Similar Messages

  • Criteria-Workflow to start BPEL-Process

    Hi,
    I'm currently building a proof of concept for a wokflow-implementation using WCC and Oracle SOA/BPM-Suite. Therefore I've activated the BpelIntegration component of WCC and set it up as described in http://docs.oracle.com/cd/E21764_01/doc.1111/e16759/c03_config_ucm_bpel002.htm.
    However I'm a bit confused of the meaning of the users I assign to the criteria-workflow (according to http://docs.oracle.com/cd/E21764_01/doc.1111/e16759/c04_config_cs001.htm).
    I've assigned an "Additional Exit Condition" with the rule "wfGet("conversationId") and obIsInstanceClosed("process_3", wfGet("conversationId"))".
    As far as I understand this, I must at least assign one user. If I then choose to say at least 0 (Zero!) approvers, I've got the following behavior: The BPEL-Process is started, however the the WCC-Workflow ends immediately. There is no waiting for my additional exit-condition.
    If I choose 1 approver, the workflow waits for both the BPEL-Instance to get closed and the assigned user to approve.
    Is there an easy way to wait for the BPEL-Instance to close but not for the user to manually approve? I thought of doing the approve programmatically using WCC-Webservices from my BpelProcess, however this is not really what I would like to do. The reason I'm asking for this is that this would allow it to do the more document-centric parts of the WF in the Criteria Workflow while doing the approval itself completely in BPEL.
    Any best practices or hints regarding this? Or is there some additional documentation or samples? The only doc I found is the "Oracle® Fusion Middleware BPEL Component Guide for Content Server" that doesn't cover much details.
    Regards,
    Johannes

    Hi Johannes,
    I understand your point. To clarify I will guide you a bit through history.
    At Stellent times, prior to acquisition, native workflows (criteria and basic) were the only OOTB mechanism to implement workflows. Note that unlike BPEL and now even BPM workflows, native workflows have also impact on items behavior in the system - the item has a special status (REVIEW, not DONE or RELEASED), is not searchable, etc. The obvious disadvantages of native workflows are:
    - they are old fashioned (no graphical design)
    - they are proprietary (for everything, but the linear flow you need an idocscript)
    Also, at the time of acquisition, Oracle had more than 10 workflows engines. Therefore, shortly after that it has been announced that WCC (UCM at that time) will contain restricted use of BPEL PM (the BPEL runtime engine + free JDeveloper for design) to enrich workflow design/runtime experience. There are two possible ways of usage:
    - the way you described (start a criteria workflow, handover to BPEL and somehow synchronize the two), or
    - you do everything in BPEL and call UCM via web services. Note that this way you lose the status-related functionality
    I would not dare to comment on best practices, but it seems that in reality you have two options:
    - call a web service from BPEL (at the end of BPEL workflow) to approve/exit the native workflow
    - set a flag (also via a web service) and on the UCM side implement an idocscript (most likely Additional Exit Condition) to auto-approve the workflow, or process to the next step, if you will
    Note that the way when you do everything in either WCC, or BPEL has another reason: WCC native workflows have its own GUI, and BPEL worklists are not OOTB integrated into WCC's interface. This has changed already, since introducing the umbrella WebCenter concept. Note, however, that the front-end product where these two meet is WebCenter Portal, not WebCenter Content.
    Furthermore, for about a year ago Unified BPM Suite, which is the flag ship in BPM for Oracle, has become a part of WCC license. I did some survey on this point and it seems it's not easy (if possible at all) to bind criteria workflows with BPM ones. There is, however, a referential presentation which demonstrates how to add a document(no statuses, no workflows in WCC) to a BPM process, and this seems to be the way (no guarantee!) where the products aim.
    I have also noticed that whilst in PS5 ( http://docs.oracle.com/cd/E21764_01/ecm.htm ) the BPEL Component manual is still present, in PS6 ( http://docs.oracle.com/cd/E23943_01/webcontent.htm ) it has disappeared.
    I am eager to hear the news from product management.

  • Workflow Activity "Lookup Value" returns An error occured while enumerating the filter using [//WorkflowData/customvalue]

    I want to generate an Accountname using EmployeeID, FirstName and LastName via a workflow.
    I'm using the Granfeldt Workflow Activity Library (https://fimactivitylibrary.codeplex.com/)
    I'm using the FIM Powershell Workflow Activity (https://fimpowershellwf.codeplex.com/)
    Steps:
    Passing the EmployeeID, FirstName and LastName to the powershell Activity, generating a logonid based on logic.
    Add-PSSnapin FIMAutomation
    $EmployeeID = $fimwf.WorkflowDictionary.EmployeeID
    $Forename = $fimwf.WorkflowDictionary.Firstname
    $Lastname = $fimwf.WorkflowDictionary.Lastname
    'logic creating a custom logonid here
       ==> This works
    Returning data back to the workflow via that powershell script:
    $fimwf.WorkflowDictionary.Add('NewAccountName',$newlogonid)
       ==> This works
     Using Lookup Value Activity to read the Workflow data and update the [//Target/AccountName] fails.
    This gives an error:
           An error occurred while enumerating the filter 'string' .
    (where string is the actual generated userid that I've got back from the powershell script. Example dab2563)
    I tried with only [//WorkflowData], then this gives the error:
          Index was outside the bounds of the array.
    Any hints to solve this?    
    Kind regards,
    David

    The Lookup Activity is for looking up an object in the FIM Service. Seems like thats not what you're trying to accomplish.
    For updating the target of the workflow, just use the built-in Function Evaluator. The Lookup WF was not built for that and it is failing because you have not specified a valid XPAth lookup filter, such as /Person[AccountName='BillG']
    Regards, Soren Granfeldt
    blog is at http://blog.goverco.com | facebook https://www.facebook.com/TheIdentityManagementExplorer | twitter at https://twitter.com/#!/MrGranfeldt

  • How to get a substring in a Workflow Activity?

    I'm concatenating some values into a Summary field in a workflow activity as follows:
    IIF(Eq([//Target/Code1],True),"1,","")+IIF(Eq([//Target/Code2],True),"2,","")+IIF(Eq([//Target/Code3],True),"3,","")
    So if Code1 and Code2 are true I get a Summary Value of 1,2,
    Now I want to trim the trailing comma.
    So I did this
    Left([//Target/Summary],Add(Length([//Target/Summary]),-1))
    This part doesn't work.  It says Left is improperly formatted or missing a parameter.
    If I put a numeric value like 1 or 2 as the second value it works.
     Any suggestions on how to get trim a character off the end of a string in a FIM Workflow activity?

    Length isn't a function supported by the FIM Function evaluator Workflow activity. (Which is frustrating).
    Here is my sloppy approach using the built-in tool (lots of nesting so if you need to do this for more than 3 conditions this grows out of control):
    IIF(Eq([//Target/Code1],True),IIF(Eq([//Target/Code2],True),IIF(Eq([//Target/Code3],True),"1,2,3","1,2") ,IIF(Eq([//Target/Code3],True),"1,3","1") )
    ,IIF(Eq([//Target/Code2],True),IIF(Eq([//Target/Code3],True),"2,3","2") ,IIF(Eq([//Target/Code3],True),"3","") ))
    OR you can use one of these custom workflows that allows you to run your own code:
    http://fimwf.codeplex.com/
    or
    https://fimactivitylibrary.codeplex.com/wikipage?title=Code%20Run%20samples&referringTitle=Documentation
    David Lundell, Get your copy of FIM Best Practices Volume 1 http://blog.ilmbestpractices.com/2010/08/book-is-here-fim-best-practices-volume.html

  • How to convert a word document to PDF from a criteria workflow

    Hi,
    How to create a new revision in PDF format from a word document inside a criteria workflow? The inbound refinery converts documents to PDF automatically upon check-in, but I want to make the conversion in a specific step of a workflow.
    Thanks,
    Miguel

    You could write a custom service and execute it within the workflow script using the executeService Idoc function.

  • Unable to register custom workflow activity on MS CRM 2015 Online

    Hi All,
    I am trying to register custom workflow activity using plugin registration tool on MS CRM 2015 Online.
    Error says that 'No Plugin have been selected from list. Please select atleast one and try again'
    In short my assembly is not considered as custom workflow activity.
    I am giving my code let me know, If any thing is wrong.
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Activities;
    using Microsoft.Xrm.Sdk;
    using Microsoft.Xrm.Sdk.Workflow;
    namespace Training.SamplePlugin
        public class SampleCustomworkflow : CodeActivity
            [Input("Birthday")]
            public InArgument<DateTime> BirthDate { get; set; }
            [Output("NextBirthday")]
            public OutArgument<DateTime> NextBirthDay { get; set; }
            protected override void Execute(CodeActivityContext executionContext)
                //Create the tracing service
                ITracingService tracingService = executionContext.GetExtension<ITracingService>();
                //Create the context
                IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();
                IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
                IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
                if (context.PrimaryEntityName.ToLowerInvariant() == "contact")
                    DateTime birthDate = BirthDate.Get<DateTime>(executionContext);
                    DateTime nextBirthDate = new DateTime(DateTime.Now.AddYears(1).Year, birthDate.Month, birthDate.Day);
                    //NextBirthDay.Set(executionContext, nextBirthDate);
                    Entity newContact = new Entity();
                    newContact.LogicalName = "contact";
                    newContact.Id = context.PrimaryEntityId;
                    newContact["new_nextbirthday"] = nextBirthDate;
                    service.Update(newContact);
    If code is correct then has somebody faced this kind of issue earlier, what is resolution.
    Thanks
    Apurv

    Have your signed your assembly ??
    Microsoft Dynamics CRM Training|Our Blog |
    Follow US |
    Our Facebook Page |
    Microsoft Dynamics CRM 2011 Application Design
    Make sure to "Vote as Helpful" and "Mark As Answer",if you get answer of your question.

  • Shopping cart's One step approval workflow activation

    Hi Gurus,
    Please reply me for, how to create a shopping cart with One step approval workflow activation?
    regards,
    George.

    Hi George,
    The creation of the SC stays the same. Only the event linkage and the start conditions determine which workflow will be started.
    Regards,
    Martin

  • Approve quote to be ordered based on workflow activity assigned to the user

    hi,
    how to approve the quote(cart) to be ordered when user clicks place order based on the workflow activity assigned to the user.
    regards
    yesukannan

    Thanks for the quick response.The workflow rule will work only for certain combinations.
    I am trying to avoid using different combinations of the word "Convention Center" in the workflow rule since the word convention center could be spelled with mixed cases by the sales people.For example - Convention center or convention Center or CONVENTION center.
    I don't want to check for the different combinations of the convention center string in the workflow rule since i need to check for other fields in the opportunity and the expression could get very long.
    I am trying to convert the opportunity to upper case and then check for 'CONVENTION CENTER' so that it will handle all the scenarios.
    Thanks
    Swami

  • Highlight an invalid email address in a custom workflow activity in SharePoint Designer 2010

    Hi,
    I have created a custom workflow activity to send an email with the 'From' address being taken as input from the SharePoint Designer when this activity is used in a designer workflow. My requirement is to highlight an invalid email address(from address)
    on click of 'Check for Errors' button in SharePoint Designer like it is done for mandatory inputs by default where it highlights such inputs if left blank. Is it possible?
    Thanks in advance.

    Good work, catch so far Michael, does seem to be a "feature" of iCloud syncing, not sure what you could do to disable it.

  • Custom Workflow Activity not showing in Plugin Registration

    Could anybody suggest what I am doing wrong here?
    I have created a Custom Workflow Activity using this sample
    Create a custom workflow activity. But this is not showing up as a plugin/activity type in Plugin Registration Tool. See image below:
    My sample code for the activity below:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Activities;
    using Microsoft.Xrm.Sdk;
    using Microsoft.Xrm.Sdk.Workflow;
    namespace TestCustomWorkflowActivity2
    public class SampleCustomActivity : CodeActivity
    protected override void Execute(CodeActivityContext executionContext)
    //Create the tracing service
    ITracingService tracingService = executionContext.GetExtension<ITracingService>();
    //Create the context
    IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();
    IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
    IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
    Platform
    Dynamics CRM 2013 On Premises v 6.1.2.112 (SP1 UR2 installed)
    Dynamics CRM 2015 Online
    .NET Framework version
    4.0
    Thanks and Regards,
    blog: <a href="http://technologynotesforyou.wordpress.com">http://technologynotesforyou.wordpress.com</a> | skype: ali.net.pk

    Hi,
    I can see only one difference with my code:
    I placed using detectives in namespace:
    namespace Crm_RTB_NewAcc.Workflow
    using System;
    using System.Activities;
    using System.ServiceModel;
    using Microsoft.Xrm.Sdk;
    using Microsoft.Xrm.Sdk.Workflow;
    using Microsoft.Xrm.Sdk.Query;
    public sealed class GetOrgLicense : CodeActivity
    // Define Inputs/Outputs
    [Output("Count")]
    public OutArgument<int> Count { get; set; }
    protected override void Execute(CodeActivityContext executionContext)
    //My code here
    Count.Set(executionContext, 5);
    Try to make same code. It working well. 
    Hi xjomanx,
    I just tried your suggestion, but still the class is not appearing in the plugin registration. Btw, could you please confirm what version of PluginRegistration you are using?
    blog: <a href="http://technologynotesforyou.wordpress.com">http://technologynotesforyou.wordpress.com</a> | skype: ali.net.pk

  • State machine site level workflow activated but not showing in the workflow list

    I developed my state machine workflow using visual studio 2010 its successfully deployed; even I can see the feature is activated on site collection level, but its not showing in the list settings --> workflow settings --> add workflow Any Reason ??
    note: I am working on share point 2010
    Nazish Ali Rizvi

    Thanks Bhavik,
    I got the answer , actually I didn't experience it before with site workflows , it shows where we create a list just beside you can find site workflows, off course feature activation is necessary after that for workflow activation this is the way.
    http://www.codeproject.com/Articles/416393/Create-a-Workflow-using-Visual-Studio
    this is also a helpful article.
    Nazish Ali Rizvi

  • Criteria workflow -in between steps

    Hello,
    I have a criteria workflow with two documents linked together (through a custom component). I want them to be approved together.
    One document cannot leave the step without the other one.
    How could i send one of them, after being approved by User1 in an "pending/waiting" state (or at least remove it from his "Worklist Assigments"), somewhere between the steps.
    I want the document out from the User1's "worklist assignments" but not in the User2 "Wk assignments", untill the second document isn't also approved by User1.
    Is there something like dStatus = "pending" in basic workflows ?
    Can anyone help me , pls ?

    One thing I've done in the past is to use the extra exit conditions or additional update event criteria (code) to hold the docs in place until I want them to move.
    I might do something like this:
    1) create a companion file variable to act as a flag stating when it has been approved.
    2) because the update event evaluates in the event of an approval write some event script that a) looks for the approve event b) if found checks for any other constraints - like a linked document that has not yet been approved c) sets the "I have been approved" flag .
    In your example, Doc 1 is approved but the extra exit condition looks for the"I have been approved" flag for itself AND it's linked file, Document2. When Doc 2 is approved the code extra exit condition sees that both Doc 2 AND Doc 1 have been approved and allows them to progress.
    It is best to think of workflow steps as logic containers rather than sequential events. Using jump logic you can trigger the movement (flow) of documents to any container you want and under the conditions you specify (such as only when my linked file is also approved).
    hope this helps.

  • Oracle UCM custom Criteria Workflow

    I am looking for some help.
    I am trying to create a criteria workflow based on a document type. I have used the command wfrelease to commit all metadata to the repository in the entry step.
    The user in the workflow will either approve the workflow or select from a custom metadata field option list called "status". Once a user sets the value to "rescan" in the "status" option list I want the user to reject the workflow. Once rejected we want the workflow to be sent to an alias and not the original author.
    If the user sets the value of the "status" option list to either "return", "reroute", or "invalid" value and rejects the workflow then I want the workflow to be routed to a different alias.
    Is this very difficult to accomplish? What steps would I need to create? I am pretty sure somehow I need to create tokens for the 2 different aliases and call them on reject but I am having trouble putting all of this together.
    Thanks in advance for your help!

    Hey Data Bitz
    The good news is that yes, all this can be done with some configuration and a bit of workflow scripting.
    Several items:
    1) I'm not seeing a reason why you need to use WfRelease in the entry step. Workflow users can still access and alter the metadata for routing as you describe. Do you want the item to be indexed (to appear in the search results lists)?
    2) While there are several ways to do this I would envision a two step workflow. Step one is your "rejection handler" step 2 is your user review step.
    first time through content passes through step one with a criteria based jump in the entry event of that step. The criteria is along the lines of if step entry count <= 1 then jump .
    Make sure that step one is an edit and review step. Step two is where the user either approves or sets the status metadata field to some other value. If s/he approves, the content is released (or goes on to subsequent steps).
    If the status is changed then you want to trigger a rejection. This brings me to point 3...
    3) Do you want "rejection" or do you just want to rout the content to another set of users for review. The reason is that rejection is logged as a "rejection" Workflow Action in the database. If you are tracking or reporting against this then you'll want a "real" rejection. If you just want the item to be routed to an alias that is based on the value of the status field then this is different and can be achieved without a full blown rejection action. The choice is yours and the impact is really just on reporting and the routing behavior of the content object.
    4) so lets say the user sets the status to "rescan". Remember we're in step 2 here. Use the update event of step 2 to look for the Metadata Update action. Because the update event of the workflow step acts like a loop it is able to pick up the metadata updates that the user executes. Configure a jump in the step event to say +if there has been a metadata update action then check the value of the status metadata field.  if the value of the status metadata field is "rescan" then perform this action, if the value of the metadata field says some other value (either "not rescan" or "return", "reroute" etc) then perform this other action+
    5) So if you really want a true rejection then the this action from above will be a bit of IDOC to execute with WFREJECT service. You'll need to pass along the appropriate parameters for the service (see pp 348/349 of the services reference guide for the WF_REJECT service and required parameters. The guide is here: http://download.oracle.com/docs/cd/E10316_01/cs/cs_doc_10/documentation/developer/services_reference_10gr3en.pdf). If you just want to route the content to another set of users then the this action and this other action are actually the same and you can jump back to step 1 with a jump script. While the actions are the same, the users will be different and we can handle this with some basic workflow configuration scripting as well. Now here is where the fun begins.
    6) So you're back in step 1 either because the WF_REJECT action happened or because you jumped here. The status field set to "rescan" or some other value like "return", "reroute" etc. Go back int the entry event of step 1. This is where the pass through code from item 2 above was written. The cool thing about the entry event is that it gets evaluated BEFORE step users are set and email notifications go out. This means that you can set any kind of user decision logic right in the event. So beneath the pass through code I would create another block of workflow scripting that does the following: gets the value of the status field - you can do this simply by referencing the metadata field name - e.g. myVar=xStatus. If myVar="rescan" then set a companion file variable to the name of the alias you want - e.g. +<$if myVar="rescan"$><$wfSet("reviewerAlias","YOUR_ALIAS_NAME")$><$endif$>+ If you're unfamiliar with the companion file, see pp 18 of the workflow implementation guide (link below). Think of it as a temporary memory cache for each item in workflow. It is a place where any key value pairs can be set and retrieved for any document as long as it is in workflow. Keep setting the value of "reviewerAlias" to the different alias names based on your IF condition. for example:
    +<$if myVar="rescan"$><$wfSet("reviewerAlias","YOUR_ALIAS_NAME")$><$elseif myVar="return"$><$wfSet("reviewerAlias","YOUR_OTHERL_ALIAS_NAME")$><$endif$>+
    7) Finally you have the content in the right step, you have evaluated the metadata and have set a variable in the companion file with the correct alias name you want to be the users for the step. The last thing is to retrieve that alias name and set that alias as the step user. Remember that workflow is able to set either individual user names (singly or CSV) or ALIAS names as step users. Remember that an alias in UCM is a list of user names. You will use a token in step 1 to retrieve the value of the companion file key and set the alias to be that user. The token code is straight forward but if you want a walk through then check out the adding ad hoc step users section in chapter 9 of the workflow implementation guide here:
    http://download.oracle.com/docs/cd/E10316_01/cs/cs_doc_10/documentation/admin/workflow_guide_10gr3en.pdf
    Your token code will look something like this:
    <$wfAddUser(wfGet("reviewerAlias"), "alias")$>
    The wfAddUser function is the token code. It is what adds the step user and it take two parameters - parameter 1 is the name or names of a user or alias. parameter 2 is the type either "user" or "alias".
    So this give you a fully dynamic workflow that allows the routing of the items to be fully dynamic and driven off of metadata - something that is very easy for end users. It also allows the reviewers to be dynamically set using tokens and a bit of idoc. No coding outside of the workflow admin applet has to happen at all.
    Of course, my company, Fishbowl would love to talk with you more about what you're doing and see if we can provide any additional service to you. Please let me know!
    Warmly,
    Billy Cripe
    Fishbowl Solutions

  • Criteria workflow questions

    OK, so by my previous postings it is probably obvious that I am fairly new to UCM and Records Managment. I have a new challenge and feel stumped.
    So, there are three custom metadata fields. One is called 'Reminder Expiration Date' the others are called 'Record Keeper' and 'Record Keeper Email'.
    When checking in a new record, all of these custom fields are required.
    The purpose of these fields is to notify the record keeper via their email on the reminder expiration date.
    So I did a lot of reading and think that I need to create a criteria workflow. I went through the process of creating a template and the criteria, but I know I am misisng some significant informaiton. Can anyone give me a little more help here on how I would create a workflow that is triggered off of the 'reminder expiration date' and gets sent to the 'record keeper email'?
    ok, just wanted to add in a little more.... so I am thinking that in the step event script I would enter something like this in order to notify the record keeper..
    <$wfNotify(wfGet(xRecordKeeper),"user")$>
    As always, your help is greatly appreciated!
    Edited by: Pattigo on Apr 9, 2009 1:03 PM
    Edited by: Pattigo on Apr 9, 2009 1:15 PM

    Criteria Workflow: I'll assume you already get how content joins the workflow (via simple metadata criteria).
    You made the three fields in question required, which is great. Now we can always assume they are present. You might want to work on some custom validation for them to ensure cleaner data, but that's another story for another day. Workflows have something called entry, update and exit "steps". The update step executes roughly once each hour. In that step you can write iDocScript. You will have access to the metadata about the document (including your three fields). You could check to see if the current date exceeds the date in the metadata field. If so, you could send an email, perhaps with the wfNotify iDocScript function. Then, maybe you could blank out the expiration field? Not sure. You would need some way to say "Hey, this has been sent alreadY" because that update cycle is going to keep kicking off each hour after that.

  • How to Rewind the workflow activity using PL/SQL API?

    Hi,
    Is there any API to Rewind the workflow activity instance? We have some timedout activities and wanted to Rewind them to the start. I can Rewind them manually from the Admin responsibility, but we have to do this in a program for some cases.
    The Background process runs with the parameter timedout = No.
    Thanks in advance.
    Regards,
    Ram

    Hi,
    Yes - you need to use WF_ENGINE.HandleError to restart from the correct point.
    There is a white paper on my blog here which explains how to do it.
    HTH,
    Matt
    WorkflowFAQ.com - the ONLY independent resource for Oracle Workflow development
    Alpha review chapters from my book "Developing With Oracle Workflow" are available via my website http://www.workflowfaq.com
    Have you read the blog at http://www.workflowfaq.com/blog ?
    WorkflowFAQ support forum: http://forum.workflowfaq.com

Maybe you are looking for