täällä
TRANSCRIPT
Microsoft FEDERAL ARCHITECT FORUM
March 16th-17th, 2004
Tools for Developing Tools for Developing Service Oriented Service Oriented SolutionsSolutions
Jack Greenfield, ArchitectJack Greenfield, ArchitectVisual Studio, Enterprise ToolsVisual Studio, Enterprise ToolsMicrosoft CorporationMicrosoft Corporation
SummarySummarySummarySummary
Building Service Oriented Building Service Oriented Applications is a complex Applications is a complex undertakingundertakingWe can improve the underlying We can improve the underlying frameworks and protocols to frameworks and protocols to helphelpBut languages, patterns and But languages, patterns and tools have an important role to tools have an important role to playplayWe can build effective modeling We can build effective modeling tools if we follow some simple tools if we follow some simple rulesrules
Building Service Oriented Building Service Oriented Applications is a complex Applications is a complex undertakingundertakingWe can improve the underlying We can improve the underlying frameworks and protocols to frameworks and protocols to helphelpBut languages, patterns and But languages, patterns and tools have an important role to tools have an important role to playplayWe can build effective modeling We can build effective modeling tools if we follow some simple tools if we follow some simple rulesrules
AgendaAgendaAgendaAgenda
Complexity in Connected SystemsComplexity in Connected SystemsUsing Abstraction to Reduce Using Abstraction to Reduce ComplexityComplexityDomain Specific Languages and Domain Specific Languages and PatternsPatternsScenario 1 - Web Services & Design Scenario 1 - Web Services & Design for Operationsfor OperationsScenario 2 – Implementing Business Scenario 2 – Implementing Business ProcessesProcessesMicrosoft Strategy and Tools for Visual Microsoft Strategy and Tools for Visual Studio WhidbeyStudio Whidbey
Complexity in Connected SystemsComplexity in Connected SystemsUsing Abstraction to Reduce Using Abstraction to Reduce ComplexityComplexityDomain Specific Languages and Domain Specific Languages and PatternsPatternsScenario 1 - Web Services & Design Scenario 1 - Web Services & Design for Operationsfor OperationsScenario 2 – Implementing Business Scenario 2 – Implementing Business ProcessesProcessesMicrosoft Strategy and Tools for Visual Microsoft Strategy and Tools for Visual Studio WhidbeyStudio Whidbey
AgendaAgendaAgendaAgenda
Complexity in Connected SystemsComplexity in Connected SystemsUsing Abstraction to Reduce Using Abstraction to Reduce ComplexityComplexityDomain Specific Languages and Domain Specific Languages and PatternsPatternsScenario 1 - Web Services & Design Scenario 1 - Web Services & Design for Operationsfor OperationsScenario 2 – Implementing Business Scenario 2 – Implementing Business ProcessesProcessesMicrosoft Strategy and Tools for Visual Microsoft Strategy and Tools for Visual Studio WhidbeyStudio Whidbey
Complexity in Connected SystemsComplexity in Connected SystemsUsing Abstraction to Reduce Using Abstraction to Reduce ComplexityComplexityDomain Specific Languages and Domain Specific Languages and PatternsPatternsScenario 1 - Web Services & Design Scenario 1 - Web Services & Design for Operationsfor OperationsScenario 2 – Implementing Business Scenario 2 – Implementing Business ProcessesProcessesMicrosoft Strategy and Tools for Visual Microsoft Strategy and Tools for Visual Studio WhidbeyStudio Whidbey
Automate business processesAutomate business processesSupply chain integrationSupply chain integrationInternal value chain integrationInternal value chain integrationCustomer and supplier self service Customer and supplier self service Lower operating costsLower operating costsCut time to marketCut time to market
New Business New Business RequirementsRequirementsNew Business New Business RequirementsRequirements
New Application New Application ArchitectureArchitectureNew Application New Application ArchitectureArchitectureAutomate business processesAutomate business processes
Supply chain integrationSupply chain integrationInternal value chain integrationInternal value chain integrationCustomer and supplier self service Customer and supplier self service Lower operating costsLower operating costsCut time to marketCut time to marketService oriented architectureService oriented architecture
Web services, messaging, contractsWeb services, messaging, contractsSecuritySecurityTransactions and state managementTransactions and state managementDeployment policies & constraintsDeployment policies & constraintsHeterogeneous platformsHeterogeneous platforms
Service oriented architectureService oriented architectureWeb services, messaging, contractsWeb services, messaging, contractsSecuritySecurityTransactions and state managementTransactions and state managementDeployment policies & constraintsDeployment policies & constraintsHeterogeneous platformsHeterogeneous platforms
Evolving Platform Evolving Platform TechnologyTechnologyEvolving Platform Evolving Platform TechnologyTechnologyAutomate business processesAutomate business processes
Supply chain integrationSupply chain integrationInternal value chain integrationInternal value chain integrationCustomer and supplier self service Customer and supplier self service Lower operating costsLower operating costsCut time to marketCut time to market
Service oriented architectureService oriented architectureMessaging and protocolsMessaging and protocolsSecuritySecurityCaching and state managementCaching and state managementDeployment policies & constraintsDeployment policies & constraintsHeterogeneous platformsHeterogeneous platforms
Schemas and URLsSchemas and URLsAssemblies and resourcesAssemblies and resourcesProject structureProject structureInstallation and registrationInstallation and registrationServer configurationServer configurationDatabase administrationDatabase administration
ComplexityComplexityComplexityComplexityAutomate business processesAutomate business processesSupply chain integrationSupply chain integrationInternal value chain integrationInternal value chain integrationCustomer and supplier self service Customer and supplier self service Lower operating costsLower operating costsCut time to marketCut time to market
Service oriented architectureService oriented architectureWeb services, messaging, contractsWeb services, messaging, contractsSecuritySecurityTransactions and state managementTransactions and state managementDeployment policies & constraintsDeployment policies & constraintsHeterogeneous platformsHeterogeneous platforms
Schemas and URLsSchemas and URLsAssemblies and resourcesAssemblies and resourcesProject structureProject structureInstallation and registrationInstallation and registrationServer configurationServer configurationDatabase administrationDatabase administration
??
Where Does Complexity Where Does Complexity Arise?Arise?Where Does Complexity Where Does Complexity Arise?Arise?
??
package com.microsoftpearlcircle.auction.auctionmanager.business.auctionmanager;import java.rmi.RemoteException;import java.util.Vector;
package com.microsoftpearlcircle.auction.auctionmanager.business.auctionmanager;import java.rmi.RemoteException;import java.util.Vector;
High Level ConceptsHigh Level Concepts
«entity»Auction
+ categoryUid : String+ creditCardAccount : String+ creditCardExpiration : Long+ creditCardName : String+ creditCardType : String+ endTime : Long+ itemUid : String+ minimumBidIncrement : Float+ sellerUid : String+ startingPrice : Float+ startTime : Long+ status : String+ timezoneUid : String+ uid : String
+ setValues ( )+ getValues ( )
«entity»Bid
+ amount : Float+ auctionUid : String+ buyerUid : String+ cancelExplanation : String+ date : Long+ status : String+ uid : String
«entity»Seller
«entity»User
+ address : String+ city : String+ country : String+ email : String+ groupId : String+ password : String+ secretNumber : Integer+ state : String+ status : String+ uid : String+ userId : String+ zip : String
«entity»Buyer
«entity»Credit Card
+ accountNumber : String+ cardType : String+ expirationDate : Long+ nameOnCard : String+ uid : String+ userUid : String+ setValues ( )+ getValues ( )
1 1...
0..11
1..*
«derived»
0..1
1
Low-level Implementation languages
Low-level Implementation languages
AgendaAgendaAgendaAgenda
Complexity in Connected SystemsComplexity in Connected SystemsUsing Abstraction to Reduce Using Abstraction to Reduce ComplexityComplexityDomain Specific Languages and Domain Specific Languages and PatternsPatternsScenario 1 - Web Services & Design Scenario 1 - Web Services & Design for Operationsfor OperationsScenario 2 – Implementing Business Scenario 2 – Implementing Business ProcessesProcessesMicrosoft Strategy and Tools for Visual Microsoft Strategy and Tools for Visual Studio WhidbeyStudio Whidbey
Complexity in Connected SystemsComplexity in Connected SystemsUsing Abstraction to Reduce Using Abstraction to Reduce ComplexityComplexityDomain Specific Languages and Domain Specific Languages and PatternsPatternsScenario 1 - Web Services & Design Scenario 1 - Web Services & Design for Operationsfor OperationsScenario 2 – Implementing Business Scenario 2 – Implementing Business ProcessesProcessesMicrosoft Strategy and Tools for Visual Microsoft Strategy and Tools for Visual Studio WhidbeyStudio Whidbey
Abstraction Reduces Abstraction Reduces ComplexityComplexityAbstraction Reduces Abstraction Reduces ComplexityComplexity
Assembler, Pcode, Assembler, Pcode, CLR ILCLR IL
Bytecode or Bytecode or machine machine languageslanguages
Bytecode or Bytecode or machine machine languageslanguages
General Purpose General Purpose AbstractionsAbstractionsGeneral Purpose General Purpose AbstractionsAbstractionsC#, Java, etcC#, Java, etc
Domain Specific Domain Specific AbstractionsAbstractionsDomain Specific Domain Specific AbstractionsAbstractions
Frameworks Reduce Frameworks Reduce Translation ComplexityTranslation ComplexityFrameworks Reduce Frameworks Reduce Translation ComplexityTranslation Complexity
Assembler, Pcode, Assembler, Pcode, CLR ILCLR IL
Bytecode or Bytecode or machine machine languageslanguages
Bytecode or Bytecode or machine machine languageslanguages
General Purpose General Purpose AbstractionsAbstractionsGeneral Purpose General Purpose AbstractionsAbstractionsC#, Java, etcC#, Java, etc
Domain Specific Domain Specific AbstractionsAbstractionsDomain Specific Domain Specific AbstractionsAbstractions
FrameworksFrameworksE.g. ASP.NetE.g. ASP.Net
Domain Specific Domain Specific FrameworksFrameworksDomain Specific Domain Specific FrameworksFrameworks
AgendaAgendaAgendaAgenda
Complexity in Connected SystemsComplexity in Connected SystemsUsing Abstraction to Reduce Using Abstraction to Reduce ComplexityComplexityDomain Specific Languages and Domain Specific Languages and PatternsPatternsScenario 1 - Web Services & Design Scenario 1 - Web Services & Design for Operationsfor OperationsScenario 2 – Implementing Business Scenario 2 – Implementing Business ProcessesProcessesMicrosoft Strategy and Tools for Visual Microsoft Strategy and Tools for Visual Studio WhidbeyStudio Whidbey
Complexity in Connected SystemsComplexity in Connected SystemsUsing Abstraction to Reduce Using Abstraction to Reduce ComplexityComplexityDomain Specific Languages and Domain Specific Languages and PatternsPatternsScenario 1 - Web Services & Design Scenario 1 - Web Services & Design for Operationsfor OperationsScenario 2 – Implementing Business Scenario 2 – Implementing Business ProcessesProcessesMicrosoft Strategy and Tools for Visual Microsoft Strategy and Tools for Visual Studio WhidbeyStudio Whidbey
Domain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific LanguageA language specific to a domainA language specific to a domain
horizontal – e.g.: * GUI * web * business logic * database * deployment
vertical – e.g.: * telephone bills * insurance * plane tickets * hardware construction
PictorialflowchartsUML
TextualC#, JavaOCL
Domain Specific LanguageDomain Specific LanguageDomain Specific LanguageDomain Specific Language
Domain Specific AbstractionsDomain Specific AbstractionsNarrow ScopeNarrow ScopeGraphicalGraphicalHighly ExpressiveHighly ExpressiveCoarse-grained abstractionsCoarse-grained abstractionsMay be translated into May be translated into
General purpose programming General purpose programming languageslanguagesSpecific framework completionSpecific framework completionOther modeling languagesOther modeling languages
Domain Specific AbstractionsDomain Specific AbstractionsNarrow ScopeNarrow ScopeGraphicalGraphicalHighly ExpressiveHighly ExpressiveCoarse-grained abstractionsCoarse-grained abstractionsMay be translated into May be translated into
General purpose programming General purpose programming languageslanguagesSpecific framework completionSpecific framework completionOther modeling languagesOther modeling languages
C(x) h C(x) t 2m xih = –
Languages : Modelling and Languages : Modelling and ProgrammingProgrammingLanguages : Modelling and Languages : Modelling and ProgrammingProgramming
Textual Pictorial
Descriptive
Prescriptive
class Magnox : NuclearPowerStation {
public void dropRods ()
jo biscuits 24 green
pat cakes 32 pink
Employeename
addresspromote
Jobdescription
payassign
0..*
a>b && c==d
call
CallRecord
call length
base rate: £/s
store
<CallRecord>
<caller><number>07713248</number>
Telephone billing schemeTelephone billing schemeTelephone billing schemeTelephone billing scheme
call
calendarmonth
CallRecord
call length
base rate: £/s
call length
friend discount rate: £/sstore
friends calls
other calls
-
bill
billing period
store
+-
DSLs make problems “Small DSLs make problems “Small Scale”Scale”DSLs make problems “Small DSLs make problems “Small Scale”Scale”
Small scale =Small scale =Not much design atop existing platformNot much design atop existing platform
small team small team
coherent, consistent architecture; low costscoherent, consistent architecture; low costs
early prototypesearly prototypes early feedback to requirements; early proof of early feedback to requirements; early proof of conceptconcept
easy maintenanceeasy maintenance
changes inexpensivechanges inexpensive
Small scale =Small scale =Not much design atop existing platformNot much design atop existing platform
small team small team
coherent, consistent architecture; low costscoherent, consistent architecture; low costs
early prototypesearly prototypes early feedback to requirements; early proof of early feedback to requirements; early proof of conceptconcept
easy maintenanceeasy maintenance
changes inexpensivechanges inexpensive
Finding prime numbers is Finding prime numbers is Small ScaleSmall Scale … …Finding prime numbers is Finding prime numbers is Small ScaleSmall Scale … …
If we have a computer that can:If we have a computer that can:do multiplication and divisiondo multiplication and divisiondo things repeatedlydo things repeatedly
If we have a computer that can:If we have a computer that can:do multiplication and divisiondo multiplication and divisiondo things repeatedlydo things repeatedly
_*__*__/__/_
_%__%_while (…) {…}while (…) {…}
C, Pascal, Fortran,…
Von Neumann computer with conventional CPU
language:
platform:
Finding parts lists is Finding parts lists is Small Small ScaleScale … …Finding parts lists is Finding parts lists is Small Small ScaleScale … …
If we have a computer that can:If we have a computer that can:keep large lists of parts & scan them quicklykeep large lists of parts & scan them quicklycombine and filter the lists efficientlycombine and filter the lists efficiently
If we have a computer that can:If we have a computer that can:keep large lists of parts & scan them quicklykeep large lists of parts & scan them quicklycombine and filter the lists efficientlycombine and filter the lists efficiently
CREATE …CREATE …JOIN …… WHERE …
JOIN …… WHERE … SELECT …SELECT …
Relational DatabaseSQL
platform: language:
Developing a GUI is Developing a GUI is Small Small ScaleScale … …Developing a GUI is Developing a GUI is Small Small ScaleScale … …
If we have a computer that can:If we have a computer that can:display combinations of windows and widgetsdisplay combinations of windows and widgetsshow things and interact with user in themshow things and interact with user in them
If we have a computer that can:If we have a computer that can:display combinations of windows and widgetsdisplay combinations of windows and widgetsshow things and interact with user in themshow things and interact with user in them
Visual programminglanguages
Interactive appplatform
platform:language:
if we have a if we have a languagelanguage of phone billing of phone billing
and a and a frameworkframework to run it on to run it on
if we have a if we have a languagelanguage of phone billing of phone billing
and a and a frameworkframework to run it on to run it on
Phone bill systems are Phone bill systems are Small Small ScaleScale … …Phone bill systems are Phone bill systems are Small Small ScaleScale … …
call
calendarmonth
CallRecord
call length
base rate: £/s
call length
friend discount rate: £/sstore
friends calls
other calls
-
bill
billing period
store
Telephone Billing Scheme
?
• forms-centred applications
• build GUI from a collection of widgets
• Web database applications
• standard couplings between form and db
• string, textfile processing
• regexps, parsers, …
(a,b,c)= str=~/<([^>]*)>/g;
• COTS applications
• Great Plains, SAP, Baan, …
Where are DSLs in use today?Where are DSLs in use today?Where are DSLs in use today?Where are DSLs in use today?
Understanding Web Understanding Web ServicesServicesUnderstanding Web Understanding Web ServicesServices
Activities <-> ServicesActivities <-> Services
Web servicesWeb services
MessagesMessages
ContractsContracts
SequencesSequences
SecuritySecurity
ReuseReuse
Wire-level protocolsWire-level protocols
etcetc
Activities <-> ServicesActivities <-> Services
Web servicesWeb services
MessagesMessages
ContractsContracts
SequencesSequences
SecuritySecurity
ReuseReuse
Wire-level protocolsWire-level protocols
etcetc
Where Does Complexity Where Does Complexity Arise?Arise?Where Does Complexity Where Does Complexity Arise?Arise?
??
package com.microsoftpearlcircle.auction.auctionmanager.business.auctionmanager;import java.rmi.RemoteException;import java.util.Vector;
package com.microsoftpearlcircle.auction.auctionmanager.business.auctionmanager;import java.rmi.RemoteException;import java.util.Vector;
High Level ConceptsActivitiesMessagesSecurityReuseServicesContracts
High Level ConceptsActivitiesMessagesSecurityReuseServicesContracts
«entity»Auction
+ categoryUid : String+ creditCardAccount : String+ creditCardExpiration : Long+ creditCardName : String+ creditCardType : String+ endTime : Long+ itemUid : String+ minimumBidIncrement : Float+ sellerUid : String+ startingPrice : Float+ startTime : Long+ status : String+ timezoneUid : String+ uid : String
+ setValues ( )+ getValues ( )
«entity»Bid
+ amount : Float+ auctionUid : String+ buyerUid : String+ cancelExplanation : String+ date : Long+ status : String+ uid : String
«entity»Seller
«entity»User
+ address : String+ city : String+ country : String+ email : String+ groupId : String+ password : String+ secretNumber : Integer+ state : String+ status : String+ uid : String+ userId : String+ zip : String
«entity»Buyer
«entity»Credit Card
+ accountNumber : String+ cardType : String+ expirationDate : Long+ nameOnCard : String+ uid : String+ userUid : String+ setValues ( )+ getValues ( )
1 1...
0..11
1..*
«derived»
0..1
1
Low-level Implementation languagesLow-level Implementation languages
.asmx files .asmx code behinds source code Statements and attributes
XML ConfigurationFiles and schemas(e.g. WSDL files)
Project Files and templates
Deployment PoliciesAnd Packages
??
«entity»Auction
+ categoryUid : String+ creditCardAccount : String+ creditCardExpiration : Long+ creditCardName : String+ creditCardType : String+ endTime : Long+ itemUid : String+ minimumBidIncrement : Float+ sellerUid : String+ startingPrice : Float+ startTime : Long+ status : String+ timezoneUid : String+ uid : String
+ setValues ( )+ getValues ( )
«entity»Bid
+ amount : Float+ auctionUid : String+ buyerUid : String+ cancelExplanation : String+ date : Long+ status : String+ uid : String
«entity»Seller
«entity»User
+ address : String+ city : String+ country : String+ email : String+ groupId : String+ password : String+ secretNumber : Integer+ state : String+ status : String+ uid : String+ userId : String+ zip : String
«entity»Buyer
«entity»Credit Card
+ accountNumber : String+ cardType : String+ expirationDate : Long+ nameOnCard : String+ uid : String+ userUid : String+ setValues ( )+ getValues ( )
1 1...
0..11
1..*
«derived»
0..1
1
Scattered Concepts …Scattered Concepts …Scattered Concepts …Scattered Concepts …
.asmx files .asmx code behinds source code Statements and attributes
XML ConfigurationFiles and schemas(e.g. WSDL files)
Project Files and templates
Deployment PoliciesAnd Packages
……Replaced By A Holistic Replaced By A Holistic ViewView……Replaced By A Holistic Replaced By A Holistic ViewView
Web Service Interaction DSL
Need A Designer Need A Designer InfrastructureInfrastructureNeed A Designer Need A Designer InfrastructureInfrastructure
For a specific aspect of overall For a specific aspect of overall developmentdevelopment
Define a metamodel for the Define a metamodel for the abstractionsabstractionsDefine a graphical notationDefine a graphical notationDefine a synchronization engine Define a synchronization engine
For a specific aspect of overall For a specific aspect of overall developmentdevelopment
Define a metamodel for the Define a metamodel for the abstractionsabstractionsDefine a graphical notationDefine a graphical notationDefine a synchronization engine Define a synchronization engine
Automate business processesAutomate business processesSupply chain integrationSupply chain integrationInternal value chain integrationInternal value chain integrationCustomer and supplier self service Customer and supplier self service Lower operating costsLower operating costsCut time to marketCut time to market
Service oriented architectureService oriented architectureWeb services, messaging, contractsWeb services, messaging, contractsSecuritySecurityTransactions and state managementTransactions and state managementDeployment policies & constraintsDeployment policies & constraintsHeterogeneous platformsHeterogeneous platforms
Schemas and URLsSchemas and URLsAssemblies and resourcesAssemblies and resourcesProject structureProject structureInstallation and registrationInstallation and registrationServer configurationServer configurationDatabase administrationDatabase administration
ComplexityComplexityComplexityComplexity
????
Simplify Using DSLsSimplify Using DSLsSimplify Using DSLsSimplify Using DSLs
AssessAssess DesigDesignn
ImplemenImplementt
PlanPlan RunRun
BusinessBusiness
ITIT
Strategic Strategic ObjectivesObjectives
Strategic Strategic ObjectivesObjectives
TechnologyTechnologyArchitectureArchitecture
TechnologyTechnologyArchitectureArchitecture
Business Processes Business Processes and Entitiesand Entities
Business Processes Business Processes and Entitiesand Entities
Logical Logical Data CenterData Center
Logical Logical Data CenterData Center
Physical Physical servers servers and segmentsand segments
Services, Messages, Services, Messages, Contracts, SchedulesContracts, Schedules
Services, Messages, Services, Messages, Contracts, SchedulesContracts, Schedules
XML, Database, Classes,XML, Database, Classes,CodeCode
XML, Database, Classes,XML, Database, Classes,CodeCode
Manual ProceduresManual ProceduresManual ProceduresManual Procedures
Each work Each work product can product can use a use a custom custom languagelanguage
Mappings are Mappings are defined defined between between languageslanguages
What’s Inside A What’s Inside A Viewpoint?Viewpoint?What’s Inside A What’s Inside A Viewpoint?Viewpoint?
AssessAssess DesigDesignn
ImplemenImplementt
PlanPlan RunRun
BusinessBusiness
ITIT
Strategic Strategic ObjectivesObjectives
Strategic Strategic ObjectivesObjectives
TechnologyTechnologyArchitectureArchitecture
TechnologyTechnologyArchitectureArchitecture
Business Processes Business Processes and Entitiesand Entities
Business Processes Business Processes and Entitiesand Entities
Logical Logical Data CenterData Center
Logical Logical Data CenterData Center
Physical Physical servers servers and segmentsand segments
Services, Messages, Services, Messages, Contracts, SchedulesContracts, Schedules
Services, Messages, Services, Messages, Contracts, SchedulesContracts, Schedules
XML, Database, Classes,XML, Database, Classes,CodeCode
XML, Database, Classes,XML, Database, Classes,CodeCode
Manual ProceduresManual ProceduresManual ProceduresManual Procedures
DSLsDSLsPatternsPatternsProcessesProcessesFrameworksFrameworksComponentsComponentsAspectsAspectsTransformsTransformsConstraintsConstraints
What’s Inside A What’s Inside A Viewpoint?Viewpoint?What’s Inside A What’s Inside A Viewpoint?Viewpoint?
AssessAssess DesigDesignn
ImplemenImplementt
PlanPlan RunRun
BusinessBusiness
ITIT
Strategic Strategic ObjectivesObjectives
Strategic Strategic ObjectivesObjectives
TechnologyTechnologyArchitectureArchitecture
TechnologyTechnologyArchitectureArchitecture
Business Processes Business Processes and Entitiesand Entities
Business Processes Business Processes and Entitiesand Entities
Logical Logical Data CenterData Center
Logical Logical Data CenterData Center
Physical Physical servers servers and segmentsand segments
Services, Messages, Services, Messages, Contracts, SchedulesContracts, Schedules
Services, Messages, Services, Messages, Contracts, SchedulesContracts, Schedules
XML, Database, Classes,XML, Database, Classes,CodeCode
XML, Database, Classes,XML, Database, Classes,CodeCode
Manual ProceduresManual ProceduresManual ProceduresManual Procedures
AgendaAgendaAgendaAgenda
Complexity in Connected SystemsComplexity in Connected SystemsUsing Abstraction to Reduce Using Abstraction to Reduce ComplexityComplexityDomain Specific Languages and Domain Specific Languages and PatternsPatternsScenario 1 - Web Services & Design Scenario 1 - Web Services & Design for Operationsfor OperationsScenario 2 – Implementing Business Scenario 2 – Implementing Business ProcessesProcessesMicrosoft Strategy and Tools for Visual Microsoft Strategy and Tools for Visual Studio WhidbeyStudio Whidbey
Complexity in Connected SystemsComplexity in Connected SystemsUsing Abstraction to Reduce Using Abstraction to Reduce ComplexityComplexityDomain Specific Languages and Domain Specific Languages and PatternsPatternsScenario 1 - Web Services & Design Scenario 1 - Web Services & Design for Operationsfor OperationsScenario 2 – Implementing Business Scenario 2 – Implementing Business ProcessesProcessesMicrosoft Strategy and Tools for Visual Microsoft Strategy and Tools for Visual Studio WhidbeyStudio Whidbey
Example 1Example 1Example 1Example 1
AssessAssess DesigDesignn
ImplemenImplementt
PlanPlan RunRun
BusinessBusiness
ITIT
Strategic Strategic ObjectivesObjectives
TechnologyTechnologyArchitectureArchitecture
Business Processes Business Processes and Entitiesand Entities
Business Processes Business Processes and Entitiesand Entities
Logical Logical Data CenterData Center
Logical Logical Data CenterData Center
Physical Physical servers servers and segmentsand segments
Services, Messages, Services, Messages, Contracts, SchedulesContracts, Schedules
Services, Messages, Services, Messages, Contracts, SchedulesContracts, Schedules
XML, Database, Classes,XML, Database, Classes,CodeCode
XML, Database, Classes,XML, Database, Classes,CodeCode
Manual ProceduresManual Procedures
Dynamic Systems Initiative Dynamic Systems Initiative (DSI)(DSI)Dynamic Systems Initiative Dynamic Systems Initiative (DSI)(DSI)
Network Topology& Operating Systems
Hardware
SystemDefinition
ModelApplication
Hosts
Applications
Whidbey Solutions…Whidbey Solutions…Whidbey Solutions…Whidbey Solutions…
A logical data center designer
An application designer
ApplicationHosts
Applications
A system hosting designer
SystemDefinition
Model
A DSL In Use TodayA DSL In Use TodayA DSL In Use TodayA DSL In Use Today
Web Service Interaction Web Service Interaction Web Service Interaction Web Service Interaction PatternsPatterns
Service InterfaceService InterfaceGatewayGatewayFaçadeFaçadeLayered ArchitectureLayered Architecture
AspectsAspectsTransactionsTransactionsSecuritySecurity
TransformationsTransformationsValidate against deployment infrastructureValidate against deployment infrastructureTransform into implementation artifactsTransform into implementation artifacts
PatternsPatternsService InterfaceService InterfaceGatewayGatewayFaçadeFaçadeLayered ArchitectureLayered Architecture
AspectsAspectsTransactionsTransactionsSecuritySecurity
TransformationsTransformationsValidate against deployment infrastructureValidate against deployment infrastructureTransform into implementation artifactsTransform into implementation artifacts
Logical System ArchitectureLogical System ArchitectureLogical System ArchitectureLogical System ArchitectureLogical System Architecture PatternsLogical System Architecture Patterns
““Hardened IIS” – metabase settingsHardened IIS” – metabase settingsMSA PatternsMSA Patterns
IDC, EDCIDC, EDC
Tiered Architecture PatternsTiered Architecture Patterns
AspectsAspectsFirewall SettingsFirewall SettingsProtocol SettingsProtocol Settings
TransformationsTransformationsValidate against Web service application designValidate against Web service application designTransform into implementation SDMTransform into implementation SDM
Logical System Architecture PatternsLogical System Architecture Patterns““Hardened IIS” – metabase settingsHardened IIS” – metabase settingsMSA PatternsMSA Patterns
IDC, EDCIDC, EDC
Tiered Architecture PatternsTiered Architecture Patterns
AspectsAspectsFirewall SettingsFirewall SettingsProtocol SettingsProtocol Settings
TransformationsTransformationsValidate against Web service application designValidate against Web service application designTransform into implementation SDMTransform into implementation SDM
Applying A Service Façade Applying A Service Façade PatternPatternApplying A Service Façade Applying A Service Façade PatternPattern
Policy Policy ManagementManagement
Customer Customer ManagementManagement
Customer Customer Self-ServiceSelf-Service
Service Facade PatternService Facade Pattern
Facade
Messages
Service
Selected Messages
Project StructuresReferencesDefault XSD schemasSecurity PolicyAccess PolicyPass-thru Logic & Filters
Customer Customer Mgmt Mgmt
FacadeFacade
Aspect Weaving – Aspect Weaving – Instrumentation Instrumentation Aspect Weaving – Aspect Weaving – Instrumentation Instrumentation
Policy Policy ManagementManagement
Customer Customer ManagementManagement
Customer Customer Self-ServiceSelf-Service
Instrumentation AspectInstrumentation Aspect
Framework
Call Structure
Pointcut
Pointcut
Pointcut
Pointcut
Pointcut
Pointcut
Code
Aspect
Aspect
Aspect
AgendaAgendaAgendaAgenda
Complexity in Connected SystemsComplexity in Connected SystemsUsing Abstraction to Reduce Using Abstraction to Reduce ComplexityComplexityDomain Specific Modeling Languages Domain Specific Modeling Languages and Patternsand PatternsScenario 1 - Web Services & Design Scenario 1 - Web Services & Design for Operationsfor OperationsScenario 2 – Implementing Business Scenario 2 – Implementing Business ProcessesProcessesMicrosoft Strategy and Tools for Visual Microsoft Strategy and Tools for Visual Studio WhidbeyStudio Whidbey
Complexity in Connected SystemsComplexity in Connected SystemsUsing Abstraction to Reduce Using Abstraction to Reduce ComplexityComplexityDomain Specific Modeling Languages Domain Specific Modeling Languages and Patternsand PatternsScenario 1 - Web Services & Design Scenario 1 - Web Services & Design for Operationsfor OperationsScenario 2 – Implementing Business Scenario 2 – Implementing Business ProcessesProcessesMicrosoft Strategy and Tools for Visual Microsoft Strategy and Tools for Visual Studio WhidbeyStudio Whidbey
Scenario 2 Scenario 2 Scenario 2 Scenario 2
AssessAssess DesigDesignn
ImplemenImplementt
PlanPlan RunRun
BusinessBusiness
ITIT
Strategic Strategic ObjectivesObjectives
TechnologyTechnologyArchitectureArchitecture
Business Processes Business Processes and Entitiesand Entities
Business Processes Business Processes and Entitiesand Entities
Logical Logical Data CenterData Center
Logical Logical Data CenterData Center
Physical Physical servers servers and segmentsand segments
Services, Messages, Services, Messages, Contracts, SchedulesContracts, Schedules
Services, Messages, Services, Messages, Contracts, SchedulesContracts, Schedules
XML, Database, Classes,XML, Database, Classes,CodeCode
XML, Database, Classes,XML, Database, Classes,CodeCode
Manual ProceduresManual Procedures
Invoice To PaymentInvoice To PaymentInvoice To PaymentInvoice To PaymentSeller OrgBuyer Org
Buyer’sFinancial ServicesProvider
Accounts PayableSupplier
B3.1 Receive, Process, &File Invoice
B3.2 Process 3-Way Match(PO, Receipt, Invoice)
Invoice (Original)/Debit Memo
Invoice
PO info
Procurement
Purchasing
Logistics and Distribution
WarehouseManagement
Receiving
B3.8 Remit Payment atSettlement Period
AP Clerk POV
B3.3 2-Way Match(Receipt, Invoice)
B3.15 Update VendorMaster (including set-up
customers as vendors forrefunds)
Vendor MasterData Store
Vendorinitiatedbillingprofile
changesB3.13 Receive Vendor
Profile Changes
B3.5 Reject/Dispute Invoice
Invoices (MatchException or
Out ofTolerance)
Out of ToleranceNotification
Remittance Advice & Payment (hardcopy)
B3.4 Invoice Approval
Invoice (&Image)
Data Store
Employee DataStoreApprover(s)
Project Accounting
Project Management
Business Intelligence
Business Intelligence
Manage Tax Compliance
Advisory
Human Resources
Time & ExpenseManagement
B3.7 Pending Invoices
Invoices(blocked -pendingreceipt)
Invoice (Non POtype (e.g. card,
direct order, etc))
Bank
B3.14 AuthorizeVendor Profile Changes
Invoices(cleared)
Invoices (w/inTolerance Match)
B3.6 Contact Supplier &Discuss Dispute/Rejection
Invoices(disputed, rejected)
B3.9 Respond to PaymentInquiry Remittance
Deposit
Vendorprofiledata
Acceptedprofile
changes
EmployeedataEmployee
data
Remittance Advice & Payment Release (electronic)
Vendor updateacknowledgement(approved, denied)
AgreementData Store
Agreement/Contract(negotiated terms, etc)
Vendorchanges
Approvals,rejections
Approval notifications
Requester orBuyer
(whoever owns txn)
Invoice (service based)
PO Change(out of tolerance
accepted)
Notification(rejected)
Invoices (MatchException or
Out ofTolerance)
Invoices (approved)
ReceiptNotice
Receipt Info
Invoice (w/inTolerance Match)
ReceiptedInvoices
ReceiptedInvoices
B3.10 Receive and reviewSummary Statement (card
based programs only)
Monthly Summary Invoice (card based programs only)Payment (to bank)
B3.11 Match SummaryStatement to card receipts/
invoicesstatement
Chargeback (Summary Invoice errors)
B3.12 Authorize/RejectPayment (by line item)
Card based receipts/invoices
statement
Employee
Billing Inquiry and ResponseNegotiation
Payment Inquiry/Invoice Status Response
Invoice Status Response
Financial Management
Electronic FundsProcessing
General Ledger
Capital AssetManagement
Treasury
Invoice,Payment JEs
Capital Goods Line Item Details
Cash DisbursementNeeds
Invoice Details
Remittance Advice & Payment (electronic)
Project Related Invoice Line Items
Tax Liability
Supplier Performance Data,Requester/Buyer
Performance Data,Financial Performance
Data,
Expense ReportExpense Reimbursement
Request
Payment (expense reimbursement)
Notification(accepted,rejected)
Refundchequeor EFT
Accounts Receivable
Refund payment
Credit memo
B3.16 Perform Prepayments
Prepayment
Credit Memo
Initial Prepayment
Dunning Letter
Example KPI’s:% Match (2-way)% Match (3-way)Invoice aging
FaxPhoneSnail MailE-MailEDI VANMarketPlace Exchange
FaxPhoneSnail MailE-MailEDI VANMarketPlace Exchange
FaxPhoneSnail MailE-MailEDI VANMarketPlace Exchange
FaxPhoneSnail MailE-MailEDI VANMarketPlace Exchange
FaxPhoneSnail MailE-MailEDI VANMarketPlace Exchange
FaxPhoneSnail MailE-MailEDI VANMarketPlace Exchange
FaxPhoneSnail MailE-MailEDI VANMarketPlace Exchange
FaxPhoneSnail MailE-MailEDI VANMarketPlace Exchange
FaxPhoneSnail MailE-MailEDI VANMarketPlace Exchange
FaxPhoneSnail MailE-MailEDI VANMarketPlace Exchange
FaxPhoneSnail MailE-MailEDI VANMarketPlace Exchange
FaxPhoneSnail MailE-MailEDI VANMarketPlace Exchange
FaxPhoneSnail MailE-MailEDI VANMarketPlace Exchange
Manage Tax Compliance
FaxPhoneSnail MailE-MailEDI VANMarketPlace Exchange
Buyer Org Perspective: Requisition to PaymentB3. Invoice to Payment (AP)
Acronyms: AP: Accounts Payable, JEs: Journal EntriesPO: Purchase Order, KPI: Key Performance Indicator
Preconditions: A purchase order has been created and sent to the Seller Organization.
A supplier invoice usually triggers the Invoice to Payment process. In process step B3.1, a supplier submits an invoice to the buyer organization, usually after they’ve picked, packed, and shipped product to the buyer (although pre-payments sometimes occur). The invoice is reviewed for accuracy and entered into a payables system for matching purposes. This can also trigger the flow of information to Capital Asset management tracking for depreciationpurposes, Project Accounting for project financials tracking, Tax for compliance reporting, and the General Ledger to account for liability owed. In process step B3.2, the buying organization’s Accounts Payable group/person then canperform a 3-way match between the original PO, the materials Receipt, and the Invoice. Process step B3.3 illustrates how some alternative purchasing models can be accommodated, such as direct orders, employee expense reportsubmission (which requires payment to the employee) or procurement card (like a credit card) based purchases, where a the requisition and PO is entirely bypassed. Process B3.4 allows for these alternative 3-way matching scenarios, as the invoice is approved and verified before payment is made to the vendor. In the event of match exception or out of tolerance scenarios (where amount invoiced is considerably different than expected), Accounts Payable notifiesthe requester of over tolerance (which could trigger a PO change) or rejects (disputes) the invoice (B3.5). In process step B3.6, Accounts Payable (or the Buyer) contacts the Supplier to resolve the rejected invoice. If matching andtolerance proceeds as planned, in process step B3.7 the invoice could be held in a pending state until a settlement period has been reached, optimizing working capital. Payment is then remitted to the supplier either electronically (viaa banking institution) or manually via a cheque-run (step B3.8). The invoice to payment process asserts a tight audit trail, which enables AP to know everything about the invoice and payment, supporting the ability to investigate andrespond to supplier payment issues (process B3.9). As mentioned above with the non-PO purchasing models, process steps B3.10 - B3.12 provide further details around procurement card purchasing verification and paymentprocessing since it evokes a different payment model - to the bank as opposed to the supplier (since payment has already been made). Finally, in steps B3.13 - B3.15 related vendor data maintenance processes are performed, whichplay an important role in ensuring correct and proper payment to suppliers, as well as avoiding late charges resulting from incorrect payments (locations, addresses, bank acct #s, etc).
Core Function/Module
LogicalData Store
Process
Inter-face
RelatedFunction/Module
Productoverlay
Data Flow
CollaborativeB2B Data Flow
B2B Data Flow
Key
start
How Do We Describe BPs?How Do We Describe BPs?How Do We Describe BPs?How Do We Describe BPs?
Business Process DSLBusiness Process DSLActivitiesActivitiesBusiness EventBusiness EventDependenciesDependenciesBusiness EntitiesBusiness EntitiesDocumentsDocumentsEtc.Etc.
Business Process DSLBusiness Process DSLActivitiesActivitiesBusiness EventBusiness EventDependenciesDependenciesBusiness EntitiesBusiness EntitiesDocumentsDocumentsEtc.Etc.
Patterns And Transforms Patterns And Transforms Patterns And Transforms Patterns And Transforms
Process PatternsProcess PatternsUser ProcessUser ProcessScheduled ProcessScheduled ProcessCase ProcessCase ProcessRules ProcessRules Process
TransformationsTransformationsTransform into Web service Transform into Web service collaborationscollaborations
Process PatternsProcess PatternsUser ProcessUser ProcessScheduled ProcessScheduled ProcessCase ProcessCase ProcessRules ProcessRules Process
TransformationsTransformationsTransform into Web service Transform into Web service collaborationscollaborations
Build One Business Process Build One Business Process DSL?DSL?Build One Business Process Build One Business Process DSL?DSL?
AssessAssess DesigDesignn
ImplemenImplementt
PlanPlan RunRun
BusinessBusiness
ITIT
Strategic Strategic ObjectivesObjectives
Strategic Strategic ObjectivesObjectives
TechnologyTechnologyArchitectureArchitecture
TechnologyTechnologyArchitectureArchitecture
Business Processes Business Processes and Entitiesand Entities
Business Processes Business Processes and Entitiesand Entities
Logical Logical Data CenterData Center
Logical Logical Data CenterData Center
Physical Physical servers servers and segmentsand segments
Services, Messages, Services, Messages, Contracts, SchedulesContracts, Schedules
Services, Messages, Services, Messages, Contracts, SchedulesContracts, Schedules
XML, Database, Classes,XML, Database, Classes,CodeCode
XML, Database, Classes,XML, Database, Classes,CodeCode
Manual ProceduresManual ProceduresManual ProceduresManual Procedures
Huge Variation
Huge Variation
Few PlatformsFew Platforms
Building Applications With Building Applications With DSLsDSLsBuilding Applications With Building Applications With DSLsDSLs
Choose a specific aspect of overall Choose a specific aspect of overall developmentdevelopmentDefine a metamodel for the Define a metamodel for the abstractionsabstractions
OR OR extend an existing oneextend an existing one
Define a graphical notation Define a graphical notation Define a synchronization engine Define a synchronization engine Define PatternsDefine PatternsDefine AspectsDefine Aspects
Choose a specific aspect of overall Choose a specific aspect of overall developmentdevelopmentDefine a metamodel for the Define a metamodel for the abstractionsabstractions
OR OR extend an existing oneextend an existing one
Define a graphical notation Define a graphical notation Define a synchronization engine Define a synchronization engine Define PatternsDefine PatternsDefine AspectsDefine Aspects
AgendaAgendaAgendaAgenda
Complexity in Connected SystemsComplexity in Connected SystemsUsing Abstraction to Reduce Using Abstraction to Reduce ComplexityComplexityDomain Specific Languages and Domain Specific Languages and PatternsPatternsScenario 1 - Web Services & Design Scenario 1 - Web Services & Design for Operationsfor OperationsScenario 2 – Implementing Business Scenario 2 – Implementing Business ProcessesProcessesMicrosoft Strategy and Tools for Visual Microsoft Strategy and Tools for Visual Studio WhidbeyStudio Whidbey
Complexity in Connected SystemsComplexity in Connected SystemsUsing Abstraction to Reduce Using Abstraction to Reduce ComplexityComplexityDomain Specific Languages and Domain Specific Languages and PatternsPatternsScenario 1 - Web Services & Design Scenario 1 - Web Services & Design for Operationsfor OperationsScenario 2 – Implementing Business Scenario 2 – Implementing Business ProcessesProcessesMicrosoft Strategy and Tools for Visual Microsoft Strategy and Tools for Visual Studio WhidbeyStudio Whidbey
Making Use Of MetadataMaking Use Of MetadataMaking Use Of MetadataMaking Use Of Metadata
Metadata collected in DSLs can Metadata collected in DSLs can be made available across the be made available across the life cyclelife cycle
Source control systemsSource control systemsDebuggersDebuggersTesting ToolsTesting ToolsCompilers and language editorsCompilers and language editors
Metadata collected in DSLs can Metadata collected in DSLs can be made available across the be made available across the life cyclelife cycle
Source control systemsSource control systemsDebuggersDebuggersTesting ToolsTesting ToolsCompilers and language editorsCompilers and language editors
Enterprise Design ToolsEnterprise Design ToolsEnterprise Design ToolsEnterprise Design Tools
Build an initial set of model-driven development tools supporting DSLsBuild an initial set of model-driven development tools supporting DSLsFocused on specific development tasksFocused on specific development tasksWith hi-fidelity, continuously synchronized mappings to code or other modelsWith hi-fidelity, continuously synchronized mappings to code or other models
Expand and integrate model data throughout life cycle toolsExpand and integrate model data throughout life cycle toolsProductize and promote underlying tool-building frameworks and toolsProductize and promote underlying tool-building frameworks and tools
Build an initial set of model-driven development tools supporting DSLsBuild an initial set of model-driven development tools supporting DSLsFocused on specific development tasksFocused on specific development tasksWith hi-fidelity, continuously synchronized mappings to code or other modelsWith hi-fidelity, continuously synchronized mappings to code or other models
Expand and integrate model data throughout life cycle toolsExpand and integrate model data throughout life cycle toolsProductize and promote underlying tool-building frameworks and toolsProductize and promote underlying tool-building frameworks and tools
Goal: Simplify design and deployment of SOA’s
DSL’s Supported in DSL’s Supported in WhidbeyWhidbeyDSL’s Supported in DSL’s Supported in WhidbeyWhidbeyRich support for designing and constructing Rich support for designing and constructing
connected applications from Web servicesconnected applications from Web servicesDesigning WS for operational deploymentDesigning WS for operational deployment
Logical infrastructure requirements considered early – Logical infrastructure requirements considered early – inform and constrain developersinform and constrain developersVerify application settings against logical infrastructureVerify application settings against logical infrastructure
Rich support for designing and constructing Rich support for designing and constructing connected applications from Web servicesconnected applications from Web servicesDesigning WS for operational deploymentDesigning WS for operational deployment
Logical infrastructure requirements considered early – Logical infrastructure requirements considered early – inform and constrain developersinform and constrain developersVerify application settings against logical infrastructureVerify application settings against logical infrastructure
ReviewReviewReviewReview
Domain specific languages can help Domain specific languages can help reduce complexityreduce complexity
Domain-specific abstractionsDomain-specific abstractionsHolistic view of scattered conceptsHolistic view of scattered concepts
Microsoft is working to improve Web Microsoft is working to improve Web service design and deployment service design and deployment scenariosscenariosImplementing DSLs can be made Implementing DSLs can be made effective with the right underlying effective with the right underlying engineengineTool Extensibility is very importantTool Extensibility is very important
Domain specific languages can help Domain specific languages can help reduce complexityreduce complexity
Domain-specific abstractionsDomain-specific abstractionsHolistic view of scattered conceptsHolistic view of scattered concepts
Microsoft is working to improve Web Microsoft is working to improve Web service design and deployment service design and deployment scenariosscenariosImplementing DSLs can be made Implementing DSLs can be made effective with the right underlying effective with the right underlying engineengineTool Extensibility is very importantTool Extensibility is very important
Further InformationFurther InformationFurther InformationFurther InformationWhitepapers on MSDN, Visual Studio Whitepapers on MSDN, Visual Studio EnterpriseEnterprise
http://msdn.microsoft.com/vstudio/enterprisehttp://msdn.microsoft.com/vstudio/enterprise
Article by Steve Cook from Enterprise Tools Article by Steve Cook from Enterprise Tools Architect TeamArchitect Team
http://www.bptrends.com/publicationfiles/01-04%20COLhttp://www.bptrends.com/publicationfiles/01-04%20COL%20Dom%20Spec%20Modeling%20Frankel-Cook.pdf%20Dom%20Spec%20Modeling%20Frankel-Cook.pdf
Patterns & Practices on MSDNPatterns & Practices on MSDNhttp://msdn.microsoft.com/practices/type/patterns/http://msdn.microsoft.com/practices/type/patterns/
Software Factories: Assembling Software Factories: Assembling Applications with Languages, Patterns, Applications with Languages, Patterns, Frameworks and ToolsFrameworks and Tools
http://www.amazon.comhttp://www.amazon.com
Whitepapers on MSDN, Visual Studio Whitepapers on MSDN, Visual Studio EnterpriseEnterprise
http://msdn.microsoft.com/vstudio/enterprisehttp://msdn.microsoft.com/vstudio/enterprise
Article by Steve Cook from Enterprise Tools Article by Steve Cook from Enterprise Tools Architect TeamArchitect Team
http://www.bptrends.com/publicationfiles/01-04%20COLhttp://www.bptrends.com/publicationfiles/01-04%20COL%20Dom%20Spec%20Modeling%20Frankel-Cook.pdf%20Dom%20Spec%20Modeling%20Frankel-Cook.pdf
Patterns & Practices on MSDNPatterns & Practices on MSDNhttp://msdn.microsoft.com/practices/type/patterns/http://msdn.microsoft.com/practices/type/patterns/
Software Factories: Assembling Software Factories: Assembling Applications with Languages, Patterns, Applications with Languages, Patterns, Frameworks and ToolsFrameworks and Tools
http://www.amazon.comhttp://www.amazon.com
© 2004 Microsoft Corporation. All rights reserved.© 2004 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.