Pattern Strategy and generics

Hi there !
I'm trying to implements a strategy pattern by using generics.
That is my attempt for the abstract part :
public interface Strategy<C extends Compound> {
        public abstract void apply(final C c);
    public abstract class Compound {
        Strategy<? super Compound> strategy;
        public void setStrategy(Strategy<? super Compound> strategy) {
            this.strategy = strategy;
        public final void move() {
            this.strategy.apply(this);
    }But when I want to use it :
    public class AStrategy implements Strategy<ACompound> {
        public void apply(ACompound compound) {
            return;
    public class ACompound extends Compound {
        public ACompound(AStrategy strategy) {
            // setStrategy(Strategy<? super Compound>) in Compound cannot be applied to (AStrategy)
            this.setStrategy(strategy); // BOOM !
    }So I think that I don't use correctly the wildcards and bounds ... What's wrong ?
Thanks

Sorry not to really offer an actual explanation...I'm not sure I could get one right, so I'll leave that to an actual Expert!
But here's another way of writing that example. It's maybe more heavyweight than what you want (and maybe also you'll get more replies telling you all the reason why it's a Bad Approach!), but it will compile for you.
interface Strategy<S extends Strategy<S,C>, C extends Compound<S,C>>   {
        public abstract void apply(final Compound<S,C> c);
abstract class Compound<S extends Strategy<S,C>, C extends Compound<S,C>> {
        Strategy<S,C> strategy;
        public void setStrategy(Strategy<S,C> strategy) {
            this.strategy = strategy;
        public final void move() {
            this.strategy.apply(this);
    }The basic idea is that Strategy and Compound define a way for two classes to relate to each other. If you declare classes XXX and YYY (respectively) to be a Strategy/Compound relationship, then you know that all of the business relating to Compound in XXX should actually be about YYY. It's just the same thing as knowing you get a String out of an Iterator<String>, except that it goes back and forth between two different classes. So your two concrete classes become:
class AStrategy implements Strategy<AStrategy, ACompound> {
        public void apply(Compound<AStrategy, ACompound> compound) {
            return;
class ACompound extends Compound<AStrategy, ACompound> {
        public ACompound(AStrategy strategy) {
            this.setStrategy(strategy); // BOOM !
    }Of course, overusing this leads to amazingly long type variable lists.

Similar Messages

  • Forms 9i and Generic Conectivity..

    I've started doing my own business. I design and develop applications for small(mobil) businesses. An application runs on desktop. I have tried to use Forms 6i with a Sybase SQL Anywhere database and it works perfect.
    My question is: How I can by an Oracle Forms and Generic Connectivity Solutions without anything else?
    Does Oracle think about desktop and mobil user market?
    To buy Developer Suite is very expensive. Or should I move toward Sybase Powerbuilder?
    Thanks.
    Vas

    Vas,
    actually Forms6i is the last client/server release of Forms, which means that starting Forms9i it only supports Web deployment. Forms6i client/server support (error correction) ends in end 2004 which means that after 2004 Forms is available on teh Web only. I can imagine that this is not the desktop strategy that you had in mind, but actually it is what the statement of direction on OTN says.
    For mobile support, I think that you mean stand alone (laptop) based applications. Real mobile applications wont work using Forms because there is no certified technology for this right now.
    regards
    Fran

  • Factory Design Pattern with Java generics

    I was wondering if it was possible to implement the factory pattern using a generic like sintax with java5. Something like:
    IFactory factory = new ConcreteFactory();
    Car c=factory.CreateObject<Car>();
    I saw this article the other day http://weblogs.asp.net/pgielens/archive/2004/07/01/171183.aspx
    done in C# for the framework 2.0 and tryed to re-implement it with java5 however I was less then fortunate, can someone do a functional conversion?

    I had to change the signature a bit but this is the best I came with:
    (I don't like I have to write Type.class but if someone has a better idea please share, I deliberatly used classes are return types but you can easily program to the interfaces as well)
    use:
    ConcreteFactory cf=new ConcreteFactory();
    Car c=cf.Create(Car.class);
    public interface Vehicle {
    String getName();
    public class Plane implements Vehicle {
    String name="Mig 29";
    public String getName() {
    return name;
    public class Car implements Vehicle {
    String name="Volvo";
    public String getName() {
    return name;
    public interface IFactory{
    <T> T Create(Class<T> type);
    public class ConcreteFactory implements IFactory {
    public <T extends Vehicle> T Create(Class<T> type) {
    try {
    return type.newInstance();
    } catch (InstantiationException e) {
    return null;
    } catch (IllegalAccessException e) {
    return null;
    }

  • How to find out the PATTERN, GRADIENT and BRUSHED objects?

    How to find out the PATTERN, GRADIENT and BRUSHED objects information in illustrator active document file. And also how to find the CMYK and RGB color information in illustrator file through javascript. Could you please provide any examples.

    I tried using the below code. But for both "cmyk" and "grayscale" pattern it gives only CMYK. Kindly check and advise.
    Code:
    var docRef = activeDocument;
    for(var i=docRef.inkList.length-1;i>=0;i--){
      var inkRef=docRef.inkList[i];
      var inkRefName=inkRef.name;
      alert(inkRefName);
      alert(inkRef.inkInfo.kind);
    Thanks for looking into this.

  • Line items  AND GENERIC EXTRACTION

    what does line items exactly mean in DATASOURCES
    AND WHAT ARE DELTA TYPE EXTRACTIONS IN GENERIC
    TIME STAMPING
    CALENDAR DAY
    NUMERICAL POINTER
    COULD ANY PLEASE EXPLAIN THE DIFFERNCE  AND IN WHAT SCENARIOS WE USE IT ...
    LOOKING FOR YOUR REPLY

    Hi Guru,
    Check below doc & thread for Line Item Dimension:
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/a7f2f294-0501-0010-11bb-80e0d67c3e4a
    Line Item Dimenstion
    If a field (date, progressive document number, timestamp) exists in the extract structure of a DataSource that contains values which increase monotonously over time, you can define delta capability for this DataSource. If such a delta-relevant field exists in the extract structure, such as a timestamp, the system determines the data volume transferred in the delta method by comparing the maximum value transferred with the last load with the amount of data that has since entered the system. Only the data that has newly arrived is transferred.
    To get the delta, generic delta management translates the update mode into a selection criterion. The selection of the request is enhanced with an interval for the delta-relevant field. The lower limit of the interval is known from the previous extraction. The upper limit is taken from the current value, such as the timestamp or the time of extraction. You can use security intervals to ensure that all data is taken into consideration in the extractions (The purpose of a security interval is to make the system take into consideration records that appear during the extraction process but which remain unextracted -since they have yet to be saved- during the next extraction; you have the option of adding a security interval to the upper limit/lower limit of the interval).
    After the data request was transferred to the extractor, and the data was extracted, the extractor then informs generic delta management that the pointer can be set to the upper limit of the previously returned interval.
    To have a clear idea:
    1. If delta field is Date (Record Create Date or change date), then use Upper Limit of 1 day.
    This will load Delta in BW as of yesterday. Leave Lower limit blank.
    2. If delta field is Time Stamp, then use Upper Limit of equal to 1800 Seconds (30 minutes).
    This will load Delta in BW as of 30 minutes old. Leave Lower limit blank.
    3. If delta field is a Numeric Pointer i.e. generated record # like in GLPCA table, then use
    Lower Limit. Use count 10-100. Leave upper limit blank. If value 10 is used then last 10
    records will be loaded again. If a record is created when load was running, those records
    may get lost. To prevent this situation, lower limit can be used to backup the starting
    sequence number. This may result in some records being processed more than once.
    Refer this link from help.sap.com
    http://help.sap.com/saphelp_erp2005/helpdata/en/3f/548c9ec754ee4d90188a4f108e0121/frameset.htm
    Difference between timestamp used in copa and generic data extraction?
    COPA timestamps vs Generic timestamps
    Check this doc for more info:
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/84bf4d68-0601-0010-13b5-b062adbb3e33
    Hope these helps u...
    Regards,
    KK.

  • Customer and Generic extraction difference ?

    Hi ya,
    Could any body tell me the difference between the customer and Generic extractions.what are the extraction steps?
    Regards.
    H

    Hi,
    In Generic extraction we have to fetch the data from table/view/funtion module.T.code RSO2.
    Replicate the data source in bw and send into data target through ods(recommandable).
    In customized extraction sap provided LIS,LO-COCKPIT,CO-PA,FI-SL etc,in these sap provides extract stuructures.From the extract structures we have to fetch the data and replicate the data into bw and push into the data targets.
    with regards,
    HARI GUPTA

  • LIS and Generic Extraction

    Hi All,
             Could someone please send me some information regarding LIS extraction and Generic extraction.
    Thanks in advance,
    Sekhar

    Hi Sekhar,
    Please do check the link for step by step for generic xtraction
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/84bf4d68-0601-0010-13b5-b062adbb3e33
    check the following
    http://help.sap.com/bp_biv235/BI_EN/html/bw.htm
    business content
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/biw/g-i/how%20to%20co-pa%20extraction%203.0x
    https://websmp203.sap-ag.de/co
    http://help.sap.com/saphelp_nw04/helpdata/en/37/5fb13cd0500255e10000000a114084/frameset.htm
    (navigate with expand left nodes)
    also co-pa
    http://help.sap.com/saphelp_nw04/helpdata/en/53/c1143c26b8bc00e10000000a114084/frameset.htm
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/fb07ab90-0201-0010-c489-d527d39cc0c6
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/1910ab90-0201-0010-eea3-c4ac84080806
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/ff61152b-0301-0010-849f-839fec3771f3
    LO Extraction
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/f83be790-0201-0010-4fb0-98bd7c01e328
    Check these links:
    /people/sap.user72/blog/2004/12/16/logistic-cockpit-delta-mechanism--episode-one-v3-update-the-145serializer146
    /people/sap.user72/blog/2004/12/23/logistic-cockpit-delta-mechanism--episode-two-v3-update-when-some-problems-can-occur
    /people/sap.user72/blog/2005/01/19/logistic-cockpit-delta-mechanism--episode-three-the-new-update-methods
    /people/sap.user72/blog/2005/02/14/logistic-cockpit--when-you-need-more--first-option-enhance-it
    /people/sap.user72/blog/2005/04/19/logistic-cockpit-a-new-deal-overshadowed-by-the-old-fashioned-lis
    Re: LO-Cockpit  V1 and V2 update
    Also Refer this link:
    http://www.sap-img.com/business/lo-cockpit-step-by-step.htm
    FI-CO 'Data Extraction -Line Item Level-FI-CO
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/a7f2f294-0501-0010-11bb-80e0d67c3e4a
    FI-GL
    http://help.sap.com/saphelp_nw04/helpdata/en/c9/fe943b2bcbd11ee10000000a114084/frameset.htm
    http://help.sap.com/saphelp_470/helpdata/en/e1/8e51341a06084de10000009b38f83b/frameset.htm
    http://www.sapgenie.com/sapfunc/fi.htm
    FI-SL
    http://help.sap.com/saphelp_nw2004s/helpdata/en/28/5ccfbb45b01140a3b59298c267604f/frameset.htm
    http://help.sap.com/saphelp_erp2005/helpdata/en/41/65be27836d300ae10000000a114b54/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/ee/cd143c5db89b00e10000000a114084/frameset.htm
    How to do basic LO extraction for SAP-R3-BW
    1. Go to transaction code RSA3 and see if any data is available related to your DataSource. If data is there in RSA3 then go to transaction code LBWG (Delete Setup data) and delete the data by entering the application name.
    2. Go to transaction SBIW --> Settings for Application Specific Datasource --> Logistics --> Managing extract structures --> Initialization --> Filling the Setup table --> Application specific setup of statistical data --> perform setup (relevant application)
    3. In OLI*** (for example OLI7BW for Statistical setup for old documents : Orders) give the name of the run and execute. Now all the available records from R/3 will be loaded to setup tables.
    4. Go to transaction RSA3 and check the data.
    5. Go to transaction LBWE and make sure the update mode for the corresponding DataSource is serialized V3 update.
    6. Go to BW system and create infopackage and under the update tab select the initialize delta process. And schedule the package. Now all the data available in the setup tables are now loaded into the data target.
    7.Now for the delta records go to LBWE in R/3 and change the update mode for the corresponding DataSource to Direct/Queue delta. By doing this record will bypass SM13 and directly go to RSA7. Go to transaction code RSA7 there you can see green light # Once the new records are added immediately you can see the record in RSA7.
    8.Go to BW system and create a new infopackage for delta loads. Double click on new infopackage. Under update tab you can see the delta update radio button.
    9.Now you can go to your data target and see the delta record.
    find your scenario and find what data sources do you need on R3 side and ensure they are active as well:
    http://help.sap.com/saphelp_nw04/helpdata/en/37/5fb13cd0500255e10000000a114084/frameset.htm
    find your scenario -> data sources -> go to R3 -> sbiw and activate required data source
    replicate data sources in BW:
    RSA1 -> source systems -> right click on your source system -> replicate
    then activate your BC:
    service.sap.com/bi -> BI Business Content -> General Information -> SAP BW Business Content - Activation
    and execute infopackage (it should be delivered with BC)
    Useful links:
    http://help.sap.com/saphelp_nw04/helpdata/en/e3/e60138fede083de10000009b38f8cf/frameset.htm
    service.sap.com/bi -> BI InfoIndex
    sdn.sap.com -> Business Information Warehouse -> How-To guides (under Quick Links)
    Hope This Helps.
    ****Assign Points If Helpful****
    Regards,
    Ravikanth

  • Cutover strategy and dates

    Hi Friends
    Please explain the cutover strategy and dates.
    How it will work sin implementation.I have pending 3 planned orders after go live. how can i move these orders to sap system after go live.
    Before go live i want 4 planned orders to move to sap system . whati s settings.
    Please explain
    Thanks
    Venkat

    Hi ,
    Could you please explain more about your production strategies Is it drive through Order or Make to stock ?
    You said you have 3 planned orders after Go-live ;
    You have all the master data gets Uploaded in the SAP system . So you can create directly Production Order in CO01 / or
    or planned order in MD11 , if the requirements are confirmed .
    Before Go-live :
    You said 4 planned orders to move , here you can also create manual Planned order Using MD11 in sap system
    If the requirements are through SO &  MTO Production strategies and the sales order drives Production after MRP run
    creates planned order automatically.
    JayaVimal

  • Put Together A Data Archiving Strategy And Execute It Before Embarking On Sap Upgrade

    A significant amount is invested by organizations in a SAP upgrade project. However few really know that data archiving before embarking on SAP upgrade yields significant benefits not only from a cost standpoint but also due to reduction in complexity during an upgrade. This article not only describes why this is a best practice  but also details what benefits accrue to organizations as a result of data archiving before SAP upgrade. Avaali is a specialist in the area of Enterprise Information Management.  Our consultants come with significant global experience implementing projects for the worlds largest corporations.
    Archiving before Upgrade
    It is recommended to undertake archiving before upgrading your SAP system in order to reduce the volume of transaction data that is migrated to the new system. This results in shorter upgrade projects and therefore less upgrade effort and costs. More importantly production downtime and the risks associated with the upgrade will be significantly reduced. Storage cost is another important consideration: database size typically increases by 5% to 10% with each new SAP software release – and by as much as 30% if a Unicode conversion is required. Archiving reduces the overall database size, so typically no additional storage costs are incurred when upgrading.
    It is also important to ensure that data in the SAP system is cleaned before your embark on an upgrade. Most organizations tend to accumulate messy and unwanted data such as old material codes, technical data and subsequent posting data. Cleaning your data beforehand smoothens the upgrade process, ensure you only have what you need in the new version and helps reduce project duration. Consider archiving or even purging if needed to achieve this. Make full use of the upgrade and enjoy a new, more powerful and leaner system with enhanced functionality that can take your business to the next level.
    Archiving also yields Long-term Cost Savings
    By implementing SAP Data Archiving before your upgrade project you will also put in place a long term Archiving Strategy and Policy that will help you generate on-going cost savings for your organization. In addition to moving data from the production SAP database to less costly storage devices, archived data is also compressed by a factor of five relative to the space it would take up in the production database. Compression dramatically reduces space consumption on the archive storage media and based on average customer experience, can reduce hardware requirements by as much as 80% or 90%. In addition, backup time, administration time and associated costs are cut in half. Storing data on less costly long-term storage media reduces total cost of ownership while providing users with full, transparent access to archived information.

    Maybe this article can help; it uses XML for structural change flexiblity: http://www.oracle.com/technetwork/oramag/2006/06-jul/o46xml-097640.html

  • Release Strategy and workflow in Purchase Requisition

    Hello All,
    My client wants to activate the release strategy and workflow at the purch req and PO levels. They allow users to create a Preq and reference that preq to the PO, or users may create a PO without referencing a Preq. Since they have the release strategy and workflow working on both levels, what they want done is, if a PO has a Preq reference, it does not need to go through another approval process on the PO level as it has already been approved on the Preq level. Therefore if a Preq is reference in a PO, the PO workflow and release strategy should not be taken into account. Can this happen as a standard config, or will this need a "user exit"?
    Thanks in advance for your help!!

    You will need to activate the user exit. This will keep the PO release strategy simple.
    Have a flag (use USRC1 or USRN1). In your PO release strategy classification, maintain only X in this characteristic.
    In the user exit, check whether the PO is created with reference to PR. If yes, pass "blank" to USRC1, else pass "X". The release will be triggered only in case of X.
    Just a couple of points:
    1) What will you do if one item in PO is created with reference to PR and the another item is not?
    2) What will you do if one item is partially referenced to PR (i.e PR quantity is 100, PO quantity is 200 - of which 100 is referenced to PR and other 100 is not - this is possible by changing in delivery schedule)?
    Hope this helps
    Lakshman

  • Data Cache and Generic Cache

    Hello,
    According to this document,
    http://download.oracle.com/docs/cd/B16240_01/doc/apirefs.102/e12639/chapter1.htm#CIAEFHFB
    I see there are two cache system in Oracle BI Server, "Data Cache" and "Generic Cache".
    What is the difference between these two kinds of cache ?
    Thanks.

    Hi user611881,
    I'll try to explain the two cache types here, but if someone can better phrase it than myself, by all means, step up.
    Data Cache:
    The OBIEE BI Server will cache the result set of SQL that is executed. These cached results are records and if OBIEE sees another report requesting the same record set that it already has in cache, it will go straight to the cache version instead of re-issuing the SQL
    Generic Cache:
    The generic cache is the presentation server cache. This has to do with the caching of particular request. If the BI Server detects a cached version of a request, it will get the request directly from the cache and not even go down to check for the cached record set.
    This is how they function. Assume you have report A with record set 1 and there's no data in either cache.
    You run Report A
    1) Presentation Service checks if the Request is in the generic cache.
    2) This check fails.
    3) Presentation service issues logical SQL query to BI Server
    4) BI Server checks if there is any record set matching the logical query in the cache
    5) This check fails.
    6) BI Server issues the physical SQL
    7) BI Server caches the result set
    8) Presentation service gets result set and formats the data
    9) Presentation service caches presentation results
    10) Report A is displayed
    That is my understanding of the Data and Generic Caches.
    Good luck and if you found this post useful, please award points!
    Best regards,
    -Joe

  • PR release strategy and Standard Workflow suddenly doesn't work

    Good day,
    I have PR release strategy and Workflow activated. My workflow is copied from standard PR release workflow in SAP. The only changes I made in the WF is Agent Assignment. It worked like a wonder.
    However this week when I was creating PR, Release Strat still works but WF doesn't kick in. No change was done to both PR release strat and WF.
    Any help/suggestion for this? Is there a period of activation in WF?
    Regards,
    Si

    Hi Diwakar,
    I was able to activate it already yesterday. What I did was to test the workflow in SWDD. After the test, all workflow items were created. Am still wondering though why WF would suddenly stop (not generate workflow items) even with no changes made.
    Thanks for the info and link. Points awarded.
    Regards,
    Si

  • Adobe Tech Comm Content Strategy and Tools Survey & more prizes!

    We are pleased to announce the launch of “Adobe Tech Comm Content Strategy and Tools Survey!”  The purpose of this survey is to understand how you create content, collaborate with peers, and distribute the content to end users. We want to understand what tools you use, how you use them and how they can be improved for your needs.
    Please spare 20 minutes of your precious time to fill out the survey and stand a chance to win one of the 15 exciting prizes (TCS4 licenses, Samsung LED TV, iPad Mini, and more..)!
    Survey Link: http://survey.douwriteright.com/
    It does not matter if you use Adobe products or not. As long as you are a Tech Comm professional, we want to hear your opinion.  Also, after the survey is over, we will be sharing some of the key insights from the survey on our Tech Comm blog, for everyone to access. So, please take the survey, influence the direction of Adobe Tech Comm products and win some cool prizes.
    We are definitely listening!!
    Few additional points
    •     The survey has 40 questions and should take approximately 20 minutes of your time
    • You can fill the survey in multiple sessions. For this, you are required to provide an email id and a password at the beginning and you can log back in with these credentials to restart the survey
    •     If you face any issues with the survey or for any general survey feedback, please write to [email protected]
    See my blog post with more details:
    •     Shortened URL: http://adobe.ly/10WPuuW
    thanks,
    Kapil Verma

    A key challenge that Adobe is facing with FM and TCS, and that the survey did not really focus on, is platform strategy (other than cloud-based).
    FM runs only on MS Windows today. MS has made a possibly fatal mess of Windows (and the x86 PC market) with Window 8. The nearly $1B write-off for Surface slabs, and the sad story on the Surface app catalog, strongly suggests that Windows has zero future on ARM.
    For customers who insist on running an app locally, FM/TCS needs another place to run. The obvious candidates are MacOS, where FM used to run, and Linux, where FM briefly ran. Unix, where FM sort of still runs (FM8 is still available for Solaris) is probably out of the picture.
    Mac might be the leading choice, as CS runs native there today.
    A return to Linux probably would imply that whatever is ported also runs on Android. Adobe has their toes in that water, with Photoshop Express, but I'm not sure that Android is fully featured enough to be used as a desktop content creation platform.
    But the real question is: what do the paying customers want?
    The survey asked one incomplete question on that.
    Whatever the platform, the whole of TCS needs to run on it, plus Photoshop.

  • Difference between fully-specified data types. and generic types

    Hi,
    Can anyone tell me the difference between fully-specified data types and generic types.
    Thanks in advance.
    Regards,
    P.S.

    HI
    Generic table types
    INDEX TABLE
    For creating a generic table type with index access.
    ANY TABLE
    For creating a fully-generic table type.
    Data types defined using generic types can currently only be used for field symbols and for interface parameters in procedures . The generic type INDEX TABLEincludes standard tables and sorted tables. These are the two table types for which index access is allowed. You cannot pass hashed tables to field symbols or interface parameters defined in this way. The generic type ANY TABLE can represent any table. You can pass tables of all three types to field symbols and interface parameters defined in this way. However, these field symbols and parameters will then only allow operations that are possible for all tables, that is, index operations are not allowed.
    Fully-Specified Table Types
    STANDARD TABLE or TABLE
    For creating standard tables.
    SORTED TABLE
    For creating sorted tables.
    HASHED TABLE
    For creating hashed tables.
    Fully-specified table types determine how the system will access the entries in the table in key operations. It uses a linear search for standard tables, a binary search for sorted tables, and a search using a hash algorithm for hashed tables.
    Fully-specified table types determine how the system will access the entries in the table in key operations. It uses a linear search for standard tables, a binary search for sorted tables, and a search using a hash algorithm for hashed tables.
    see this link
    http://help.sap.com/saphelp_nw04/helpdata/en/fc/eb366d358411d1829f0000e829fbfe/content.htm
    <b>Reward if usefull</b>

  • Query on Release strategy and WFL?

    Hi Friends
    what is the diff bet Release Strategy and WFL
    Regards
    Emil

    By WFL if you are referring to Workflow, then these two are not something you should look for differentiating. Worflow is tool provided by SAP to automate a series of business process activities based on business rules. In case release strategy it helps in automating the whole approval process.
    Workflow is used to trigger e-mails to approvers once a purchasing document is subjected to release strategy. It can used to write the approval rules and in what scenario who is the approver, are there multiple approvers etc.

Maybe you are looking for