Checkstyle Rules Description
App
Rule | Level | Description | Advice | Tags |
---|---|---|---|---|
check-app-too-many-toolkit | MAJOR | Check the total number of the toolkits in the application to ensure it is not more than 25. | A process application that includes a large number of toolkits will have runtime performance issues. Avoid deeply nested toolkit hierarchy (toolkits that include toolkits that include toolkits…). Create toolkits as per logical domains instead of creating one huge toolkit, and prior to deployment create temporary toolkits that contain only the artifacts actually used in your process application. | Performance |
check-app-with-mismatch-version-toolkits | CRITICAL | Check if the application has mismatched version toolkits. | Toolkits version mismatch may lead to functionality missing or runtime errors. | Implementation |
check-app-with-too-many-advancedintegrationservice | MINOR | Check the total number of the integration services in the process application to ensure it is not more than 25. | For maintenance purposes, smart folders can be created to manage so many (more than 25) integration services. | Maintenance |
check-app-with-too-many-ajaxservice | MINOR | Check the total number of the ajax services in the process application to ensure it is not more than 25. | For maintenance purposes, smart folders can be created to manage so many (more than 25) ajax services. | Maintenance |
check-app-with-too-many-bpd | MINOR | Check the total number of the BPDs in the process application to ensure it is not more than 15. | For maintenance purposes, smart folders can be created to manage so many (more than 15) BPDs. | Maintenance |
check-app-with-too-many-businessobject | MINOR | Check the total number of the business objects in the process application to ensure it is not more than 50. | For maintenance purposes, smart folders can be created to manage so many (more than 50) business objects. | Maintenance |
check-app-with-too-many-decisionservice | MINOR | Check the total number of the decision services in the process application to ensure it is not more than 25. | For maintenance purposes, smart folders can be created to manage so many (more than 25) decision services. | Maintenance |
check-app-with-too-many-environmentvariableset | MINOR | Check the total number of the environment variable sets in the process application to ensure it is not more than 25. | For maintenance purposes, keep only what is needed to reduce so many (more than 25) environment variable sets. | Maintenance |
check-app-with-too-many-exposedprocess-variable | MINOR | Check the total number of the exposed processes in the process application to ensure it is not more than 25. | For maintenance purposes, keep only what is needed to reduce so many (more than 25) exposed process variables. | Maintenance |
check-app-with-too-many-generalsystemservice | MINOR | Check the total number of the general system services in the process application to ensure it is not more than 50. | For maintenance purposes, smart folders can be created to manage so many (more than 50) general system services. | Maintenance |
check-app-with-too-many-humanservice | MINOR | Check the total number of the human services in the process application to ensure it is not more than 50. | For maintenance purposes, smart folders can be created to manage so many (more than 50) human services. | Maintenance |
check-app-with-too-many-integrationservice | MINOR | Check the total number of the integration services in the process application to ensure it is not more than 25. | For maintenance purposes, smart folders can be created to manage so many (more than 25) integration services. | Maintenance |
check-app-with-too-many-report | MINOR | Check the total number of the reports in the process application to ensure it is not more than 15. | For maintenance purposes, smart folders can be created to manage so many (more than 15) reports. | Maintenance |
check-app-with-too-many-serviceflow | MINOR | Check the total number of the service flows in the process application to ensure it is not more than 50. | For maintenance purposes, smart folders can be created to manage so many (more than 50) service flows. | Maintenance |
check-app-with-too-many-servicelevelagreement | MINOR | Check the total number of the service level agreements in the process application to ensure it is not more than 15. | For maintenance purposes, smart folders can be created to manage so many (more than 15) service level agreements. | Maintenance |
check-app-with-too-many-undercoveragent | MINOR | Check the total number of the under coveragents in the process application to ensure it is not more than 25. | For maintenance purposes, smart folders can be created to manage so many (more than 25) under coveragents. | Maintenance |
check-app-with-too-many-webservice | MINOR | Check the total number of the webservices in the process application to ensure it is not more than 25. | For maintenance purposes, smart folders can be created to manage so many (more than 25) webservices. | Maintenance |
check-toolkit-nested-level | MAJOR | Check the level of the nested toolkit in the process application to ensure it is not more than 4 | Do not have deeply nested toolkit hierarchy. Please check the level of the toolkit hierarchy. | Performance |
check-app-toolkit-size | MAJOR | Check the size of every toolkit in the application and ensure it is not more than 50MB | Keep the toolkit sizes small, please check the size of the toolkits. | Performance |
Business Object
Rule | Level | Description | Advice | Tags |
---|---|---|---|---|
check-businessobject-documentation | MINOR | Check the documentation in the business object to ensure it is not empty. | For maintenance purposes, a documentation or description for each BPM artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that a documentation or description be set for each artifact. | Documentation |
check-businessobject-properties-documentation | MINOR | Check each of the properties in the business object to ensure the documentation of the property is not empty. | For maintenance purposes, a documentation or description for each BPM artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that a documentation or description be set for each artifact. | Documentation |
check-shared-business-object | MAJOR | Check each of the business objects to ensure it is not a shared object. | If a shared business object is a large object, it can cause database bloat and other runtime performance issues. | Performance |
check-too-big-businessobject-used | MAJOR | Check each of the business objects to ensure the attribute number of the business object in ‘the process app’ is not more than 50. | Business processes should store only the data that is needed for the process or a service as the process runs. | Performance |
Case Solution
Rule | Level | Description | Advice | Tags | Reference |
---|---|---|---|---|---|
check-casetype-documentation | MINOR | Check all of the case types’ documents and ensure that each case type’s documentation is not empty. | For maintenance purposes, a documentation or description for each CaseType artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that a documentation or description be set for each artifact. | Documentation | |
check-case-without-casetype | CRITICAL | Check the process app and ensure that each case solution contains at least one case type. | At least one case type must be defined in a case solution. | Implementation | |
check-case-without-role | CRITICAL | Check the process app and ensure that each case solution contains at least one role. | At least one role must be defined in a case solution. | Implementation | |
check-page-documentation | MINOR | Check all of the pages’ documents and ensure that each page’s documentation is not empty. | For maintenance purposes, a documentation or description for each CaseType artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that a documentation or description be set for each artifact. | Documentation | |
check-page-javascript-coding-style | MINOR | Check the JavaScript code in the pages and ensure that each JavaScript code complies with the general JavaScript coding style. | JavaScript codes should comply with the general JavaScript coding style. | JavaScript | |
check-page-javascript-length | MAJOR | Check the JavaScript code in the pages and ensure that the line number is less than 100 lines. | Avoid large JavaScript blocks because JavaScript is interpreted and therefore slower to process than other compiled mechanisms such as Java code. Large JavaScript blocks can also produce very large Document Object Model (DOM) trees. As a general guideline, limit a JavaScript block to 100 lines. If your implementation exceeds this value, re-evaluate the design and refactor the implementation to use smaller JavaScript blocks. | JavaScript | IBM BPM Performance Tuning and Best Practices |
check-page-javascript-length-pro | CRITICAL | Check the JavaScript code in the pages and ensure that the line number is less than 300 lines. | Avoid large JavaScript blocks because JavaScript is interpreted and therefore slower to process than other compiled mechanisms such as Java code. Large JavaScript blocks can also produce very large Document Object Model (DOM) trees. As a general guideline, limit a JavaScript block to 300 lines. If your implementation exceeds this value, re-evaluate the design and refactor the implementation to use smaller JavaScript blocks. | JavaScript | IBM BPM Performance Tuning and Best Practices |
check-property-documentation | MINOR | Check all of the properties’ documents and ensure that each property’s documentation is not empty. | For maintenance purposes, a documentation or description for each CaseType artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that a documentation or description be set for each artifact. | Documentation | |
check-role-documentation | MINOR | Check all of the roles’ documents and ensure that each role’s documentation is not empty. | For maintenance purposes, a documentation or description for each CaseType artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that a documentation or description be set for each artifact. | Documentation | |
check-unused-page | MAJOR | Check all of the pages in the ICM solution and ensure that each page is used in the case solution. | The unused pages should be deleted. | Redundant | |
check-unused-property | MAJOR | Check all of the properties in the ICM solution and ensure that each property is used in the case solution. | The unused properties should be deleted. | Redundant |
Case Type
Rule | Level | Description | Advice | Tags |
---|---|---|---|---|
check-activity-documentation | MINOR | Check if the documentation of the activity in the case solution is empty. | For maintenance purposes, a documentation or description for each Case property artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that a documentation or description be set for each artifact. | Documentation |
check-casepagelayout-documentation | MINOR | Check if the documentation of the case page layout in the case solution is empty. | For maintenance purposes, a documentation or description for each Case property artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that a documentation or description be set for each artifact. | Documentation |
check-casetype-without-activity | MAJOR | Check the case types in the ICM solution, ensure that each case type contains at least one activity | At least one activity must be defined in a case type. | Implementation |
check-propertyview-documentation | MINOR | Check if the documentation of the property view in the case solution is empty. | For maintenance purposes, a documentation or description for each Case property artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that a documentation or description be set for each artifact. | Documentation |
check-rule-documentation | MINOR | Check if the documentation of the rule in the case solution is empty. | For maintenance purposes, a documentation or description for each Case property artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that a documentation or description be set for each artifact. | Documentation |
check-unused-casepagelayout | MAJOR | Check the case pages in the ICM solution, ensure that each case page layout is used in the case solution. | The unused case page layouts should be deleted. | Redundant |
check-unused-propertyview | MAJOR | Check the property views in the ICM solution, ensure that each property view is used in the case solution. | The unused property views should be deleted. | Redundant |
check-unused-rule | MAJOR | Check the rules in the ICM solution, ensure that each rule is used in the case solution. | The unused rules should be deleted. | Redundant |
Coach View
Rule | Level | Description | Advice | Tags | Reference |
---|---|---|---|---|---|
check-coachcontrol-with-no-binding-value | MINOR | Check the controls in each service to ensure the control is binding with a value. | Every coach view should have a binding value. | Implementation | |
check-coachview-reach-endpoint | MAJOR | Check all of the coaches, ensure that each coach is wired to an end node. | Coaches in human services can be resource-consuming for the server. For developing efficient coaches, always wire coaches to end nodes. | Performance | IBM BPM Performance Tuning and Best Practices |
check-mixed-js-libraries-on-coach | MINOR | Check all of the coaches, ensure that each coach view does not have mixed JavaScript Libraries in the process application | Do not mix Coach Views written with different JavaScript libraries. Loading and initializing different libraries takes time. | Performance |
Migration
Rule | Level | Description | Advice | Tags | Reference |
---|---|---|---|---|---|
check-ad-hoc-start-event | MINOR | Ad hoc start events are detected. | Ad hoc start events are deprecated and are not supported in the web Process Designer. These events are converted to a Start Message event with no UCA implementation when the BPD is converted to a process. You need to change the event to an ad hoc activity and implement it as a subprocess. | Migration | Converting BPDs to processes |
check-bpd-component-contains-inner-table-in-data-mapping | CRITICAL | Use of internal tables detected in the implementation of the item. | A component or item’s Script/Conditions Script/Pre&Post Assignments/Pre&Post Execution Script/SQL Input Mapping may contain IBM BAW database tables (for example, the DB tables with the prefix “LSW”). This is a VERY bad implementation and can corrupt your environment or cause migration headaches in the future. Use IBM BAW APIs to retrieve information. If there are no APIs available for a specific purpose, contact the IBM BAW support team for assistance. | Migration | Top 5 things you need to know about IBM BPM on Cloud |
check-bpd-component-contains-inner-table-in-script | CRITICAL | Use of internal tables detected in the implementation of the item. | A component or item’s Script/Conditions Script/Pre&Post Assignments/Pre&Post Execution Script/SQL Input Mapping may contain IBM BAW database tables (for example, the DB tables with the prefix “LSW”). This is a VERY bad implementation and can corrupt your environment or cause migration headaches in the future. Use IBM BAW APIs to retrieve information. If there are no APIs available for a specific purpose, contact the IBM BAW support team for assistance. | Migration | Top 5 things you need to know about IBM BPM on Cloud |
check-bpd-icon-settings-deprecated | MINOR | Icon settings on process nodes in BPD are detected. | There is no equivalent artifact for icon settings on process nodes in the Web Process Designer, and therefore they are ignored when converting BPDs to processes. | Migration | Converting BPDs to processes |
check-bpd-javascript-live-connect | MINOR | LiveConnect API is called in the scripts. | LiveConnect API is deprecated in BAW on the container, please replace it with Vanilla JavaScript. | Migration | |
check-bpd-milestones-deprecated | MINOR | Milestones in BPD are detected. | There is no equivalent artifact for milestones in the Web Process Designer, and therefore they are ignored when converting BPDs to processes. | Migration | Converting BPDs to processes |
check-bpds-deprecated | MINOR | BPDs are detected. | The BPDs that are created in the desktop Process Designer are not supported in containers. To convert BPDs into processes, please use BPD Conversion in the web Process Designer. | Migration | Converting BPDs to processes |
check-bpd-simulation-configurations-deprecated | MINOR | Simulation configurations in BPD are detected. | There is no equivalent artifact for simulation configurations in the Web Process Designer, and therefore they are ignored when converting BPDs to processes. | Migration | Converting BPDs to processes |
check-coachview-using-deprecated-coach-views | MINOR | Artifacts using deprecated Coach Views are detected. | To convert deprecated coach views into UI views, please use UI Conversion in the web Process Designer. | Migration | Converting deprecated coach views into UI views |
check-deprecated-task-routing-policy | MINOR | Deprecated assignment types are detected. | The assignment types such as Last User in Lane, Routing Policy and List of Users are not supported in the web Process Designer because they are deprecated in the desktop Process Designer. To achieve the same effect as these assignment types, you need to implement the function manually by using a team filter or retrieval service. | Migration | Converting BPDs to processes |
check-external-implementations-deprecated | MINOR | External Implementations are detected. | The external implementations that are created in the desktop Process Designer are not supported in containers. To convert external implementations into external services, please use Service Conversion in the web Process Designer. | Migration | Converting external implementations |
check-heritage-coaches-deprecated | MINOR | Heritage Coaches are detected. | The Heritage Coaches that are created in the desktop Process Designer are not supported in containers. To migrate Heritage Coaches, please re-implement them using the BPM UI Toolkit. | Migration | Where to edit Process Designer artifacts |
check-heritage-services-deprecated | MINOR | Heritage Services are detected. | The heritage services that are created in the desktop Process Designer are not supported in containers. To convert heritage services into service flows, please use Service Conversion in the web Process Designer. | Migration | Converting heritage services |
check-historical-analysis-scenarios-deprecated | MINOR | Historical Analysis Scenarios are detected. | The Historical Analysis Scenarios that are created in the desktop Process Designer are not supported in containers. | Migration | Where to edit Process Designer artifacts |
check-ibm-case-manager-integration-services-deprecated | MINOR | IBM Case Manager Integration Services are detected. | The IBM Case Manager Integration Services that are created in the desktop Process Designer are not supported in containers. In the web Process Designer, use a process with ad-hoc activities instead of the IBM Case Manager Integration Service. | Migration | Where to edit Process Designer artifacts |
check-inline-web-service-configuration | MINOR | An inline Web Service Configuration is detected. | The in-line configuration will be lost when converting an Integration Service that has an inline Web Service integration into a service flow. You need to change the Web Service integration to using the server tab-based definitions prior to converting the service flow. | Migration | Converting integration services with web service integrations |
check-key-performance-indicators-deprecated | MINOR | Key Performance Indicators are detected. | The Key Performance Indicators that are created in the desktop Process Designer are not supported in containers. | Migration | Where to edit Process Designer artifacts |
check-managed-asset-size | MINOR | The managed asset size is more than 5242880 | Do not attach large files like Java library files as IBM BPM application-managed files. These files can negatively affect the database input/output and the size and use of managed asset caches. | Migration | |
check-server-item-endpoint-hardcoded | MINOR | Hard-coded endpoint is detected. | Avoid hardcoded service endpoints. This is a VERY bad implementation and can corrupt your environment or cause migration headaches in the future. | Migration | Top 5 things you need to know about IBM BPM on Cloud |
check-service-item-contains-inner-table-in-data-mapping | CRITICAL | Use of internal tables detected in the implementation of the item. | A component or item’s Script/Conditions Script/Pre&Post Assignments/Pre&Post Execution Script/SQL Input Mapping may contain IBM BAW database tables (for example, the DB tables with the prefix “LSW”). This is a VERY bad implementation and can corrupt your environment or cause migration headaches in the future. Use IBM BAW APIs to retrieve information. If there are no APIs available for a specific purpose, contact the IBM BAW support team for assistance. | Migration | Top 5 things you need to know about IBM BPM on Cloud |
check-service-item-contains-inner-table-in-script | CRITICAL | Use of internal tables detected in the implementation of the item. | A component or item’s Script/Conditions Script/Pre&Post Assignments/Pre&Post Execution Script/SQL Input Mapping may contain IBM BAW database tables (for example, the DB tables with the prefix “LSW”). This is a VERY bad implementation and can corrupt your environment or cause migration headaches in the future. Use IBM BAW APIs to retrieve information. If there are no APIs available for a specific purpose, contact the IBM BAW support team for assistance. | Migration | Top 5 things you need to know about IBM BPM on Cloud |
check-service-item-ECMservices | MINOR | ECM services are detected for migrating to IBM BPM on Cloud. | When running on IBM BPM on Cloud, an external IBM ECM server that is located in a remote data center might have performance issues. | Migration | Top 5 things you need to know about IBM BPM on Cloud |
check-service-javascript-live-connect | MINOR | LiveConnect API is called in the scripts. | LiveConnect API is deprecated in BAW on the container, please replace it with Vanilla JavaScript. | Migration | |
check-service-using-deprecated-coach-views | MINOR | Artifacts using deprecated Coach Views are detected. | To convert deprecated coach views into UI views, please use UI Conversion in the web Process Designer. | Migration | Converting deprecated coach views into UI views |
check-simulation-analysis-scenarios-deprecated | MINOR | Simulation Analysis Scenarios are detected. | The Simulation Analysis Scenarios that are created in the desktop Process Designer are not supported in containers. | Migration | Where to edit Process Designer artifacts |
Process
Rule | Level | Description | Advice | Tags | Reference |
---|---|---|---|---|---|
check-auto-tracking-enable | MAJOR | Check if the process has auto-tracking enabled or not. | Auto-tracking is enabled by default for Processes. This capability is important for many Processes because it enables the gathering, tracking, and reporting of key business metrics. However, an additional cost exists as a result of auto-tracking because the events are processed by the Performance Data Warehouse and persisted in the database. Disable auto-tracking for Processes that do not require tracking and reporting business metrics. | Performance | IBM BPM Performance Tuning and Best Practices, IBM BPM Developer Forum |
check-bpd-activity-contain-tostring-datamapping | MAJOR | Check if the activity contains toString data mapping. | Activity contains a Data Mapping which makes use of the toString function on a potentially large variable could cause performance issues. | Performance | |
check-bpd-activity-narrative | MINOR | Check the components of every lane in a BPD to ensure the narrative of the activity component is not empty. | For user experience purposes, business users should have a way to know the details of the task from the portal. It is strongly recommended that a narrative should be set for every activity. | Documentation | |
check-bpd-activity-subject | MINOR | Check the components of every lane in a BPD to ensure the subject of the activity component is not empty. | For user experience purposes, business users should have a way to know the target of the task from the portal. It is strongly recommended that a subject should be set for every activity. | Documentation | |
check-bpd-component-javascript-contains-sleep | MAJOR | Check if the JavaScript uses java.lang.Thread.currentThread().sleep. | JavaScript should not contain java.lang.Thread.currentThread().sleep. | JavaScript | |
check-bpd-component-need-exception-handle | CRITICAL | Check the components in a BPD to ensure the activity component whose name matches the naming convention of “^exception” is handled. | The exception thrown at runtime should be well handled. | InfiniteLoop | |
check-bpd-component-sql-injection-in-data-mapping | MAJOR | The component’s SQL Input Mapping may contain SQL injection. | The SQL Input Mapping is constructed using untrusted data and vulnerable to SQL injection. Use SQLStatement.parameters to write parameterized query instead. | SAST | OWASP Injection |
check-bpd-component-sql-injection-in-script | MAJOR | The component’s Script/Conditions Script/Pre&Post Assignments may contain SQL injection. | The SQLStatement.sql is constructed using untrusted data and vulnerable to SQL injection. Use SQLStatement.parameters to write parameterized query instead. | SAST | OWASP Injection |
check-bpd-contains-infinite-loop | MAJOR | Potential infinite loop is detected. | Potential infinite loop is detected. A loop without any exit criteria will result in an infinite loop. Please review. | Implementation | |
check-bpd-documentation | MINOR | Check the documentation in the BPD to ensure it is not empty. | For maintenance purposes, documentation or a description for each BPM artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that documentation or a description be set for each artifact. | Documentation | |
check-bpd-duplicated-EPVs | MAJOR | Check if there are duplicated EPVs in the process. | A BPD or process should not contain duplicated EPVs, which is not meaningful. | Redundant | |
check-bpd-error-not-fully-implemented | MAJOR | The Error is not implemented. | Please add an Error code and Error mapping configuration for this Error. If an error without configuration is triggered, it will throw its own exception and cannot handle errors normally. | Implementation | |
check-bpd-event-end-contains-script | MAJOR | Check if the end event contains script code. | For maintenance purposes, the start or end event in the BPD should not contain any JavaScript code. If necessary, the JavaScript code defined in the event should be implemented in another component. | Maintenance | |
check-bpd-event-end-delete-instance-data | MINOR | The terminate end event is set to delete all terminated instance runtime data. | When the BPD runtime performs frequent deletions, IBM Business Automation Workflow is as frequently performing the purge of the corresponding documents which should be deleted from the Process Portal Search index. When this purge is too frequently performed, it can impact the overall performance of the BPD runtime engine and also cause deadlocks on the BPM_INSTANCE_INDEX and the BPM_TASK_INDEX tables. Such a situation can happen when the end event of a process is of the ‘Terminate’ type and the event property ‘Delete all terminated instance runtime data’ is checked. Upgrade BAW to 23.0.1+ and install all fix packs to fix the issue. | Performance | IBM BAW: Performance degradation and deadlocks can be observed when there are frequent deletions of process instances, Setting the purge-minimum-interval property has no effect - IBM Business Automation Workflow |
check-bpd-event-start-contains-script | MAJOR | Check if the start event contains script code. | For maintenance purposes, the start or end event in the BPD should not contain any JavaScript code. If necessary, the JavaScript code defined in the event should be implemented in another component. | Maintenance | |
check-bpd-gateway-condition | CRITICAL | Check if the component of its lane in the BPD has a complete gateway condition. | Decision gates with conditions should be implemented properly. | Implementation | |
check-bpd-humanservice-in-system-lane | MAJOR | Check the components of its lane in the BPD to ensure the Activities with human service are not implemented in a system lane. | A system lane should not contain any human tasks. | Performance | |
check-bpd-implementation-javascript-coding-style | MINOR | Check if the implementation JavaScript code complies with the general JavaScript coding style. | JavaScript codes should comply with the general JavaScript coding style. | JavaScript | |
check-bpd-message-event | MAJOR | Check the components of the lane in the BPD to ensure the attached UCA ID of the message event is not empty. | A message event should have a UCA attached to it. | Implementation | |
check-bpd-not-fully-implemented | MAJOR | Check if the BPD is fully implemented. | A BPD should be implemented. If the BPD is not necessary, you should delete it. | Implementation | |
check-bpd-phantom-steps | MAJOR | Check the components of the lane in the BPD to ensure the activity component has an attached activity. | If the activity is not necessary for a process or BPD, you should delete it. Otherwise, add implementation to the activity. | Implementation | |
check-bpd-searchable-field | CRITICAL | Check the total number of searchable fields in a BPD or Process to ensure it is not more than 25. | Business variables add more overhead to the Process Server, so limit business data searches to only those fields that need to be searchable in the Process Portal. As a general guideline, rarely are more than 25 searchable variables required in a Process. If your implementation has more searchable variables than this, reevaluate your design and refactor as needed to reduce the number of searchable variables. | Performance | IBM BPM Performance Tuning and Best Practices |
check-bpd-step-incorrectly-referenced | MAJOR | Check the documentation of the participant to ensure it is not empty. | A redundant component that is not linked in the end-to-end process flow should be deleted. | Redundant | |
check-bpd-unused-variables | MAJOR | Check if the process or BPD has unused variables that should be deleted. | Unused variables should be deleted. | Redundant | |
check-delete-completed-task | CRITICAL | Check if the component is a system task and is set to delete on completion. | It’s recommended that you enable Delete Task on Completion for tasks in a system swim lane, because large volumes of completed tasks can greatly impact the performance of instance migration. | Performance | IBM BPM Performance Tuning and Best Practices |
check-lane-participant-not-default | MAJOR | Check if the attached participant of all lanes is set to all users. | Assigning a swimlane to default all users could lead to performance problems when there is a large user registry. Especially if the LDAP is configured, when you run an activity in the lane, it will attempt to populate all the users in your LDAP registry, which can be typically very large. | Performance | |
check-MIL-system-activity | MAJOR | Check if there is a system lane activity that uses multi-instance loops. | Do not use MILs for batch or system lane activities. This pattern can generate an excessive number of tokens for the BPD to process. Also, activities in MILs in the system lane are run on a single thread, which is clearly not optimal on multiprocessor core servers. | Performance | IBM BPM Performance Tuning and Best Practices |
check-participant-all-users | MAJOR | Check if the participant contains a group set to all users. | The participant group should better not contain all users (tw allusers). If it does, that means any user in the LDAP can see all of the tasks assigned to this group, which may cause negative performance implications. Please consider changing your group members. | Performance | |
check-participant-documentation | MINOR | Check the documentation of the participant to ensure it is not empty. | For maintenance purposes, documentation or a description for each BPM artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that documentation or a description be set for each artifact. | Documentation | |
check-sequential-activities-in-lane | MAJOR | ‘String of Pearls’ problem detected. | Sequential system lane activities or human activities within the same lane should be highlighted as something to avoid, also known as the ‘String of Pearls’ problem. Sequential activities within the same lane almost always can be merged. Also, sequential activities, especially when used in the system lane, can have a major impact on performance. | Performance | IBM BPM Performance Tuning and Best Practices |
check-stp-bpd | MAJOR | An STP-like BPD was found. | Its performance can be optimized by checking the ‘Optimize Execution for Latency’ checkbox (Available since BPM 8.5.5) in the process overview, or by replacing it with a BPEL process. Or consider implementing it in BPM Advanced or as an external service. | Performance |
Service
Rule | Level | Description | Advice | Tags | Reference |
---|---|---|---|---|---|
check-app-unused-service | MAJOR | Check if there are unused services in the process app. | Services should be used by other artifacts or defined as an exposed human service. Redundant services should be deleted. | Redundant | |
check-coach-with-too-many-coach-view | CRITICAL | The number of coach views in the coach is more than 500. | Simplify the coach. Consider redesigning the complex coach into separate coaches to reduce the number of coach views per coach. | Performance | IBM BPM UI Performance |
check-humanservice-with-too-many-coach | MAJOR | Check the total number of coaches in the service to ensure it is not more than 5. | For maintenance purposes, a human service should only include necessary coaches. | Maintenance | |
check-service-coachcontrol-with-no-binding-value | MINOR | The coach control does not have a binding value. | A coach control may need a binding value. | Implementation | |
check-service-documentation | MINOR | Check the services in the process app to ensure that there is no service whose documentation is empty. | For maintenance purposes, documentation or a description for each BPM artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that documentation or a description be set for each artifact. | Documentation | |
check-service-duplicated-EPVs | MAJOR | Check if there are duplicated EPVs in each service. | A service should not contain duplicated EPVs, which is not meaningful. | Redundant | |
check-service-duplicated-resource-bundles | MAJOR | Check if there are duplicated resource bundles in each service. | A service should not contain duplicated resource bundles, which is not meaningful. | Redundant | |
check-service-error-not-fully-implemented | MAJOR | The Error is not implemented. | Please add an Error code and Error mapping configuration for this Error. If an error without configuration is triggered, it will throw its own exception and cannot handle errors normally. | Implementation | |
check-service-event-end-contains-script | MAJOR | Check the items of the service. If an item is an exit point, check if it contains script code. | For maintenance purposes, the exit point in the service should not contain any JavaScript code. If necessary, JavaScript code defined in the exit point should be implemented in another item. | Maintenance | |
check-service-exception-loop-item | CRITICAL | Check the items of the service to ensure that there is no exception event loop item. | The item in the service should avoid an event loop exception. | InfiniteLoop | |
check-service-item-contain-mixed-js-libraries | MINOR | Do not mix Coach View Libraries in services. | Do not mix Coach Views written with different JavaScript libraries. Loading and initializing different libraries takes time. | Performance | |
check-service-item-contains-infinite-loop | MAJOR | Potential infinite loop is detected. | Potential infinite loop is detected. A loop without any exit criteria will result in an infinite loop. Please review. | Implementation | |
check-service-item-contains-sleep | MAJOR | Check if the JavaScript uses java.lang.Thread.currentThread().sleep. | JavaScript should not contain java.lang.Thread.currentThread().sleep. | Implementation | |
check-service-item-contain-tostring-datamapping | MAJOR | Check all the items in services to see if any item contains toString data mapping. | A Service task contains a Data Mapping which makes use of the toString function on a potentially large variable. | Performance | |
check-service-item-execution-assignment-javascript-coding-style | MINOR | Check all the assignment JavaScript code in each service to ensure that the JavaScript codes comply with the general JavaScript coding style. | JavaScript codes should comply with the general JavaScript coding style. | JavaScript | |
check-service-item-implementation-javascript-coding-style | MINOR | Check all the implementation JavaScript code in each service to ensure that the JavaScript codes comply with the general JavaScript coding style. | JavaScript codes should comply with the general JavaScript coding style. | JavaScript | |
check-service-item-not-implemented | MAJOR | Check the service flows to ensure that there is no infinite loop. | There is an infinite loop in the service flow. Please review it! | Implementation | |
check-service-item-save-context-checked | MAJOR | Check the items of the service to ensure that the save execution context is off. | Save execution context should be turned off for all activities. Use of save execution context where it is not necessary can lead to performance issues. | Performance | |
check-service-item-sql-injection-in-data-mapping | MAJOR | The service item’s SQL Input Mapping may contain SQL injection. | The SQL Input Mapping is constructed using untrusted data and vulnerable to SQL injection. Use SQLStatement.parameters to write a parameterized query instead. | SAST | OWASP Injection |
check-service-item-sql-injection-in-script | MAJOR | The service item’s Script/Pre&Post Execution Script may contain SQL injection. | The SQLStatement.sql is constructed using untrusted data and vulnerable to SQL injection. Use SQLStatement.parameters to write a parameterized query instead. | SAST | OWASP Injection |
check-service-javascript-length | MAJOR | Check the JavaScript code in the items of the service to ensure that the line number of the item is not more than 100. | Avoid large JavaScript blocks because JavaScript is interpreted and therefore is slower to process than other compiled mechanisms such as Java code. Large JavaScript blocks can also produce very large Document Object Model (DOM) trees. As a general guideline, limit a JavaScript block to 100 lines. If your implementation exceeds this value, re-evaluate the design and refactor the implementation to use smaller JavaScript blocks. | JavaScript | IBM BPM Performance Tuning and Best Practices |
check-service-javascript-length-pro | CRITICAL | Check the JavaScript code in the items of the service to ensure that the line number of the item is not more than 300. | Avoid large JavaScript blocks because JavaScript is interpreted and therefore is slower to process than other compiled mechanisms such as Java code. Large JavaScript blocks can also produce very large Document Object Model (DOM) trees. As a general guideline, limit a JavaScript block to 300 lines. If your implementation exceeds this value, re-evaluate the design and refactor the implementation to use smaller JavaScript blocks. | JavaScript | IBM BPM Performance Tuning and Best Practices |
check-service-not-fully-implemented | MAJOR | Check all the services to ensure they are fully implemented. | The service in the process app should be properly implemented. If it is not necessary, you should delete it. | Implementation | |
check-service-SOPE-directly-follow-postpone-object | MAJOR | Check the items of the service to ensure the Stay on Page Event (SOPE) object does not directly follow a Postpone object in a Service. | A Stay on Page Event (SOPE) object should not directly follow a Postpone object in a Service. | Implementation | |
check-service-step-incorrectly-referenced | MAJOR | Check all of the items in services to ensure that all of the items are connected in the service. | All unconnected components should be removed from services. Having unconnected components in services can lead to a messy presentation, therefore making the service more difficult to maintain. | Implementation | |
check-service-unused-variables | MAJOR | Check the variables in the service to ensure that there are no unused variables. | Unused variables should be deleted. | Redundant | |
check-service-with-too-many-nested-cshs | MAJOR | The number of nested client-side human services in the client-side human service is more than 25. | Too many nested client-side human services in one client-side human service will cause performance problems. Redesign the client-side human service to not reference so many nested client-side human services. Consider using a series of client-side human services with fewer references to nested client-side human services. | Performance | Client-side Human Service Performance Troubleshooting |
Variable
Rule | Level | Description | Advice | Tags | Reference |
---|---|---|---|---|---|
check-bpd-variables-documentation | MINOR | Check the private variables of the BPD to ensure the documentation of a variable is not empty. | For maintenance purposes, documentation or a description for each BPM artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that documentation or a description be set for each artifact. | Documentation | |
check-bpd-variables-naming-conversion | MAJOR | Check the private variables of the BPD to ensure the name is not set to “Untitled” or some string containing the word “Untitled”. | The name of the variable should be set properly. It should comply with the defined naming conventions. Names that contain the string ‘Untitled’ are not allowed. | NamingConversion | |
check-service-variables-documentation | MINOR | Check the input variables of the service to ensure the documentation of a variable is not empty. | For maintenance purposes, documentation or a description for each BPM artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that documentation or a description be set for each artifact. | Documentation | |
check-service-variables-naming-conversion | MAJOR | Check the private variables of the service to ensure the name is not set to “Untitled” or some string containing the word “Untitled”. | The name of the variable should be set properly. It should comply with the defined naming conventions. Names that contain the string ‘Untitled’ are not allowed. | NamingConversion | |
check-service-with-too-many-inputvariables | MAJOR | Check the total number of the input variables in the service to ensure it is not more than 15. | Variables are persisted to the database when execution contexts are saved, which happens fairly frequently (for example, when changing from BPD to service execution, and when running each coach). These persistence operations are expensive. It is recommended that if possible, minimize the number of variables used. | Performance | IBM BPM Performance Tuning and Best Practices |
check-service-with-too-many-outputvariables | MAJOR | Check the total number of the output variables in the service to ensure it is not more than 15. | Variables are persisted to the database when execution contexts are saved, which happens fairly frequently (for example, when changing from BPD to service execution, and when running each coach). These persistence operations are expensive. It is recommended that if possible, minimize the number of variables used. | Performance | IBM BPM Performance Tuning and Best Practices |
Web Service
Rule | Level | Description | Advice | Tags |
---|---|---|---|---|
check-webservice-documentation | MINOR | Check the web service in the process app to ensure the documentation of a web service is not empty. | For maintenance purposes, documentation or a description for each BPM artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that documentation or a description be set for each artifact. | Documentation |
check-webservice-operation-documentation | MINOR | Check the web service operation in the web service to ensure the documentation of a web service operation is not empty. | For maintenance purposes, documentation or a description for each BPM artifact is necessary. A well-described artifact can be very helpful for users to have a better understanding of the artifact. It is strongly recommended that documentation or a description be set for each artifact. | Documentation |