[Business Service summary View] Supporting Applications Issue

Post Reply
tkinte
Posts: 34
Joined: 18 Nov 2014, 08:24

26 Oct 2018, 12:50

Hi.

Let's consider 2 business Services are produced by a same business process, but using 2 different physical processes (different actors), each physical process use a different application and produce really only one of the 2 business services.
Business Services to APP .png
Actually, the summary view of each business service shows/include the 2 applications.

How can I restrict the supporting application list to the correct/specific one only ?

Many thanks for your help.

Best regards,

Tshitshi
You do not have the required permissions to view the files attached to this post.

JohnM
Posts: 102
Joined: 17 Feb 2009, 20:19

31 Oct 2018, 07:31

Hi Tshitshi,

We have the Product class that we use to map business services - although it is called Product, we do say it can be either products or services. This allows you to tie a service to a physical process ('Implemented by business processes' slot), which in turn can have applications associated with them ('Supporting applications' slot). This should allow you to see exactly which applications are supporting a service.

Hope that helps

John

tkinte
Posts: 34
Joined: 18 Nov 2014, 08:24

06 Nov 2018, 17:57

Hi John.

Thank you for your response. But I still have the issue.

Do you mean Product_Type instead of Product?
The current implementation of the Business Service Summary View seems not accurate . If I understand the core_bl_bus_service_summary.xsl file, It does not filter details so that only elements (Physical Process, Actors, Application, etc) that really support the product_type/business service are selected. Supporting and not supporting details are all included. It is a more COARSE Grained approach.

Code: Select all

<!-- Get all of the required types of instances in the repository -->
	<xsl:variable name="currentBusSvc" select="/node()/simple_instance[name = $param1]"/>
	<xsl:variable name="currentBusSvcName" select="$currentBusSvc/own_slot_value[slot_reference = 'name']/value"/>
	<xsl:variable name="currentBusSvcDescription">
		<xsl:call-template name="RenderMultiLangInstanceDescription">
			<xsl:with-param name="theSubjectInstance" select="$currentBusSvc"/>
		</xsl:call-template>
	</xsl:variable>

	<xsl:variable name="allBusConsumers" select="/node()/simple_instance[name = $currentBusSvc/own_slot_value[slot_reference = 'product_type_target_audience']/value]"/>
	<xsl:variable name="busSvcSupportingProcs" select="/node()/simple_instance[name = $currentBusSvc/own_slot_value[slot_reference = 'product_type_produced_by_process']/value]"/>
	<xsl:variable name="busSvcSupportingGroupRoles" select="/node()/simple_instance[name = $busSvcSupportingProcs/own_slot_value[slot_reference = 'business_process_performed_by_business_role']/value]"/>
	<xsl:variable name="busSvcSupportingIndividualRoles" select="/node()/simple_instance[name = $busSvcSupportingProcs/own_slot_value[slot_reference = 'business_process_performed_by_business_role']/value]"/>
	<xsl:variable name="busSvcPhysProcs" select="/node()/simple_instance[name = $busSvcSupportingProcs/own_slot_value[slot_reference = 'implemented_by_physical_business_processes']/value]"/>
	<xsl:variable name="busSvcActor2Roles" select="/node()/simple_instance[name = $busSvcPhysProcs/own_slot_value[slot_reference = 'process_performed_by_actor_role']/value]"/>
	<xsl:variable name="busSvcActors" select="/node()/simple_instance[name = $busSvcActor2Roles/own_slot_value[slot_reference = 'act_to_role_from_actor']/value]"/>
	<xsl:variable name="busSvcApp2PhysProcs" select="/node()/simple_instance[name = $busSvcPhysProcs/own_slot_value[slot_reference = 'phys_bp_supported_by_app_pro']/value]"/>
	<xsl:variable name="busSvcAppProRoles" select="/node()/simple_instance[name = $busSvcApp2PhysProcs/own_slot_value[slot_reference = 'apppro_to_physbus_from_appprorole']/value]"/>
	<xsl:variable name="busSvcAppPros" select="/node()/simple_instance[name = $busSvcAppProRoles/own_slot_value[slot_reference = 'role_for_application_provider']/value]"/>
To try to achieve the filter result, I made some adaptation of the xls, using the indirect relations Product_Type - Product - Physical Process - Application. And the result seems more accurate. It seems more FINE Grained approach

