The document discusses an export control system project called ECS2 that was implemented for the Bulgarian government using open source tools and a business process management system (BPMS). It provides an overview of the project goals, challenges with the previous system, and the technologies selected for ECS2 including the JBoss application server, JBoss Messaging, jBPM BPMS, and frameworks like JSF, Hibernate and Seam.
We describe the model-driven implementation of the BG Export Control System phase 2 (ECS2):
• What is ECS2
• Tools and Technologies
• Data Model
• Model-Driven Generation
• System Architecture
• Business Process Modeling and BPMS
• XPath-based DSL (Assignments, Rules and Conditions)
• GUI Generation and Features
• Deployment Model
This document is Mohammed Attia Mohammed Farag's resume. It outlines his education, including a bachelor's degree in computer science and an ITI diploma. It details work experience as a business intelligence analyst and software developer. Technical skills include programming languages, databases, and development tools. Soft skills training areas are also listed. The resume aims to enhance skills for a career in system development and data warehousing.
This document provides an overview of the Spring framework, including:
- A brief history of Spring's development from 2002 to present.
- An overview of Spring's key features like lightweight containers, declarative transactions, and dependency injection.
- An explanation of Spring's layered architecture including presentation, service, and persistence layers.
- A discussion of why Spring was created to simplify enterprise application development and reduce complexity.
- An outline of Spring's various modules that can be selectively used in applications.
The document discusses designing a trading platform to be more extensible and evolve to support new asset classes. It recommends:
1) Representing data with XML to standardize structure and allow new attributes;
2) Implementing a service-oriented architecture with loose coupling between independently developed components;
3) Using a messaging system to facilitate communication instead of direct connections between components.
LinkedIn Data Infrastructure (QCon London 2012)Sid Anand
LinkedIn uses DataBus to replicate data changes from Oracle in real-time. DataBus consists of relay and bootstrap services that capture changes from Oracle and distribute them to various services like search indexes, graphs, and read replicas to keep them updated in real-time. This allows users to immediately see profile updates or new connections in search results and feeds.
This document discusses techniques for accelerating the adoption of cloud computing. It suggests running trials of cloud-based applications to showcase their benefits in terms of availability, reliability, location independence and cost savings. It also emphasizes the importance of addressing security concerns early in the process. The document advocates establishing a cloud governance policy and identifying objections and threats to mitigate risks. It stresses engaging operations, compliance and finance teams in the transition to gain their support beyond just the technical aspects.
The document is a resume for a Java/J2EE developer with over 15 years of experience designing and developing large enterprise applications using technologies like Java, J2EE, Spring, Hibernate, XML, and various middleware platforms. Some of the major projects listed include developing online banking applications, insurance systems, and portals. The resume highlights skills, achievements, and responsibilities on past projects to demonstrate a strong background in software architecture, design patterns, performance tuning, and leading development teams.
All across the Internet you will find references to solutions, offerings, and products that try to align with business process management (BPM) solutions.
Whether you’re a Business Analyst or in IT strategy, this session will illustrate how easy it is to model and automate business processes with modern BPM tools in the travel industry.
If you are talking to an airline, a baggage handler, a bookings agency or anyone in between, they all have one thing in common. They are dealing with complex business processes that often need to combine rules, events, resource planning, and processes.
You’ll take a deep look into several sample integration solutions for this industry, simulating a travel agency booking system with:
- Service integration
- Multiple tasks
- Complex BPM elements and
- Rule-based fraud detection for payment processing
- Disparate data source integration
- Microservice migration and integration with BPM
You will leave with an advanced overview of the capabilities of the Red Hat® JBoss® BPM Suite.
We describe the model-driven implementation of the BG Export Control System phase 2 (ECS2):
• What is ECS2
• Tools and Technologies
• Data Model
• Model-Driven Generation
• System Architecture
• Business Process Modeling and BPMS
• XPath-based DSL (Assignments, Rules and Conditions)
• GUI Generation and Features
• Deployment Model
This document is Mohammed Attia Mohammed Farag's resume. It outlines his education, including a bachelor's degree in computer science and an ITI diploma. It details work experience as a business intelligence analyst and software developer. Technical skills include programming languages, databases, and development tools. Soft skills training areas are also listed. The resume aims to enhance skills for a career in system development and data warehousing.
This document provides an overview of the Spring framework, including:
- A brief history of Spring's development from 2002 to present.
- An overview of Spring's key features like lightweight containers, declarative transactions, and dependency injection.
- An explanation of Spring's layered architecture including presentation, service, and persistence layers.
- A discussion of why Spring was created to simplify enterprise application development and reduce complexity.
- An outline of Spring's various modules that can be selectively used in applications.
The document discusses designing a trading platform to be more extensible and evolve to support new asset classes. It recommends:
1) Representing data with XML to standardize structure and allow new attributes;
2) Implementing a service-oriented architecture with loose coupling between independently developed components;
3) Using a messaging system to facilitate communication instead of direct connections between components.
LinkedIn Data Infrastructure (QCon London 2012)Sid Anand
LinkedIn uses DataBus to replicate data changes from Oracle in real-time. DataBus consists of relay and bootstrap services that capture changes from Oracle and distribute them to various services like search indexes, graphs, and read replicas to keep them updated in real-time. This allows users to immediately see profile updates or new connections in search results and feeds.
This document discusses techniques for accelerating the adoption of cloud computing. It suggests running trials of cloud-based applications to showcase their benefits in terms of availability, reliability, location independence and cost savings. It also emphasizes the importance of addressing security concerns early in the process. The document advocates establishing a cloud governance policy and identifying objections and threats to mitigate risks. It stresses engaging operations, compliance and finance teams in the transition to gain their support beyond just the technical aspects.
The document is a resume for a Java/J2EE developer with over 15 years of experience designing and developing large enterprise applications using technologies like Java, J2EE, Spring, Hibernate, XML, and various middleware platforms. Some of the major projects listed include developing online banking applications, insurance systems, and portals. The resume highlights skills, achievements, and responsibilities on past projects to demonstrate a strong background in software architecture, design patterns, performance tuning, and leading development teams.
All across the Internet you will find references to solutions, offerings, and products that try to align with business process management (BPM) solutions.
Whether you’re a Business Analyst or in IT strategy, this session will illustrate how easy it is to model and automate business processes with modern BPM tools in the travel industry.
If you are talking to an airline, a baggage handler, a bookings agency or anyone in between, they all have one thing in common. They are dealing with complex business processes that often need to combine rules, events, resource planning, and processes.
You’ll take a deep look into several sample integration solutions for this industry, simulating a travel agency booking system with:
- Service integration
- Multiple tasks
- Complex BPM elements and
- Rule-based fraud detection for payment processing
- Disparate data source integration
- Microservice migration and integration with BPM
You will leave with an advanced overview of the capabilities of the Red Hat® JBoss® BPM Suite.
Mihai Nuta has over 14 years of experience developing computer systems and applications. He has extensive experience with technologies like Visual Basic, SQL, Oracle, and .NET. Currently he works as a senior programmer analyst at Xerox Corporation developing applications for General Motors, including a legal document application and tools for processing images and documents. He has strong skills in databases, web and client/server development, and software like Microsoft Office, SQL Server, and Visual Studio.
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiSoftware Guru
This document discusses the evolution of the Java platform and what it means for developers. It outlines new features in Java 7 and 8, including Project Coin improvements to the language, modularity in JDK 8, and enhancements to the Java EE platform like support for clouds. It also discusses Oracle's strategy of converging the JDK and JRockit to deliver performance and manageability features.
- Umashankar Adha has over 9 years of experience in system analysis, development, testing and maintenance using Java technologies like J2EE, JSP, Struts, EJB, and frameworks like Spring and Hibernate.
- He has strong skills in distributed systems, web services, databases, application servers and agile methodologies. He has worked on projects in domains like e-mail systems, hotel reservations, and invoice processing.
- His current role involves designing solutions and managing resources for large scale distributed projects handling high volumes of data and users, including one project with over 100 million consumers.
Lessons Learned from Real-World Deployments of Java EE 7 at JavaOne 2014Arun Gupta
This document discusses lessons learned from real-world deployments of Java EE 7. Key points include increased developer productivity through features like batch processing, concurrency, simplified JMS, more annotated POJOs, and a cohesive integrated platform. Specific technologies used include JSON, WebSockets, Servlet 3.1 NIO, and REST. Real-world examples of implementations include an application for a UN agency to support refugees and a running social network application for runners.
This document discusses Project Amaterasu, a tool for simplifying the deployment of big data applications. Amaterasu uses Mesos to deploy Spark jobs and other frameworks across clusters. It defines workflows, actions, and environments in YAML and JSON files. Workflows contain a series of actions like Spark jobs. Actions are written in Scala and interface with Amaterasu's context. Environments configure settings for different clusters. Amaterasu aims to improve collaboration and testing for big data teams through continuous integration and deployment of data pipelines.
G.V. Shyam Kumar has over 9 years of experience in Java/J2EE development, Spring Boot, microservices, and agile methodologies. He has worked in banking, healthcare, and retail domains as a developer, tech lead, and solution architect. His skills include Java, Spring, cloud technologies, databases, web services, and agile practices. He is currently a senior associate at Cognizant working on migrating applications to Pivotal Cloud Foundry.
This document outlines an online global job training and career network application created by a team of students. It includes an introduction to the project, the system architecture, tools and technologies used, modules of the application including main admin, company, training center, support center, and investor, security measures, milestones, and roles and responsibilities of team members. The overall purpose is to create a web application that connects companies, training schools, and a support center and allows users to view statistics, generate reports, and securely access and modify database information.
Michael Luther is a principal Java developer and architect based in Cary, NC with over 30 years of experience. He has worked as a team lead and managed software development projects using Agile and Scrum methodologies. His technical skills include Java, J2EE, databases like Oracle and MySQL, and development tools like Eclipse.
Ketan Shah is a mainframe professional with 23 years of experience working on projects for banks, insurance companies, and other industries. He has extensive experience with IBM mainframe technologies like COBOL, CICS, DB2, and others. He has worked as a technical lead on many projects involving requirements gathering, design, development, testing and implementation. Ketan also has experience with client/server technologies like Java, .NET, XML, and web services. He is proficient in all phases of the software development lifecycle.
This document discusses ideas and technologies for building scalable software systems and processing big data. It covers:
1. Bi-modal distribution of developers shapes architecture/design and the need for loosely/tightly coupled code.
2. Internet companies like Google and Facebook innovate at large scale using open source tools and REST architectures.
3. A REST architecture allows scalability, extensible development, and integration of tools/ideas from the internet for non-internet applications.
Meetup. Technologies Intro for Non-Tech PeopleIT Arena
This document provides an introduction to programming terminology, concepts, and technologies for non-technical people. It outlines a training on software development lifecycles, engagement models, business domains, major programming languages, frameworks, and technologies. Key terms from front-end and back-end development, databases, DevOps, data science, and mobile apps are defined. Popular languages, frameworks, and platforms are compared, along with ratings of language popularity. Quality control techniques are briefly introduced.
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!Teamstudio
Using XPages out of the box lets you build good-looking and well-performing applications. As XPage applications become bigger and more complex, performance can become an issue. There are several ways to improve scalability and performance that you should take into consideration. In this webinar, learn how to use partial refresh and partial execution mode and how to monitor its execution using a JSFLifeCycle monitor to avoid multiple re-calculations. See how readily available tools from OpenNTF will allow you to profile and analyze your code to improve the speed of your applications. Using Server Side Java Script and encountering a significant slow down when using Script Libraries? Learn how you can improve the speed of your application using JAVA instead of JavaScript, JSON and even @formulas.
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...Javier García Magna
Good technical practices you can follow with (micro)services but can be applied to almost anything: discovery (microphone/consul), security, resilience (polly), composition, ssecurity (jwt/oauth2)... And then an example with a CQRS application, and how docker can be used in Windows 2016. Lastly a brief summary of what Service Fabric is and its programming models.
New developers and teams are now polyglot :
- they use multiple programming languages (Java, Javascript, Ruby, ...)
- they use multiple persistence store (RDBMS, NoSQL, Hadoop)
In this talk you will learn about the benefits if being polyglot: use the good language or framework for the good cause, select the good persistence for specific constraints.
This presentation will show how developer could mix the Java platform with other technologies such as NodeJS and AngularJS to build application in a more productive way. This is also the opportunity to talk about the new Command Query Responsibility Segregation (CQRS) pattern to allow developers to be more effective and deliver the proper application to the user quicker.
This presentation was delivered during Devfest Nantes 2014
SARADA OJHA is a software engineer with expertise in Java development and front-end technologies. She has experience developing software for smart metering and utility management systems, including work on meter plugins, data collection services, and reporting tools. Her skills include Java, C/C++, SQL, XML, JavaScript, and Agile methodologies. She is proficient in protocols like OSGP, DLMS, and standards including IS 13779 and IS 15959.
Mukesh Mishra has over 12 years of experience in software development and testing using technologies like Java/J2EE and Struts. He has worked on projects in various industries for companies like perfTech Solutions, iTG Software Engineering, and SRP Infosystems. His technical skills include Java, .NET, SQL, Struts, and he has experience working with IBM Sterling Order Management, IBM i2, and IBM Sterling B2B Integrator. He is currently working as a senior consultant at perfTech Solutions in Bangalore.
"Semantic Integration Is What You Do Before The Deep Learning". dev.bg Machine Learning seminar, 13 May 2019.
It's well known that 80\% of the effort of a data scientist is spent on data preparation. Semantic integration is arguably the best way to spend this effort more efficiently and to reuse it between tasks, projects and organizations. Knowledge Graphs (KG) and Linked Open Data (LOD) have become very popular recently. They are used by Google, Amazon, Bing, Samsung, Springer Nature, Microsoft Academic, AirBnb… and any large enterprise that would like to have a holistic (360 degree) view of its business. The Semantic Web (web 3.0) is a way to build a Giant Global Graph, just like the normal web is a Global Web of Documents. IEEE already talks about Big Data Semantics. We review the topic of KGs and their applicability to Machine Learning.
The Galleries, Libraries, Archives and Museums (GLAM) sector deals with complex and varied data. Integrating that data, especially across institutions, has always been a challenge. Semantic data integration is the best approach to deal with such challenges. Linked Open Data (LOD) enable large-scale Digital Humanities (DH) research, collaboration and aggregation, allowing DH researchers to make connections between (and make sense of) the multitude of digitized Cultural Heritage (CH) available on the web. An upsurge of interest in semtech and LOD has swept the CH and DH communities. An active Linked Open Data for Libraries, Archives and Museums (LODLAM) community exists, CH data is published as LOD, and international collaborations have emerged. The value of LOD is especially high in the GLAM sector, since culture by its very nature is cross-border and interlinked. We present interesting LODLAM projects, datasets, and ontologies, as well as Ontotext's experience in this domain. An extended paper on these topics is also available. It has 77 pages, 67 figures, detailed info about CH content and XML standards, Wikidata and global authority control.
More Related Content
Similar to Implementing complex e-Government solutions with open source and BPM: Architecture of Export Control System phase 2 (ECS2)
Mihai Nuta has over 14 years of experience developing computer systems and applications. He has extensive experience with technologies like Visual Basic, SQL, Oracle, and .NET. Currently he works as a senior programmer analyst at Xerox Corporation developing applications for General Motors, including a legal document application and tools for processing images and documents. He has strong skills in databases, web and client/server development, and software like Microsoft Office, SQL Server, and Visual Studio.
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiSoftware Guru
This document discusses the evolution of the Java platform and what it means for developers. It outlines new features in Java 7 and 8, including Project Coin improvements to the language, modularity in JDK 8, and enhancements to the Java EE platform like support for clouds. It also discusses Oracle's strategy of converging the JDK and JRockit to deliver performance and manageability features.
- Umashankar Adha has over 9 years of experience in system analysis, development, testing and maintenance using Java technologies like J2EE, JSP, Struts, EJB, and frameworks like Spring and Hibernate.
- He has strong skills in distributed systems, web services, databases, application servers and agile methodologies. He has worked on projects in domains like e-mail systems, hotel reservations, and invoice processing.
- His current role involves designing solutions and managing resources for large scale distributed projects handling high volumes of data and users, including one project with over 100 million consumers.
Lessons Learned from Real-World Deployments of Java EE 7 at JavaOne 2014Arun Gupta
This document discusses lessons learned from real-world deployments of Java EE 7. Key points include increased developer productivity through features like batch processing, concurrency, simplified JMS, more annotated POJOs, and a cohesive integrated platform. Specific technologies used include JSON, WebSockets, Servlet 3.1 NIO, and REST. Real-world examples of implementations include an application for a UN agency to support refugees and a running social network application for runners.
This document discusses Project Amaterasu, a tool for simplifying the deployment of big data applications. Amaterasu uses Mesos to deploy Spark jobs and other frameworks across clusters. It defines workflows, actions, and environments in YAML and JSON files. Workflows contain a series of actions like Spark jobs. Actions are written in Scala and interface with Amaterasu's context. Environments configure settings for different clusters. Amaterasu aims to improve collaboration and testing for big data teams through continuous integration and deployment of data pipelines.
G.V. Shyam Kumar has over 9 years of experience in Java/J2EE development, Spring Boot, microservices, and agile methodologies. He has worked in banking, healthcare, and retail domains as a developer, tech lead, and solution architect. His skills include Java, Spring, cloud technologies, databases, web services, and agile practices. He is currently a senior associate at Cognizant working on migrating applications to Pivotal Cloud Foundry.
This document outlines an online global job training and career network application created by a team of students. It includes an introduction to the project, the system architecture, tools and technologies used, modules of the application including main admin, company, training center, support center, and investor, security measures, milestones, and roles and responsibilities of team members. The overall purpose is to create a web application that connects companies, training schools, and a support center and allows users to view statistics, generate reports, and securely access and modify database information.
Michael Luther is a principal Java developer and architect based in Cary, NC with over 30 years of experience. He has worked as a team lead and managed software development projects using Agile and Scrum methodologies. His technical skills include Java, J2EE, databases like Oracle and MySQL, and development tools like Eclipse.
Ketan Shah is a mainframe professional with 23 years of experience working on projects for banks, insurance companies, and other industries. He has extensive experience with IBM mainframe technologies like COBOL, CICS, DB2, and others. He has worked as a technical lead on many projects involving requirements gathering, design, development, testing and implementation. Ketan also has experience with client/server technologies like Java, .NET, XML, and web services. He is proficient in all phases of the software development lifecycle.
This document discusses ideas and technologies for building scalable software systems and processing big data. It covers:
1. Bi-modal distribution of developers shapes architecture/design and the need for loosely/tightly coupled code.
2. Internet companies like Google and Facebook innovate at large scale using open source tools and REST architectures.
3. A REST architecture allows scalability, extensible development, and integration of tools/ideas from the internet for non-internet applications.
Meetup. Technologies Intro for Non-Tech PeopleIT Arena
This document provides an introduction to programming terminology, concepts, and technologies for non-technical people. It outlines a training on software development lifecycles, engagement models, business domains, major programming languages, frameworks, and technologies. Key terms from front-end and back-end development, databases, DevOps, data science, and mobile apps are defined. Popular languages, frameworks, and platforms are compared, along with ratings of language popularity. Quality control techniques are briefly introduced.
The Autobahn Has No Speed Limit - Your XPages Shouldn't Either!Teamstudio
Using XPages out of the box lets you build good-looking and well-performing applications. As XPage applications become bigger and more complex, performance can become an issue. There are several ways to improve scalability and performance that you should take into consideration. In this webinar, learn how to use partial refresh and partial execution mode and how to monitor its execution using a JSFLifeCycle monitor to avoid multiple re-calculations. See how readily available tools from OpenNTF will allow you to profile and analyze your code to improve the speed of your applications. Using Server Side Java Script and encountering a significant slow down when using Script Libraries? Learn how you can improve the speed of your application using JAVA instead of JavaScript, JSON and even @formulas.
.Net Microservices with Event Sourcing, CQRS, Docker and... Windows Server 20...Javier García Magna
Good technical practices you can follow with (micro)services but can be applied to almost anything: discovery (microphone/consul), security, resilience (polly), composition, ssecurity (jwt/oauth2)... And then an example with a CQRS application, and how docker can be used in Windows 2016. Lastly a brief summary of what Service Fabric is and its programming models.
New developers and teams are now polyglot :
- they use multiple programming languages (Java, Javascript, Ruby, ...)
- they use multiple persistence store (RDBMS, NoSQL, Hadoop)
In this talk you will learn about the benefits if being polyglot: use the good language or framework for the good cause, select the good persistence for specific constraints.
This presentation will show how developer could mix the Java platform with other technologies such as NodeJS and AngularJS to build application in a more productive way. This is also the opportunity to talk about the new Command Query Responsibility Segregation (CQRS) pattern to allow developers to be more effective and deliver the proper application to the user quicker.
This presentation was delivered during Devfest Nantes 2014
SARADA OJHA is a software engineer with expertise in Java development and front-end technologies. She has experience developing software for smart metering and utility management systems, including work on meter plugins, data collection services, and reporting tools. Her skills include Java, C/C++, SQL, XML, JavaScript, and Agile methodologies. She is proficient in protocols like OSGP, DLMS, and standards including IS 13779 and IS 15959.
Mukesh Mishra has over 12 years of experience in software development and testing using technologies like Java/J2EE and Struts. He has worked on projects in various industries for companies like perfTech Solutions, iTG Software Engineering, and SRP Infosystems. His technical skills include Java, .NET, SQL, Struts, and he has experience working with IBM Sterling Order Management, IBM i2, and IBM Sterling B2B Integrator. He is currently working as a senior consultant at perfTech Solutions in Bangalore.
Similar to Implementing complex e-Government solutions with open source and BPM: Architecture of Export Control System phase 2 (ECS2) (20)
"Semantic Integration Is What You Do Before The Deep Learning". dev.bg Machine Learning seminar, 13 May 2019.
It's well known that 80\% of the effort of a data scientist is spent on data preparation. Semantic integration is arguably the best way to spend this effort more efficiently and to reuse it between tasks, projects and organizations. Knowledge Graphs (KG) and Linked Open Data (LOD) have become very popular recently. They are used by Google, Amazon, Bing, Samsung, Springer Nature, Microsoft Academic, AirBnb… and any large enterprise that would like to have a holistic (360 degree) view of its business. The Semantic Web (web 3.0) is a way to build a Giant Global Graph, just like the normal web is a Global Web of Documents. IEEE already talks about Big Data Semantics. We review the topic of KGs and their applicability to Machine Learning.
The Galleries, Libraries, Archives and Museums (GLAM) sector deals with complex and varied data. Integrating that data, especially across institutions, has always been a challenge. Semantic data integration is the best approach to deal with such challenges. Linked Open Data (LOD) enable large-scale Digital Humanities (DH) research, collaboration and aggregation, allowing DH researchers to make connections between (and make sense of) the multitude of digitized Cultural Heritage (CH) available on the web. An upsurge of interest in semtech and LOD has swept the CH and DH communities. An active Linked Open Data for Libraries, Archives and Museums (LODLAM) community exists, CH data is published as LOD, and international collaborations have emerged. The value of LOD is especially high in the GLAM sector, since culture by its very nature is cross-border and interlinked. We present interesting LODLAM projects, datasets, and ontologies, as well as Ontotext's experience in this domain. An extended paper on these topics is also available. It has 77 pages, 67 figures, detailed info about CH content and XML standards, Wikidata and global authority control.
This document provides an overview of linked open data (LOD), ontologies, and cultural heritage projects and datasets. It begins with definitions of semantic technologies, ontologies, and LOD. It then discusses several key ontologies used for cultural heritage data, including CIDOC CRM, Schema.org, and Wikidata. The document outlines several LOD projects focused on cultural heritage, including Europeana, ResearchSpace, American Art Collaborative, and ConservationSpace. It provides examples of semantic searches and annotations using these ontologies and projects. In summary, the document introduces the concepts of LOD and relevant ontologies, and highlights several major cultural heritage projects that apply these semantic technologies.
Invited report at Digital Presentation and Preservation of Cultural and Scientific Heritage (DIPP 2018), Burgas, Bulgaria. Report: http://dipp.math.bas.bg/images/2018/019-050_32_11-iDiPP2018-34.pdf
Ontotext provides concise summaries in 3 sentences or less that provide the high level and essential information from the document.
Ontotext is a software company that works on semantic technologies and knowledge graphs for cultural heritage and digital humanities projects. They have developed applications like ResearchSpace for museums and ConservationSpace for conservation specialists. They also contribute linked open data to projects like Europeana, Wikidata, and DBpedia and provide consulting services to institutions like museums and national aggregators.
Semantic Archive Integration for Holocaust Research: the EHRI Research Infras...Vladimir Alexiev, PhD, PMP
The European Holocaust Research Infrastructure (EHRI) is a large-scale EU project that involves 23 institutions and archives working on Holocaust studies, from Europe, Israel and the US. In its first phase (2011-2015) it aggregated archival descriptions and materials on a large scale and built a Virtual Research Environment (portal) for Holocaust researchers based on a graph database.
In its second phase (2015-2019), EHRI2 seeks to enhance the gathered materials using semantic approaches: enrichment, coreferencing, interlinking. Semantic integration involves four of the 14 EHRI2 work packages and helps integrate databases, free text, and metadata to interconnect historical entities (people, organizations, places, historic events) and create networks. We will present some of the EHRI2 technical work, including critical issues we have encountered.
WP10 (EAD) converts archival descriptions from various formats to standard EAD XML; transports EADs using OAI PMH or ResourceSync; ingests EADs to the EHRI database; enables use cases such as synchronization; coreferencing of textual Access Points to proper thesaurus references
WP11 (Authorities and Standards) consolidates and enlarges the EHRI authorities to render the indexing and retrieval of information more effective. It addresses Access Points in ingested EADs (normalization of Unicode, spelling, punctuation; deduplication; clustering; coreferencing to authority control), Subjects (deployment of a Thesaurus Management System in support of the EHRI Thesaurus Editorial Board), Places (coreferencing to Geonames); Camps and Ghettos (integrating data with Wikidata); Persons, Corporate Bodies (using USHMM HSV and VIAF); semantic (conceptual) search including hierarchical query expansion; interconnectivity of archival descriptions; permanent URLs; metadata quality; EAD RelaxNG and Schematron schemas and validation, etc.
WP13 (Data Infrastructures) builds up domain knowledge bases from institutional databases by using deduplication, semantic data integration, semantic text analysis. It provides the foundation for research use cases on Jewish Social Networks and their impact on the chance of survival.
WP14 (Digital Historiography Research) works on semantic text analysis (semantic enrichment), text similarity (e.g. clustering based on Neural Networks, LDA, etc), geo-mapping. It develops Digital Historiography researcher tools, including Prosopographical approaches.
How GLAMs can use Wikipedia/Wikidata to make their collections globally accessible across languages.
Europeana Food and Drink content providers workshop, Athens, 18 May 2015
Wikidata is being considered as a target for Europeana's semantic strategy to enrich metadata and link cultural heritage objects. Wikidata provides multilingual information on entities like people, organizations, places and concepts from Wikipedia. It has potential to help solve Europeana's challenges around data diversity, quality and interlinking due to its connections to other vocabularies and ability to perform automatic enrichment. Europeana aims to semantically enrich its data and link objects to Wikidata entities to provide additional context. Content providers are also encouraged to contribute information to Wikidata to further enhance the semantic knowledge graph.
Europeana Food and Drink annual meeting, 20 Mar 2015, Athens, Greece. Full report: http://vladimiralexiev.github.io/pubs/Europeana-Food-and-Drink-Classification-Scheme-(D2.2).pdf
Information School, University of Washington, 2014-05-21: INFX 598 - Introducing Linked Data: concepts, methods and tools. Guest lecture (Module 9) "Doing Business with Semantic Technologies": Introduction to Ontotext and some of its products, clients and projects.
Also see video:https://voicethread.com/myvoice/#thread/5784646/29625471/31274564
Triplestores and inference, applications in Finance, text-mining. Projects and solutions for financial media and publishers.
Keystone Industrial Panel, ISWC 2014, Riva del Garda, 18 Oct 2014.
Thanks to Atanas Kiryakov for this presentation, I just cut it to size.
Full version of http://www.slideshare.net/valexiev1/gvp-lodcidocshort. Same is available on http://vladimiralexiev.github.io/pres/20140905-CIDOC-GVP/index.html
CIDOC Congress, Dresden, Germany
2014-09-05: International Terminology Working Group: full version.
2014-09-09: Getty special session: short version
CIDOC Congress, Dresden, Germany
2014-09-05: International Terminology Working Group: full version (http://vladimiralexiev.github.io/pres/20140905-CIDOC-GVP/index.html)
2014-09-09: Getty special session: short version (http://VladimirAlexiev.github.io/pres/20140905-CIDOC-GVP/GVP-LOD-CIDOC-short.pdf)
This document discusses semantic technologies for cultural heritage. It introduces Ontotext Corp, which develops semantic technology, and some of their projects involving cultural heritage data. These include the ResearchSpace project with the British Museum, projects involving Europeana like Bulgariana and Europeana Creative, and publishing Getty vocabularies as linked open data.
Nikola Ikonomov, Boyan Simeonov, Jana Parvanova and Vladimir Alexiev. In Digital Presentation and Preservation of Cultural and Scientific Heritage (DiPP 2013), Veliko Tarnovo, Bulgaria, Sep 2013.
Nikola Ikonomov, Boyan Simeonov, Jana Parvanova and Vladimir Alexiev. In Digital Presentation and Preservation of Cultural and Scientific Heritage (DiPP 2013), Veliko Tarnovo, Bulgaria, Sep 2013
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Trusted Execution Environment for Decentralized Process MiningLucaBarbaro3
Presentation of the paper "Trusted Execution Environment for Decentralized Process Mining" given during the CAiSE 2024 Conference in Cyprus on June 7, 2024.
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfChart Kalyan
A Mix Chart displays historical data of numbers in a graphical or tabular form. The Kalyan Rajdhani Mix Chart specifically shows the results of a sequence of numbers over different periods.
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
Dive into the realm of operating systems (OS) with Pravash Chandra Das, a seasoned Digital Forensic Analyst, as your guide. 🚀 This comprehensive presentation illuminates the core concepts, types, and evolution of OS, essential for understanding modern computing landscapes.
Beginning with the foundational definition, Das clarifies the pivotal role of OS as system software orchestrating hardware resources, software applications, and user interactions. Through succinct descriptions, he delineates the diverse types of OS, from single-user, single-task environments like early MS-DOS iterations, to multi-user, multi-tasking systems exemplified by modern Linux distributions.
Crucial components like the kernel and shell are dissected, highlighting their indispensable functions in resource management and user interface interaction. Das elucidates how the kernel acts as the central nervous system, orchestrating process scheduling, memory allocation, and device management. Meanwhile, the shell serves as the gateway for user commands, bridging the gap between human input and machine execution. 💻
The narrative then shifts to a captivating exploration of prominent desktop OSs, Windows, macOS, and Linux. Windows, with its globally ubiquitous presence and user-friendly interface, emerges as a cornerstone in personal computing history. macOS, lauded for its sleek design and seamless integration with Apple's ecosystem, stands as a beacon of stability and creativity. Linux, an open-source marvel, offers unparalleled flexibility and security, revolutionizing the computing landscape. 🖥️
Moving to the realm of mobile devices, Das unravels the dominance of Android and iOS. Android's open-source ethos fosters a vibrant ecosystem of customization and innovation, while iOS boasts a seamless user experience and robust security infrastructure. Meanwhile, discontinued platforms like Symbian and Palm OS evoke nostalgia for their pioneering roles in the smartphone revolution.
The journey concludes with a reflection on the ever-evolving landscape of OS, underscored by the emergence of real-time operating systems (RTOS) and the persistent quest for innovation and efficiency. As technology continues to shape our world, understanding the foundations and evolution of operating systems remains paramount. Join Pravash Chandra Das on this illuminating journey through the heart of computing. 🌟
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
Ocean lotus Threat actors project by John Sitima 2024 (1).pptxSitimaJohn
Ocean Lotus cyber threat actors represent a sophisticated, persistent, and politically motivated group that poses a significant risk to organizations and individuals in the Southeast Asian region. Their continuous evolution and adaptability underscore the need for robust cybersecurity measures and international cooperation to identify and mitigate the threats posed by such advanced persistent threat groups.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on automated letter generation for Bonterra Impact Management using Google Workspace or Microsoft 365.
Interested in deploying letter generation automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
leewayhertz.com-AI in predictive maintenance Use cases technologies benefits ...alexjohnson7307
Predictive maintenance is a proactive approach that anticipates equipment failures before they happen. At the forefront of this innovative strategy is Artificial Intelligence (AI), which brings unprecedented precision and efficiency. AI in predictive maintenance is transforming industries by reducing downtime, minimizing costs, and enhancing productivity.
This presentation provides valuable insights into effective cost-saving techniques on AWS. Learn how to optimize your AWS resources by rightsizing, increasing elasticity, picking the right storage class, and choosing the best pricing model. Additionally, discover essential governance mechanisms to ensure continuous cost efficiency. Whether you are new to AWS or an experienced user, this presentation provides clear and practical tips to help you reduce your cloud costs and get the most out of your budget.
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
Digital Marketing Trends in 2024 | Guide for Staying AheadWask
https://www.wask.co/ebooks/digital-marketing-trends-in-2024
Feeling lost in the digital marketing whirlwind of 2024? Technology is changing, consumer habits are evolving, and staying ahead of the curve feels like a never-ending pursuit. This e-book is your compass. Dive into actionable insights to handle the complexities of modern marketing. From hyper-personalization to the power of user-generated content, learn how to build long-term relationships with your audience and unlock the secrets to success in the ever-shifting digital landscape.
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Implementing complex e-Government solutions with open source and BPM: Architecture of Export Control System phase 2 (ECS2)
1. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 1
Implementing complex e-Government
solutions with open source and BPM
Export Control System phase 2 (ECS2)
Sirma Solutions & Sirma ITT
Vladimir Alexiev Adrian Mitev Alexander Bukev
PM & Analyst Web TL Web Dev
Java2Days Conference, 8.10.2009
2. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 2
Outline
• Who We Are
• What is ECS2
• Tools and Technologies
• Data Model
• Model-Driven Generation
• System Architecture
• Business Process Modeling and BPMS
• XPath-based DSL (Assignments, Rules and Conditions)
• GUI Generation and Features
• Deployment Model
4. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 4
Who Are We (Company)
• Sirma Group Holding is one of the largest private Bulgarian software development
and IT consulting holdings
• 17 years of history, 400 staff, 9 daughter companies, 5 JVs. Offices in 5 Bulgarian cities
and 3 overseas. See more at www.sirma.bg (BG), www.sirma.com (EN)
• Sirma Solutions Corp is the backbone of Sirma
• 150 staff, government and private projects, outsourced development, incubation of new
ideas and units. Inherited Sirma's history and goodwill at corporate reorganization (when
holding was setup)
• Sirma ITT specializes in complex e-Government projects
• 5 years of history, 40 staff (Ruse 30, Sofia 8, Varna 2), young (average age 23), one of the
few BG companies who raises its own staff.
• Focus on JEE, SOA, BPM, RUP, UML.
• Sirma bought ITT in late 2007 to add its experience and management practices
• Several joint projects in the customs/excise area
• Teams shared between Solutions and ITT and fully integrated
5. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 5
Who Are We (Authors)
• Vladimir Alexiev is a Sirma Group founder and CTO of Sirma ITT / Sirma Solutions. He has
MS and PhD degrees in computer science, PMP certification and 18 years of IT experience.
Having returned home after 12 years in Canada, his dream is to see effective IT use, efficient
eGovernment and less corruption in Bulgaria. He is currently trying to start up a Sirma IT
Consulting unit.
• Adrian Mitev is Web team lead at Sirma ITT. He has 8 years of experience with Object-
Oriented languages, the last 4 specializing in Java front-end development. He contributes to
open source projects JBoss Richfaces, Apache MyFaces, Apache Shale and JBoss Tools.
Current interests include new technologies in the JEE6 stack JSF2 (JSR-314), CDI (JSR-299),
Bean Validation (JSR-303) and JPA2 (JSR-317).
• Alexander Bukev is a Web developer at Sirma ITT. From early childhood his computer
experience went through BASIC, C, ASM and embedded systems, then more recently, object-
oriented programming and innovative web-based GUI using JSF and Seam. Special interests
include innovations in user experience, usability, intuitive interactive GUIs, code optimization
and redundant/failsafe systems.
• Vladimir and Adrian are lecturing in the MS Software Engineering programs sponsored by
Sirma at University of Ruse and Varna Free University.
• Alexander and 6 other Sirma ITT staff are graduating in the MS SwEng program
6. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 6
What is ECS2
7. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 7
What is ECS2?
• Trans-European system involving 31 countries
• Coordinated by DG Taxation and Customs Union (TAXUD)
• Client: Bulgarian Customs Administration (BCA)
• Strict timeline. "Only" 6 countries were late. BG ECS2 was deployed on time on 1 July 2009
• 11 months from start to production (some national functionalities finished 3m later)
• Including Conformance Testing with EC (and fixing bugs in the CT!), deployment and training with BCA
• Used intensively: currently handles 80-100,000 export movements (500,000 messages) per month.
• Users: 3500 customs officers, 200,000 potential traders
• Bulgarian Industrial Association is teaching traders how to use Electronic Declaration (paid trainings)
• Large project: 45 message types averaging 100 fields each, 50 Elementary Business Processes (EBP), 30
man/years effort. Subsystems:
• ECS2 Core : message processing (in/outflow), business process, persistence
• ECS2 Web: customs officers data view/entry
• DTI B2B: Direct Trader Interface for system-to-system electronic declaration processing
• DTI Web: trader portal for interactive entry of electronic declarations (manual or XML from file)
• Messaging: EU (CCN/CSI communication, Redix), DTI (db/webservices), BICIS (webservices)
• Routing between ECS1 and ECS2 (complex transition period!)
• Processing Reference Data, Customs Office List, Unavailability (RD/COL/UNA)
• External system integration (BICIS, CAS, RA, SDM, EORI/AEO, TARIC, other gov agencies)
• Printing (Single Administrative Document), Reporting
• Administration (Core and DTI)
8. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 8
The legacy: ECS1
• Executed during 2006-2007, deployed in Jul 2007
• Big problems with project organization and software architecture
• System development continued for 14 months after deployment, some parts never deployed
• Big problems with stability, performance and bugs.
• Problems with the tools used
• IBM Process Server: heavy XML munching leading to bad performance
• Therefore no long-running processes and human tasks used à used as a data flow engine, not a real
BPMS
• IBM Message Broker: used only for XML-XML conversion à not worth the overhead
• Architecture is not modular
• Disparate technologies used for Core and DTI, different GUI technologies
• All message munching is left to Process Server (Websphere Integration Developer)
• Common steps such as validation, object construction, etc are not modularized
• 50 disparate processes ("phases") of ~40 steps each: huge complexity, no reuse
à Impossible to modify or extend
• ITT was subcontractor, so we knew the business and all problems first-hand
9. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 9
How do you approach this?
• Immediately (first 3 months) ran an architectural pilot
• Took the hard decision to rewrite ECS1 (supported by client), instead of trying to build on
a shaky foundation
• Evaluated IBM vs open source
• Picking tools was the "easy part": trust nothing, try everything, be modern but not
bleeding edge
• Finding the architectural approach was the hard part:
• Too complex data à generation of as many artifacts as possible is key to consistent
implementation.
• Too much data à share sub-objects, copy/pass references only
• Share data beans (stateful Hibernate session) between all core components
• Too much processing à strict code modularization and factoring
• All process-independent steps are done outside of the BPMS
• Screens are reused between core and DTI systems as much as possible
• Too many Rules & Conditions (250, revised daily) à invented XPath based DSL, the
same R&C are used in offline and GUI interactive validation
• Complex processes (and some unclear/buggy TAXUD specs) à design processes
visually, clarify with client numerous times, implement in BPMS
10. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 10
Tools and
Technologies
11. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 11
• Servers • Frameworks/libraries
• JBoss AS 5.0.1: application server • JBoss Seam 2.1: application
• JBoss Messaging: message queuing framework, IoC container
• jBPM 3.3: business process execution • EJB 3.0: object model
• Informix Dynamic Server 10 FC8: database • JPA/Hibernate 3.3.2: persistence
server (client requirement) and O/R mapping
• Tools • JSF 1.2: web framework
• JBoss Tools 3.0: development IDE • Facelets: JSF templating engine
• Hudson: continuous integration • RichFaces 3.3: JSF AJAX library
• CheckStyle: static analysis, coding conventions • JiBX 1.1: XML/Java binding
(serialization/deserialization)
• Subversion source control, EclipseSVN
• Dozer 4.4.1: object graph cloning
• TestNG 5.8: unit testing
(deep copy), used sparingly
• DBUnit: database testing
• JXPath 1.2: DSL for message
• MS Project: planning assignments, R&C validation
• Jira: task tracking • Saxon 9: XSLT transformations
• Visio: process modeling • Jasper reports 3.1.3: reporting,
• Word: specification writing printing Single Admin Doc
• Wiki: engineering notes / collaboration • Log4J: structured logging
12. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 12
Data Model
13. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 13
What’s in the Data? (complexity)
• BG515B Export Declaration has 220 fields/groups like those below, nested 4 levels
(header, shipment, goods item, package/container/document, 10 kinds of traders)
• Columns: EN name, requiredness, type/repeatability, R&C, codelist, XML tag, Box number in paper
document, BG name (label), BG description (tooltip)
• 45 messages averaging about 100 fields/groups each.
• Imagine 220 chunks of fields like the one below! 150 printed pages
14. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 14
Commonality in Data (Factoring)
• BG515B (declaration) and BG513B (amendment) differ by only 1%: 3 tag names
(meaning is the same), order of 2 fields, 1 added field, and a few rules:
• So we map them to the same java bean class (Ie513_515_613_615DeclarationOrAmendment)
and generalize data names/requiredness appropriately
• How to discover all commonality and create a properly factored schema?
• Generate TXT message descriptions, Diff the appropriate pairs, move repeated groups and common
parts into sub-objects, replace with references (FKs), generate mapping from several messages to the
same generalized class
• I.e.: pour, compare, slice, stir but don't shake. And think a lot (repeat, think not drink).
15. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 15
Data Model (Process)
• Developed starting from DDNXA Message Structure (MDB file), including fields,
groups, types, repeatability, requiredness, R&C, XML tag, description
• Automatically generated readable tags (e.g. TRACONCEà traderConsignor).We
don't want no Greek tags inside the system! (And this is the modern way of EMCS)
• Factored to expose and exploit all commonalities (normalization)
• Added own business objects (Agent, Message, Movement etc)
• Added presentation info: BG name, BG description, SAD box number
• Single schema used for: RDBMS, Java objects (data beans), Hibernate mapping,
XSD, XML serialization/deserialization, screen generation, and numerous other
things
• Formally described BG changes/additions to DTI messages, added ds:Signature
• Formally described CD changes: bugfixes, workarounds for CTP peculiarities
• Generated DTI Publication for the traders (Excel description and XSD)
16. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 16
Data Model (Result)
• 93 tables, 750 fields. 45 messages mapped to 28 classes (e.g. Ie501_503_601_603DeclarationData
carries 4 messages). Also covers reference data (RD/COL/UNA), risk analysis data, etc
18. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 18
Generation Architecture
• Red: manual work
• Black: generated
19. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 19
Model-Driven Architecture
• You can see the ECS2 architecture is heavily model-driven
• The models are highly pragmatic and specific
• You don't need expensive or heavy tools
• All you need is Excel and a couple goods hackers
àExcel-Driven Software Engineering ™ ;-)
• UML models
• We used sequence and activity diagrams complex module design
• Class diagrams for illustration only
• Data is given in MDB: we want to use it directly, not transcribe it
in a UML tool (would be too much work for too little gain)
• Transcription leads to bugs like
"n..5 is maxInclusive=5" that stop ships
(ECS1 example)
20. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 20
UML Modeling
• Class
diagram
showing
part of the
schema
DTI_B2B
InflowProcessor
External System WebServices XSDValidation XSLTTransformer RCValidation XMLToBean DbSave Object1
DTI_DB
sendMessage(SignedXML):
• Sequence checkSignature()
diagram
for DTI
saveMessage() : save signed XML; messageStatus=PENDING:
processing status
execute()
validation = FAILED
updateMessage() : messageStatus = ERROR
ok
message 906
21. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 21
Reference Data
Codelists: as important as data model
Drive all presentation aspects of the
application
22. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 22
Reference Data (codelists)
• All fixed values are managed in the RD part of the database (two tables)
• TAXUD values are received from CS/RD and loaded with an incremental update algorithm
• National values are managed in Excel and loaded with a generator: highly customizable by the client
• Managing all RD in one place from day 1 was an excellent decision
• RD feeds all listboxes and CL validation and drives many other aspects of ECS2
• E.g. consider National codelist CL9058 "Movement State":
• cl/value: state code stored in the database and handled by BPMS
• descrEn/Bg: screen labels
• extra=show?: determines whether to show Quick Search by this state, and in what color
• extra1=CL58: determines mapping to TAXUD codelist for messages CD904/CD905
• order: the order of Quick Search links on the screen (see shot at the bottom)
• masterCl: for which office is this value applicable (eXPort or eXiT)
• java: enum constant to be used in source (e.g. EXP_DIVERSION_ACCEPTED speaks more than "EXPDAC")
23. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 23
ECS2 System
Architecture
24. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 24
Backend Architecture: Pipelines
• All process-independent data munching, scrubbing and
washing is done in one place, outside BPMS
25. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 25
Backend Architecture: Processing
• All process-independent data munching, scrubbing and washing is done in one place, outside BPMS
• Inbound (inflow): REDIX transformation, XSD validation, XSL transformation, formal validation (R&C,
CL, date/time), deserialization XMLàobject, enrichment (message assignments DSL), business
validation (missing/duplicate MRN/LRN, EORI for TINs, SDM, state=sequence check), save to DBMS,
error handling, creation of 906 error message
• Inbound pre-Router and Convertor: decides whether to pass to ECS2 or ECS1 (complex coexistence requirements)
• If BPMS accepts the message, it contributes to the main object (Movement), and parts are copied in
outgoing messages
• Only references are copied, objects are shared between pipelines (stateful Hibernate session), so DBMS queries are minimized
• XML is used only for input/output. Inside the backend, java objects are shared
• Example: an incoming message is deserialized to an object and saved to the database. When accepted by BPMS, some of its data is
coped as references (e.g. movement/shipmentAtExit=501/shipment). The BPMS then decides to send 2 outgoing messages, which are
created by copying from the incoming and from Movement. The outgoing messages are saved and queued. Database transaction is
closed, committing all saves.
• During all of this no select statements are executed. Only references are copied and only the minimum possible number of inserts are
executed.
• Compare this to the heavy XML copying/parsing/xpathing done by WID/PS involving its Business Objects
• Outbound (outflow): message creation, header creation, serialization objectàXML, XSL transformation,
REDIX transformation, optional validation (for debugging). Outbound routing:
• CD message to BG ("loopback"): never serialized. It's already written to the DB, so just signal BPMS to process it.
• CD message to another country: Redix for conversion to EDIFACT, then jCSI to queue it in CCN/CSI
• BG message to trader (DTI): queue to DTI B2B agent that stores it to DTI DB for final delivery
• BG message to BIMIS: locate the distributed BIMIS instance corresponding to the receiving customsOffice, deliver by webservice
26. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 26
ECS2 Business
Processes
27. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 27
Business Process Modeling
CO02 - Process Arrival at Office of Exit part II
• TAXUD provides
global process
diagrams like this
• Coupled with (from FSS)
state transition
diagrams like • The boxes are
that (from "EBP": linear atomic
DDNXA) processing
IE507[ MRN Unknown ] ^IE502
AER IE503( Negative Respons e )
IE501
Requested ^IE521
IE524 AER
Created Diversion
Rejected
IE507 IE503( Positive Respons e )
IE501
Arrived Goods [ Control ] ^IE561 Under [ CNTRL_RES= B1 ] Goods not
Elsewhere Presented at Exit Control ^IE518.IE522 allowed to Exit
[ No control ]
Goods ready to [ CNTRL_RES=A1 or A2 or A4 ]
be released
IE547[ other than the firs t
one ] ^IE548
[ Storing=Yes ] ^IE525
Goods held for IE547( covering part of Goods released for
storing the m ovem ent )[ Firs t immediate leave (partial)
Received ] ^IE548
[ Storing=No ] ^IE525
IE590[ First IE590 received AND IE547 for the
IE547( for the whole m ovement ) ^IE548
s pecific IE590 has been received ]
Goods released for • Ambiguities,
im mediate leave IE547 ^IE548 Partially IE590[ other than the firs t
Exited or last received ] discrepancies and
IE590 ^IE518(A1 or A2
or A4)
Exited
IE590[ Last IE590 Received AND All IE590s
received for the corres ponding IE547 ] ^IE518
bugs exist
28. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 28
BPM: Primitives (Notation)
• Selected a minimal set of primitives
(based on BPMN) that are easy to
implement in the chosen BPMS yet
sufficient:
• EBP
• send message
• wait to receive message
• wait for user event: ALL user actions are
recorded just like messages
• wait for timer
• choice (wait for several message types)
• decision (condition)
• set state
• async subprocess
• Turns out there are multiple states per
Movement: per role, and
primary/secondary
• Modeled processes with Visio
• Not using BPEL. And proud of it J
• Very well received by client because they
understand it
• Two levels: Context and Detail
29. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 29
•
BPM: Context Diagram
BPM with the client takes TAXUD as a basis, then should reflect all clarifications, decisions and national
requirements
• Context diagram shows all messages and EBP for one agent (customs office or trader type)
• Focuses on one role at the time, i.e. what to implement for that agent
• The global process is implemented through message exchange and choreographed state change in
independent systems
• Shows only the messages exchanged by the other agents
• Uses swim-lanes for clarity
• Very well received by client
30. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 30
BPM: Detail Diagram
(null, EXPBIC)
SI1А0000 Обработка до разрешаване на режима
598
906
Разрешен/неразрешен режим
Грешка
513 509
Заявка за корекция Решение по анулиране CO1B1301 Разрешаване/неразр. на режима
SI060103-1 Обр.анулиране
515 Разрешен?
ЕАД 528
Оформяне на Приемане на ЕАД
Анулирана? не да
място? 504
От БИМИС Одобрение на корекция
505 560 да EXPNRE EXPREL
към търговец?
Отказ на корекция Решение за контрол Неразрешен износ Разрешен режим
да 514
Заявка за анулиране EXPCAN
не не Анулирана
да Стартиране TFUP
SI0A0502 Таймер
не ок проследяване
МОД интеграция 551
ок
906 Износът неразрешен
Грешка Препращане на
полученото съобщение
Препращане на
полученото съобщение 529
EXPBIC Износът разрешен
В БИМИС
501
Очаквана пратка (ЕАД)
Did I mention it
was very well
received by client?
etc
31. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 31
BPM: Implementation
• Implementation in
jBPM follows closely
the process
specification.
• Most importantly, it
is at almost the same
level of abstraction
(2-3x the nodes)
because:
• It doesn't indulge in
low-level data
munging
• All common steps
are outside of BPMS
Ø Contrast with next
page
32. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 32
ECS1
BPM
Impl.
• In ECS1, one EBP
(CO020300 Handle AER
Request) is implemented
in about 50 nodes
• My oh my! I'd rather just
write Java!
• (Actually you don't want to
see the Java code inside
many of these nodes)
• And no long-running
processes are used
33. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 33
XPath-based
Domain Specific
Languages
(DSL)
34. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 34
Message Assignments
• How do you implement the in, in2 and out steps in the
pipelines? They are simple assignments
• But there are 134 assignment groups of 5-10 assignments each
(over 900 total): how do you manage them?
• You don't want to write this in Java
• Use a DSL: it's all the rage nowadays
• XPath is ideal for this purpose. JXPath library groks java objects.
• Now the BA and App Dev (BPMS) teams can share the
responsibility for these assignments
• "a/b=c/d" looks nicer than "getA().setB(getC().getD())"
• More importantly, it's much easier to understand and manage
• Embellish as needed with conditionals, "set if non-null",
comments…
35. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 35
Message Assignment examples
XPath-ish English
-CD501B:in When 501 is received, enrich it (even if it is invalid or unacceptable, we want to save it)
sender/role="EXP" The sender is Office of Export
sender/customsOffice=shipment/officeOfExport The sender is a customs office, and its code is stored in the shipment data
sender/country=sirma:countryFromOffice(sender/ The country of that sender is extracted from the office code (this is an Extension Function)
customsOffice)
-CD501B:in2 When 501 is accepted by BPMS
movement/isSummary="false" Set the Movement as "not summary" (because summary movements are indicated by 601)
movement/shipmentAtExit=shipment Save the shipment data from 501 to the movement (the slot concerning Office of Exit)
-CD501B:out To create an outgoing 501
*filter shipment and remove national elements (quite a program here, so we have a comment)
shipment=movement/shipmentAtExport Set message shipment data to the movement shipment data (from slot of
sirma:mapExpTo501() Function call that deep-copies shipment and modifies it to filter out national fields and
array elements. (The only deep-copy in the whole system)
• Then it grows on you. Why can't we use the same to capture interactive Web context data?
• Indeed we can:
XPath-ish English
-*:web When ANY message is created by the user of ECS2 Web (customs officer)
dtOfPreparation=$now Capture NOW in the universal message field "datetime of preparation"
!sender/customsOfficer=$webContext/userId And capture the current user as the message Sender. Instant audit trail!
-BG507B:web When 507 is created by the user of ECS2 Web (customs officer) or DTI Web (trader)
arrivalNotificationDate=$now Capture NOW in a message-specific field (507 is Arrival Notification)
!actualOfficeOfExit=$webContext/customsOffice Capture the current Customs Office if present (that's in ECS2 Web)
•A customs office cannot register 507 for another office
!traderCarrierOfExit/tin=$webContext/tin Capture the current trader's TIN if present (that's in DTI Web)
36. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 36
Rules & Conditions
• ECS2 has about 250 rules, and BG ECS2 adds 50 • Our implementation uses a JXPath DSL (again!):
C060.shipment/goodsItem/package/numberOfPackages.N
more. Applied to over 2000 fields sirma:isBulk(../kindOfPackages) or sirma:isUnpacked(../kindOfPackages)
EN Not applicable when "Kind of Packages" is "%s" % ../kindOfPackages
• Add cross-field validations that cannot be BG Неприложимо когато "Вид пакети" е "%s"
C060.shipment/goodsItem/package/numberOfPieces.N
expressed in XSD. Example: ../kindOfPackages and (sirma:isBulk(../kindOfPackages) or
not(sirma:isUnpacked(../kindOfPackages)))
C060: IF 'Kind of packages' (Box 31) indicates 'BULK' ('VQ', 'VG', 'VL')
THEN EN Not applicable when "Kind of Packages" is "%s" % ../kindOfPackages
'Marks & numbers of packages'(Box 31) = 'O' BG Неприложимо когато "Вид пакети" е "%s"
'Number of packages' can not be used C060.shipment/goodsItem/package/numberOfPackages.R
'Number of Pieces' (box 31) = can not be used ../kindOfPackages and not(sirma:isBulk(../kindOfPackages) or
ELSE IF 'Kind of packages' (Box 31) indicates 'UNPACKED'('NE','NF',NG') sirma:isUnpacked(../kindOfPackages))
THEN 'Marks & numbers of packages' (Box 31) = 'O' EN Required when "Kind of Packages" is "%s" % ../kindOfPackages
'Number of packages'(box 31') can not be used BG Задължително когато "Вид пакети" е "%s"
'Number of Pieces' (box 31) = 'R' C060.shipment/goodsItem/package/marksNumbersOfPackages.R
ELSE 'Marks & numbers of packages' (Box 31) = 'R' ../kindOfPackages and not(sirma:isBulk(../kindOfPackages) or
'Number of packages'(box 31') = 'R' sirma:isUnpacked(../kindOfPackages))
'Number of Pieces'(box 31) can not be used EN Required when "Kind of Packages" is "%s" % ../kindOfPackages
BG Задължително когато "Вид пакети" е "%s"
C060.shipment/goodsItem/package/numberOfPieces.R
• We introduced a classification inspired by sirma:isUnpacked(../kindOfPackages)
EN Required when "Kind of Packages" is "%s" % ../kindOfPackages
XForms, with some extensions: BG Задължително когато "Вид пакети" е "%s"
T Type XForms GUI effect • The error messages to be returned (in 2
R Required Required Yellow if empty languages) are also given above
N Not applicable Not Relevant Grayed out
• sirma:isBulk() and sirma:isUnpacked() are
C Calculate Calculate Calculated static text
obvious Extension Functions for this rule
X Constraint Constraint Red if false
U Unchangeable Readonly Static text
• If you know the data model and a bit of
I Init (calculate once) None
XPath, the implementation as easy as
English. Even I can do it!
37. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 37
Rules & Conditions public class C060 extends Rules {
private String kindOfPackValue;
private String errorDescriptionStr;
• Do you want to write rules in Java? public boolean isRuleValid(Document doc) {
ruleName = "C060";
Don't!
NodeList listOfGDS = doc.getElementsByTagName("GOOITEGDS");
int numberOfGDS = listOfGDS.getLength();
String tags[] = {"NumOfPacGS24", "NumOfPieGS25", "MarNumOfPacGS21"};
String description[] ={"Number Of Packages", "Number Of Pieces", "Marks and Numbers of Packages"};
int id[] = new int[3];
• The same rule is implemented in 60
for (int k= 0; k < tags.length; k++) {
FieldsInfo info = new FieldsInfo();
info.setTagName(tags[k]);
info.setTagDescription(description[k]);
fieldInfo.addElement(info); // add a FieldsInfo object to the fieldInfo Vector
lines of dense Java in the Standard
}
for (int i = 0; i < numberOfGDS; i++) {
Node GDSNode = listOfGDS.item(i);
NodeList listPackages = ((Element) GDSNode).getElementsByTagName("PACGS2");
Transit Testing Application (STTA) by
int numberOfPackages = listPackages.getLength();
for (int j = 0; j < numberOfPackages; j++) {
Node packagesNode = listPackages.item(j);
Intrasoft
kindOfPackValue = getTagValue((Element) packagesNode, "KinOfPacGS23");
if (kindOfPackValue != null) {
if (kindOfPackValue.equals("VQ") || kindOfPackValue.equals("VG") ||
kindOfPackValue.equals("VL") || kindOfPackValue.equals("VY") ||
kindOfPackValue.equals("VR") || kindOfPackValue.equals("VO")) {
• Furthermore, our rules can be used both id[0] = FieldsInfo.NOT_USED;
id[1] = FieldsInfo.NOT_USED;
id[2] = FieldsInfo.OPTIONAL;
errorDescriptionStr = "Since the GOOITEGDS(" + (i + 1) + ").PACGS2(" + (j + 1) + ").KinOfPacGS23 " +
"has a value of '" + kindOfPackValue +
for offline validation, and GUI }
"' which indicates BULK ('VQ', 'VG', 'VL', 'VY', 'VR', 'VO'), the GOOITEGDS(" +
(i + 1) + ").PACGS2(" + (j + 1) + ").";
else if (kindOfPackValue.equals("NE") ||
interaction kindOfPackValue.equals("NF") ||
kindOfPackValue.equals("NG")) {
id[0] = FieldsInfo.NOT_USED;
id[1] = FieldsInfo.REQUIRED_NON_ZERO;
id[2] = FieldsInfo.OPTIONAL;
errorDescriptionStr = "Since the GOOITEGDS(" + (i + 1) + ").PACGS2(" + (j + 1) + ").KinOfPacGS23 " +
• The STTA rules can be used only for }
"has a value of '" + kindOfPackValue +
"' which indicates UNPACKED ('NE', 'NF', 'NG'), the GOOITEGDS(" + (i + 1) +
").PACGS2(" + (j + 1) + ").";
validation and returning error (906) else {
id[0] = FieldsInfo.REQUIRED;
id[1] = FieldsInfo.NOT_USED;
id[2] = FieldsInfo.REQUIRED;
errorDescriptionStr = "Since the GOOITEGDS(" + (i + 1) + ").PACGS2(" + (j + 1) + ").KinOfPacGS23 " +
"has a value of '" + kindOfPackValue + "', the GOOITEGDS(" + (i + 1) +
").PACGS2(" + (j + 1) + ").";
}
((FieldsInfo) fieldInfo.elementAt(0)).setIdentification(id[0]);
((FieldsInfo) fieldInfo.elementAt(1)).setIdentification(id[1]);
((FieldsInfo) fieldInfo.elementAt(2)).setIdentification(id[2]);
checkField((Element) packagesNode, fieldInfo); // check if fields exist in doc
if (errorPointer != null) {
for (int x = 0; x < errorPointer.size(); x++) {
error = new RuleError();
error.setErrorType(15);
error.setErrorReason(this.toString());
error.setOriginalAttribOfNode("N/A");
error.setRuleName(this.toString());
error.setErrorPointer("GDS(" + (i + 1) + ").GS2(" + (j + 1) + ")." +
((FieldsInfo) errorPointer.elementAt(x)).getTagDescription());
error.setErrorDescription(errorDescriptionStr + (String) errorDescriptionList.get(x));
errors.addElement(error);
}
errorPointer.removeAllElements();
}
}
} // for loop for packages
} // for loop for good items
return (!(errors.size() > 0));
} // is rule valid method
}
38. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 38
•
Rules Used for Validation and GUI
Consider this rule: C010:IF first digit of "Transport mode at border" (box 25) = 2, 5 or 7
THEN "Nationality crossing border" (box 21) is Optional ELSE Required
C010.shipment/nationalityOfMeansOfTransportCrossingBorder.R
• The implementation is simple (nothing for "Opt") not(sirma:RexexpMatch(../transportModeAtBorder,"^[257].*
EN Required when "Transport mode at border" does not start with 2, 5 or 7
BG Задължително когато "Вид транспорт на границата" не започва с 2, 5 или 7
• While editing: box 25 doesn't start with [257] so the field is Required (yellow). In this way the user can
see all erroneous fields at a glance. AJAX implementation: submits&receives only the changes.
• If the user hovers over the field, its tooltip gives error description (red text) and all details about the field
(tag name, box number, description, format, even codelist)
• If an incoming message has this defect, the same rule implementation returns appropriate error message
• Bilingual ErrDes handled
• CD906A doesn't have ErrDes, so we map
to OriAttVal
39. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 39
GUI Frontend
JSF+AJAX, lots of generation
40. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 40
GUI Follows the Single Administrative Document
• "Business payload" data laid out per
paper form. Customs officers and
traders know it by heart
• Pages split to Common (1) and
Goods Item (up to 999)
• Layout made in Excel and the client
can edit it
• Fields generated and laid out
automatically
• Borders, backgrounds, fully
zoomable
41. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 41
GUI: Features
• Hired a Usability consulting company (still most of the ideas are our own)
• Context-dependent "navbars" show important info
• User, office, role
• Number of movements per state in the current office, which are Quick Search links (from CL9058)
• Currently selected movement (sticks even if you switch office type), with links to its data
• Available actions (local and global); the most important ones are color-coded
• Bold shows the current context ("breadcrumb")
• Full type, length, regexp, requiredness, CL, R&C validation (yellow: required unfilled, red:
erroneous). JSF validators are generated from message definitions and R&C metamodel
• Tooltip gives all details about each field (tag, name, description, box number, error)
• Electronic signatures (PKI certificates) used for
trader access and document signing
• The same business data forms are used in ECS2 Web and DTI Web.
• The navbars ("chrome") vary per user kind (customs officer, trader) and roles/permissions
• Goods Pager: efficiently handles up to 999 goods, add item [+], direct jump, erroneous list
42. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 42
GUI: Features
• Codelist popup (RD selector): allows direct entry (speed) or selection (convenience),
always validates, allows multi-selection
43. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 43
GUI: Results of Control
• The most complicated screen in ECS2
• New values (discovered by the customs officer during control) can be entered below
the old values (given in the declaration)
• Color coding is used to highlight deleted values (red strikethrough), new values (red)
and unchanged values (blue/black)
44. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 44
GUI: Generated from Excel
• Best news: the GUI
is generated
• Presentation
attributes from
schema.xls,
validations from
R&C metamodel,
layout from
forms.xls, lists of
values/links from
codelist.xls.
• Very flexible and
powerful. The client
can edit any visual
aspect. The client
loves it.
• (Can you guess
what's the yellow?)
45. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 45
GUI: Technical Details
• Conversation scope: while the user works with one Movement, all fetched data is cached in a Unit of
work, even if the user switches Office Role. When the user goes away, the object is freed and the cache is
released.
• Special JSF components integrating with the R&C framework. Every JSF component uses the R&C
metadata about a field or group, which affects type, validators, error status, color, tooltip.
• R&C marks key fields (those participating in rule xpaths) as AJAX triggers: changing such field causes partial submission, R&C
recalculation and partial refresh
• The generator takes care to put specific IDs on client-side controls, facilitating AJAX and automated
testability (JSF puts dynamically generated default IDs that can't be used for such purposes)
• Web optimizations:
• The GUI is fully zoomable, ensuring optimal use of screen resolution
• CSS compliance, using a cross-browser CSS framework
• XHTML doctype tagging, ensuring best browser compatibility mode
• All resources (CSS, JS, images) are properly marked for caching, ensuring the browser caches them for 1 month and reduces traffic
• Resource merge: all CSS and all JS files are merged, ensuring faster page processing time.
• Resource versioning: the build date is added to each resource filename, ensuring the browser will refetch it.
• HTTP compression: main pages (business content) are gzipped to reduce traffic. The largest page zips to 10kB.
• Web traffic optimization was critical to enable centralization of ECS2 Web
• BICIS is distributed (120 instances across the country) .
• ECS1 Web is also distributed, while ECS1 Core is centralized, creating weird timeout problems
• ECS2 is centralized and ensures fast response time, even though some remote Customs Offices have bad connectivity (64-128 kbps)
• Client's sysadmin loves it. We love it too, it simplifies new version deployment immensely.
46. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 46
Deployment
Model
47. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 47
• Platform: RedHat Enterprise Linux, Informix 10, JBoss, 5.0.1, JEE 6, EJB 3, JSF
• Centralized (ECS1 was semi-distributed)
• Dedicated servers (ECS1 shares server with 4-5 other applications, sometimes crashed)
Level 1 Level 2 Level 3
Web Portal BTMS BCA Server Farm
Firewall
Firewall
Check Server
Linux Linux
Application Server
JBoss 4 Application Server
Web applications JBoss 4 Response
EORI/
TARIC
AEO
(Requested only)
BTMS_ONLINE Web applications
BICIS
Request
DBMS Informix 10 CS_BTMS SDM CAS RA
JDBC
Database: CWS Database: ECS2
Users Declarations Application Server
JBoss 5
JDBC
ECS2 Core
Web Services
JDBC Входящ
Мениджър Интерп
конвейр
на ретатор
съобщени на
Application Server JMS
ята Изходящ съобще
Response
JBoss 5
(Requested only) ECS2_B2B конвейр ния
ECS2.
Web applications Core
JMS
JMS DB
MQ Redix
Request
ED_to_ECS2Core jCSI / CSI
JBPM JBPM
ECS2_Online DB
Мениджър на
JMS JMS потребителския
интерфейс
MQ
ECS2Core_to_ED
All ports
All ports
Firewall Firewall Firewall
HTTP
HTTP(S)
VPN Server VPN Server
External
Domain External Domain
Common Domain
TARIC EORI/AEO
VPN Client B2B Application
MQ MQ
Trader System MQ MQ in
MQ MQ out
in out
in out
48. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 48
Thanks for your
time!
49. ECS2 at Java2Days, 8.10.2009 (Sirma Solutions & Sirma ITT) 49
• Questions/discussion?
• We think our ECS2 architecture is pretty smart, and
would like to hear your comments
• What would you have done differently?
• We'd love to apply this architecture to similar
problems, e.g. import/export/transit/excise systems.
• Especially in nearby/EU candidate countries (Macedonia,
Serbia, Bosnia-Herzegovina, Turkey, Russia)
• Contacts: vladimir@sirma.bg, +359 (888) 568 132,
callto://valexiev1