Top
Top
LibraryEASYProcess Reference ManualUsing EASYProcessDevelopment Best Practices
Performance
Naming Conventions

Performance

  • When developing ANYTHING make sure the performance is acceptable.
  • Plan your performance optimization based on the POSSIBLE number of records that can be processed. Your test may be fine for 10 records, but what happens if there’s 1k+?
  • Try to avoid doing process heavy things in the On-Load process of a list section. Eg calling a BSFN.
  • Always see if there’s another way to do it (like a value transformation / javascript) before resorting to a List Section Onload
  • Combine JDE BSFN calls into one Service call whenever possible. Initiating a BSFN connection adds time to the BSFN execution. If this is in a single call, it reduces the connection overhead.
  • Be careful with this one as there is a limit for how big of a XML string we can send to JDE.
  • If you hit this limit, you may need to process the requests in groups of X records a time.
  • Combine SQL queries into as few as possible
  • Example: If a query is in a for each loop, try to take it out of the loop and run a single query with an “IN” instead of 1 query per record.
  • You can also use UNION separated queries
  • This is often done when querying an order history table and an archived order history table (in JDE, F4211/F42119)
  • Be careful with parameterization on this one since SQL has a ~2100 parameter limit
  • When you expect the two queries you are unioning to have no records in common, use UNION ALL instead of UNION. A regular union tells SQL to not return duplicate rows.
  • For each loops
  • Use Temporary WorkData services whenever possible. These load the results that you will be looping on into a hidden and temporary WorkData. As records build up in the usual WorkData, actions performed against it are slowed down. By using the temporary WorkData, this slow down is avoided.
  • Only do necessary actions inside the loop
  • Try to use XSLT for each loops instead when possible
  • SQL Query optimization
  • Make sure to join and filter on primary keys or indexes of the table.
  • Use as many as possible. The SQL pre-runtime optimizer will run your query in the fastest way possible based on the indexes you’re using in the query.
  • When creating a SQL table, it is your responsibility to create SQL indexes on fields that you will filter on (outside of the primary key) to keep performance optimized.
  • If a JDE query needs an index, see if this it is realistic scenario to add the index.

Naming Conventions

Follow standard naming conventions when creating elements. Proper names help keep associated changes together and communicates to future developers what was done or how something should be used. Below are some examples.

  • Database and Table names
  • Prefix table names related to the same feature with the same string so they appear next to each other in SSMS. For example, tables related to items for EASYCommerce are prefixed with “EC_Item_”.
  • Process
  • The name you give a process should describe the functionality of the process. The idea is if you search for the process in EASYProcess’s Work With Processes, that your process should come up in the results.
  • Webpart
  • Some webparts related to the same feature have a prefix. If you are working on a feature following this naming convention, continue using this so they all are returned from a search against that prefix in the EASYProcess Work With WebParts screen.
  • Page
  • The page name becomes the primary key of the CMS_Page entity, so choose a name that reflects what it will be used for.
  • Workflow
  • API
  • Give your Source Control Management (SCM) project a proper description
  • Often times projects that are not ready for Production site in the promotion path for weeks or months. The project description is the best place to document what your changes are related to. This helps future developers.
  • Name Process Services properly
  • Binary Decisions
  • Services
  • For-Each Loops
  • etc.

Powered by EASYProcess (© 2019 K-Rise Systems, Inc).