Code: Select all

<!-- Get all of the required types of instances in the repository -->
	<xsl:variable name="currentBusSvc" select="/node()/simple_instance[name = $param1]"/>
	<xsl:variable name="currentBusSvcName" select="$currentBusSvc/own_slot_value[slot_reference = 'name']/value"/>
	<xsl:variable name="currentBusSvcDescription">
		<xsl:call-template name="RenderMultiLangInstanceDescription">
			<xsl:with-param name="theSubjectInstance" select="$currentBusSvc"/>
		</xsl:call-template>
	</xsl:variable>

	<xsl:variable name="allBusConsumers" select="/node()/simple_instance[name = $currentBusSvc/own_slot_value[slot_reference = 'product_type_target_audience']/value]"/>
	<!-- My FILTER -->
	<xsl:variable name="allBusSvcInstances" select="/node()/simple_instance[name = $currentBusSvc/own_slot_value[slot_reference = 'product_type_instances']/value]"/>
	<xsl:variable name="busSvcPhysProcs" select="/node()/simple_instance[name = $allBusSvcInstances/own_slot_value[slot_reference = 'product_implemented_by_process']/value]"/>
	<!-- End My Filter -->
	<!-- Adaptation due to My Filter 
	<xsl:variable name="busSvcSupportingProcs" select="/node()/simple_instance[name = $currentBusSvc/own_slot_value[slot_reference = 'product_type_produced_by_process']/value]"/>
-->
	<xsl:variable name="busSvcSupportingProcs" select="/node()/simple_instance[name = $busSvcPhysProcs/own_slot_value[slot_reference = 'implements_business_process']/value]"/>
	<xsl:variable name="busSvcSupportingGroupRoles" select="/node()/simple_instance[name = $busSvcSupportingProcs/own_slot_value[slot_reference = 'business_process_performed_by_business_role']/value]"/>
	<xsl:variable name="busSvcSupportingIndividualRoles" select="/node()/simple_instance[name = $busSvcSupportingProcs/own_slot_value[slot_reference = 'business_process_performed_by_business_role']/value]"/>
	<!-- Adaptation due to My Filter 
	<xsl:variable name="busSvcPhysProcs" select="/node()/simple_instance[name = $busSvcSupportingProcs/own_slot_value[slot_reference = 'implemented_by_physical_business_processes']/value]"/>
-->
	<xsl:variable name="busSvcActor2Roles" select="/node()/simple_instance[name = $busSvcPhysProcs/own_slot_value[slot_reference = 'process_performed_by_actor_role']/value]"/>
	<xsl:variable name="busSvcActors" select="/node()/simple_instance[name = $busSvcActor2Roles/own_slot_value[slot_reference = 'act_to_role_from_actor']/value]"/>
	<xsl:variable name="busSvcApp2PhysProcs" select="/node()/simple_instance[name = $busSvcPhysProcs/own_slot_value[slot_reference = 'phys_bp_supported_by_app_pro']/value]"/>
	<xsl:variable name="busSvcAppProRoles" select="/node()/simple_instance[name = $busSvcApp2PhysProcs/own_slot_value[slot_reference = 'apppro_to_physbus_from_appprorole']/value]"/>
	<xsl:variable name="busSvcAppPros" select="/node()/simple_instance[name = $busSvcAppProRoles/own_slot_value[slot_reference = 'role_for_application_provider']/value]"/>
But implementing this way does not take in account cases that only link Product_Type and Business_Process, without the physical details through the link Product - Physical_Process, etc. The optimal implementation should/could mix the 2 approaches :
  • First, use the detailed link (fine grained) through Product and Physical_Process
  • Then, use the more direct link (coarse graned) Product_Type - Business_Process, only fore cases where physical details are missing. And in this last option, there is no way to include accurately the information about Actors, Applications, etc that really support the Business service / Product_Type.
.

Can you help with some tips on the best way to achieve that ?

To help diagnose and compare the result of respectively the current and the adapted Business Service Summary View implementation, I include the protege project and views screenshots.
Bunsiness_Service_2_physical_process_2_application_061118_1306.zip
screenshots.zip
Business Service 2 Process - Actor - Application Modelling.png
Note : No implementing Business Process is directly defined for the A1 Corporate group Product_Type. But A implementing product exists and is linked to a set of Physical_Processes.

Thank you in advance for your help. And sorry for this lengthy post.

Best Regards

Tshitshi
You do not have the required permissions to view the files attached to this post.

jasonp
Posts: 14
Joined: 01 Jul 2017, 07:05

21 Nov 2018, 17:50

Hi Tshitshi,

apologies for the delay in getting back to you on this. I agree with your assessment regarding the accuracy of the current Business Service Summary implementation. There is a way to achieve what you are looking to do (we have had to address this issue in a number of other views) and so, based on the adjustments that you have already made, I will respond with an updated version of the xsl file as soon as possible.

Thank you for identifying this issue and for providing the suggested update.

Regards,

Jason

tkinte
Posts: 34
Joined: 18 Nov 2014, 08:24

22 Nov 2018, 11:05

Hi Jason,

Thank you for your response.

Looking forward for the update ...

Best Regards.

Tshitshi

jasonp
Posts: 14
Joined: 01 Jul 2017, 07:05

26 Nov 2018, 17:33

Hi Tshitshi,

here is the updated xsl which should now account for the two scenarios that you described. Using the test repository that you sent, you should see that the view only provides actors and applications where they have been associated with physical processes via Products. However, it will add rows to the Business Process table where Physical Processes have not been captured.

In addition to a couple of minor tweaks, the main change that I made was to create a union of fine grained supporting business processes and coarse grained supporting business processes as below:

Code: Select all

<!-- NOTE: Update filters to include sub-product types and sub-products -->
	<xsl:variable name="allBusConsumers" select="/node()/simple_instance[name = $allCurrentBusSvcs/own_slot_value[slot_reference = 'product_type_target_audience']/value]"/>
	<!-- FINE GRAINED FILTER FOR PHYSICAL PROCESSES AND APPS-->
	<xsl:variable name="fineGrainedBusSvcInstances" select="$allBusServiceInstances[name = $allCurrentBusSvcs/own_slot_value[slot_reference = 'product_type_instances']/value]"/>
	<xsl:variable name="busSvcPhysProcs" select="$allPhysProcs[name = $fineGrainedBusSvcInstances/own_slot_value[slot_reference = 'product_implemented_by_process']/value]"/>
	<!-- End My Filter -->
	<!-- Adaptation due to My Filter 
	<xsl:variable name="busSvcSupportingProcs" select="/node()/simple_instance[name = $currentBusSvc/own_slot_value[slot_reference = 'product_type_produced_by_process']/value]"/>
-->
	<xsl:variable name="fineGrainedBusSvcSupportingProcs" select="$allBusProcs[name = $busSvcPhysProcs/own_slot_value[slot_reference = 'implements_business_process']/value]"/>
	<xsl:variable name="busSvcSupportingGroupRoles" select="/node()/simple_instance[name = $fineGrainedBusSvcSupportingProcs/own_slot_value[slot_reference = 'business_process_performed_by_business_role']/value]"/>
	<xsl:variable name="busSvcSupportingIndividualRoles" select="/node()/simple_instance[name = $fineGrainedBusSvcSupportingProcs/own_slot_value[slot_reference = 'business_process_performed_by_business_role']/value]"/>
	
	<!-- Get the coarse grained supporting business processes -->
	<xsl:variable name="coarseGrainedBusSvcSupportingProcs" select="$allBusProcs[name = $allCurrentBusSvcs/own_slot_value[slot_reference = 'product_type_produced_by_process']/value]"/>
	
	<!-- MAIN CHANGE: Define the complete set of fine-grained and coarse grained supporting business processes -->
	<xsl:variable name="allBusSvcSupportingProcs" select="$fineGrainedBusSvcSupportingProcs union $coarseGrainedBusSvcSupportingProcs"/>
I have attached the updated xsl for you to review. Let me know if you have any further issues or questions

Regards

Jason
You do not have the required permissions to view the files attached to this post.

tkinte
Posts: 34
Joined: 18 Nov 2014, 08:24

29 Nov 2018, 11:24

Hi Jason.

Thank you very much for the update.

The implementation is fine. No further issue for the moment. We will keep testing.

Best regards.

Tshitshi

Post Reply