The document provides instructions for setting up a basic business process management system (BPMS) using Ruby on Rails and open source components. It describes registering various participants like XForms, SPS, and WNS to handle tasks in a sample EO-1 satellite tasking workflow. It also explains how to execute the workflow by launching it from a Rails controller and view, and includes code snippets for setting up the workflow engine and defining participants.
This document contains a detailed outline of topics to be covered in a book about learning the Perl programming language. The outline includes sections on scalars, arrays, control structures, associative arrays (hashes), input/output, regular expressions, subroutines, file input/output, directories, file system manipulation, formats, using modules and more. Each section contains subsections that will provide more specific explanations of concepts within that chapter.
This document provides a tutorial for installing PHP on Linux. It explains:
- PHP will be installed as a shared module loaded into Apache2 dynamically.
- Steps include downloading the PHP source, configuring with options like paths for Apache and MySQL, compiling, editing Apache's configuration to load PHP, creating a php.ini file, and restarting Apache.
- The tutorial was written for SuSE but should work on other Linux systems and supports PHP versions 5.0.4 through 5.2.1. It provides guidance for upgrading PHP as well.
OSGi for real in the enterprise: Apache Karaf - NLJUG J-FALL 2010Adrian Trenaman
Want to know how to design, implement and deploy modular enterprise integration solutions using OSGi? The Apache Karaf OSGi shell, used by Apache Felix and Apache ServiceMix, enhances core OSGi implementations like Felix or Equinox with an easy to use, extendible command shell, providing logging, hot deployment, configuration, container administration, clustering, high availability and easy 'feature-based' dependency management In this session, you'll learn how Karaf works, and how you can leverage Karaf either on its own or embedded within ServiceMix to deploy business logic, RESTful services, EIP-based integration flows and web services. You'll learn how to extend the command shell with your own commands, and, use Spring-DM *or* OSGi BluePrint Services to make using OSGi a walk in the park.
The document summarizes Apache Manager, a directory-based tool for managing Apache web servers. It stores Apache configuration directives in a hierarchy of objects in a directory service. This allows common directives to be consolidated and inherited by multiple servers. The Apache Manager includes a configuration daemon that extracts directives from the directory and builds httpd.conf files, and a web interface for managing configurations across servers from a single location. Storing configurations in a directory provides advantages like platform independence, centralized management, and reduced duplication.
This document discusses deploying applications to Cloud Foundry using Spring, Vaadin, and Cloud Foundry. It provides an overview of deploying a Java application using the vmc command line tool and Spring Tool Suite. It also covers services, runtime choices, and the benefits of using open source Cloud Foundry which avoids vendor lock-in.
The document discusses Apache Karaf, an open source OSGi container. It provides:
1) An introduction to OSGi and its benefits like component-based modularity and treating applications as services.
2) An overview of Apache Karaf - an OSGi container that adds features like provisioning, deployment, administration and management.
3) How to develop applications for Karaf using standard Maven structures and deploying bundles and features to the Karaf container.
This document contains a detailed outline of topics to be covered in a book about learning the Perl programming language. The outline includes sections on scalars, arrays, control structures, associative arrays (hashes), input/output, regular expressions, subroutines, file input/output, directories, file system manipulation, formats, using modules and more. Each section contains subsections that will provide more specific explanations of concepts within that chapter.
This document provides a tutorial for installing PHP on Linux. It explains:
- PHP will be installed as a shared module loaded into Apache2 dynamically.
- Steps include downloading the PHP source, configuring with options like paths for Apache and MySQL, compiling, editing Apache's configuration to load PHP, creating a php.ini file, and restarting Apache.
- The tutorial was written for SuSE but should work on other Linux systems and supports PHP versions 5.0.4 through 5.2.1. It provides guidance for upgrading PHP as well.
OSGi for real in the enterprise: Apache Karaf - NLJUG J-FALL 2010Adrian Trenaman
Want to know how to design, implement and deploy modular enterprise integration solutions using OSGi? The Apache Karaf OSGi shell, used by Apache Felix and Apache ServiceMix, enhances core OSGi implementations like Felix or Equinox with an easy to use, extendible command shell, providing logging, hot deployment, configuration, container administration, clustering, high availability and easy 'feature-based' dependency management In this session, you'll learn how Karaf works, and how you can leverage Karaf either on its own or embedded within ServiceMix to deploy business logic, RESTful services, EIP-based integration flows and web services. You'll learn how to extend the command shell with your own commands, and, use Spring-DM *or* OSGi BluePrint Services to make using OSGi a walk in the park.
The document summarizes Apache Manager, a directory-based tool for managing Apache web servers. It stores Apache configuration directives in a hierarchy of objects in a directory service. This allows common directives to be consolidated and inherited by multiple servers. The Apache Manager includes a configuration daemon that extracts directives from the directory and builds httpd.conf files, and a web interface for managing configurations across servers from a single location. Storing configurations in a directory provides advantages like platform independence, centralized management, and reduced duplication.
This document discusses deploying applications to Cloud Foundry using Spring, Vaadin, and Cloud Foundry. It provides an overview of deploying a Java application using the vmc command line tool and Spring Tool Suite. It also covers services, runtime choices, and the benefits of using open source Cloud Foundry which avoids vendor lock-in.
The document discusses Apache Karaf, an open source OSGi container. It provides:
1) An introduction to OSGi and its benefits like component-based modularity and treating applications as services.
2) An overview of Apache Karaf - an OSGi container that adds features like provisioning, deployment, administration and management.
3) How to develop applications for Karaf using standard Maven structures and deploying bundles and features to the Karaf container.
This document provides an overview of the Laravel PHP framework. It discusses Laravel's history and evolution from version 1 to the current version 5.3. Key Laravel concepts are explained such as routing, controllers, models, views, Artisan commands, and architectural changes in version 5 like the directory structure and environment detection. Additional Laravel tools and resources are also mentioned like Laravel Elixir, Homestead, and Laracasts.
Solving the C20K problem: Raising the bar in PHP Performance and ScalabilityZendCon
This document summarizes a presentation given by Luxi Chidambaran of Oracle on solving the C20K problem of scaling PHP applications. It discusses how the Oracle 11g Database Resident Connection Pool (DRCP) allows PHP applications to connect to the database in a way that supports tens of thousands of concurrent connections using minimal system resources. It provides an overview of DRCP and how the enhanced OCI8 PHP extension connects to leverage DRCP. Performance benchmarks are presented showing significant increases in throughput and reductions in memory usage compared to non-DRCP connections.
The Apache Aries project provides implementations for enterprise OSGi applications including the Blueprint container, JPA integration, JTA integration, and more. It aims to build a community around the OSGi enterprise expert group specifications and provide implementations of new technologies to inform standards. Aries components are used in Apache Geronimo, Apache Felix Karaf, JBossOSGi, and WebSphere Application Server.
Today's applications don't live in a vacuum - you need to take the applications to where your users are. Let Spring's REST support along with its powerful client-side technology support, help you get there faster.
OpenUI5 Conf 2019: Promise Chaining - Create UI applications with Flexible, M...Shailendra Rai
With enterprise UI applications, there is a need for "long term support". Programming aspects like "Flexibility", "Reusability", "Atomicity" add great value toward the long term support aspect.
This presentation touch-bases with these aspects and how they affect the overall maintainability of a UI application.
I have also used 2 demos for the same, and it also uses some aspects from the OpenUI5 library and jQuery.
May 2012 HUG: Oozie: Towards a scalable Workflow Management System for HadoopYahoo Developer Network
During the past three years Oozie has become the de-facto workflow scheduling system for Hadoop. Oozie has proven itself as a scalable, secure and multi-tenant service. Oozie stably processes more than 45% of the jobs run across more than 25 Hadoop clusters in Yahoo. At the same time adoption
in other enterprises has increased substantially since Oozie was contributed to the Apache community. We attribute these achievements to design decisions
that was selected to be presented at a workshop during the ACM/SIGMOD conference. This presentation covers the key architectural design choices described in the paper. Operational metrics will be used to illustrate production experience at Yahoo, and we will also include a quick tutorial.
Getting started with agile database migrations for java flywaydbGirish Bapat
This document discusses database migrations using Flyway and provides examples of using Flyway via its Java API, command line interface, Maven plugin, and Ant tasks. It begins with an overview of Flyway and the need for database migrations. It then demonstrates setting up Flyway in different projects and applying initial and subsequent migrations to populate a database table.
This document provides an introduction and overview of Ruby and Ruby on Rails (RoR). It discusses that Ruby is an object-oriented programming language created in 1993, and RoR is a web application framework built on Ruby. It outlines the structure of a basic RoR application, including models, views, controllers, and databases. It also provides examples of generating scaffolds and basic RoR commands.
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009Hiroshi Ono
This document discusses solving the C20K problem of handling 20,000 simultaneous PHP users on a single database server. It describes how this can be achieved using built-in database mechanisms in PHP like database resident connection pooling, query change notification, client-side query result caching, scaling with stored procedures, and database partitioning. It provides examples of configuring and using these features. It also includes a case study and benchmarks showing how database resident connection pooling in PHP enabled a system to handle over 20,000 concurrent users.
The document discusses adopting Grails for web application development. It summarizes several episodes or lessons learned:
1. GORM constraints were ignored when domain classes were loaded by a shared classloader rather than the Grails classloader. The constraints had to be extracted to a shared library.
2. Using BlazeDS for Flex communication caused data objects to lose field values after round trips. DTOs and mapping tools like Dozer were needed.
3. Web services should treat the UI as another automation client to avoid duplicating XML flows. Domain data can be mapped to XML in GSPs without DTOs.
4. When domain classes were no longer stored in the database, meta-
Adventures in Laravel 5 SunshinePHP 2016 TutorialJoe Ferguson
Laravel 5 introduces several new features including a revised directory structure, Blade changes, commands, events, form requests, and helpers. It also includes tools like route caching, middleware, controller method injection, implicit route model binding, API rate limiting, and authentication improvements. The document provides an overview of these new features and changes as well as tips for upgrading from Laravel 4.2 to 5.x.
Introduction to Laravel Framework (5.2)Viral Solani
This document provides an overview of the Laravel PHP framework, including why it was created, its main features and components. Some key points:
- Laravel was created to guide developers to best practices and utilizes modern PHP features. It has an active community and good documentation.
- Its major components include routing, controllers, blade templating, Eloquent ORM, authentication, queues and more. It also uses Composer for dependency management.
- Other tools in the Laravel ecosystem help with deployment (Homestead, Forge), billing (Cashier), APIs (Lumen) and more. The framework is fully-featured but aims to be easy to learn and use.
Learn how to use Continuous Delivery for Puppet Enterprise (CD4PE) in an interactive workshop with hands-on labs. What's CD4PE? CD4PE is the continuous delivery add-on to Puppet Enterprise, aimed at accelerating the speed at which you can get Puppet code changes deployed into production safely. CD4PE facilitates code collaboration across teams, and dramatically improves the release management process for teams that own & maintain individual Puppet modules. CD4PE integrates with both Puppet Enterprise as well as your version control system of choice.
After completing the workshop, you will be able to use CD4PE to perform common code management tasks on your Puppet control repo and modules.
This was a quick (15 minutes!) tour of Cloud Foundry that I gave at JFokus 2012 introducing Cloud Foundry as the answer to the question, "I've got a working web application and Spring made it easy, but where do I host it?"
Faster java ee builds with gradle [con4921]Ryan Cuprak
JavaOne 2016
It is time to move your Java EE builds over to Gradle! Gradle continues to gain momentum across the industry. In fact, Google is now pushing Gradle for Android development. Gradle draws on lessons learned from both Ant and Maven and is the next evolutionary step in Java build tools. This session covers the basics of switching existing Java EE projects (that use Maven) over to Gradle and the benefits you will reap, such as incremental compiling, custom distributions, and task parallelization. You’ll see demos of all the goodies you’ve come to expect, such as integration testing and leveraging of Docker. Switching is easier than you think, and no refactoring is required.
The document discusses CakePHP, an open source PHP framework that uses the MVC pattern. It provides an overview of CakePHP's history and features, how MVC works in CakePHP, core concepts like models, controllers and views, and how to install and create simple and database-driven CakePHP applications. It also covers baking, callbacks, and the CakePHP community.
The document introduces HTML forms and how to generate different form elements like buttons, text fields, checkboxes, and drop-down menus using tags like <form>, <input>, and <select>. It provides code examples for generating each element and linking an external CSS file to style the elements. The document also notes that while HTML can generate these form elements, additional scripts like JavaScript are needed to make the forms interactive and functional.
This document provides instructions for installing and using QuadToneRIP software for printing grayscale images on Epson inkjet printers. It discusses installing the software, setting up printers, using profiles, printing workflows in Photoshop, print settings options, and troubleshooting. Special notes are provided for older Mac OS versions regarding installing Ghostscript and managing custom paper sizes.
This document provides information about Ruby on Rails. It introduces Ruby on Rails creator David Heinemeier Hansson and describes Rails as a full-stack web application framework that follows the MVC pattern and convention over configuration approach. It also summarizes key aspects of the Rails architecture including ActiveRecord for object-relational mapping, controllers for request management, and ActionView for presentation templating.
This document provides an overview of the Laravel PHP framework. It discusses Laravel's history and evolution from version 1 to the current version 5.3. Key Laravel concepts are explained such as routing, controllers, models, views, Artisan commands, and architectural changes in version 5 like the directory structure and environment detection. Additional Laravel tools and resources are also mentioned like Laravel Elixir, Homestead, and Laracasts.
Solving the C20K problem: Raising the bar in PHP Performance and ScalabilityZendCon
This document summarizes a presentation given by Luxi Chidambaran of Oracle on solving the C20K problem of scaling PHP applications. It discusses how the Oracle 11g Database Resident Connection Pool (DRCP) allows PHP applications to connect to the database in a way that supports tens of thousands of concurrent connections using minimal system resources. It provides an overview of DRCP and how the enhanced OCI8 PHP extension connects to leverage DRCP. Performance benchmarks are presented showing significant increases in throughput and reductions in memory usage compared to non-DRCP connections.
The Apache Aries project provides implementations for enterprise OSGi applications including the Blueprint container, JPA integration, JTA integration, and more. It aims to build a community around the OSGi enterprise expert group specifications and provide implementations of new technologies to inform standards. Aries components are used in Apache Geronimo, Apache Felix Karaf, JBossOSGi, and WebSphere Application Server.
Today's applications don't live in a vacuum - you need to take the applications to where your users are. Let Spring's REST support along with its powerful client-side technology support, help you get there faster.
OpenUI5 Conf 2019: Promise Chaining - Create UI applications with Flexible, M...Shailendra Rai
With enterprise UI applications, there is a need for "long term support". Programming aspects like "Flexibility", "Reusability", "Atomicity" add great value toward the long term support aspect.
This presentation touch-bases with these aspects and how they affect the overall maintainability of a UI application.
I have also used 2 demos for the same, and it also uses some aspects from the OpenUI5 library and jQuery.
May 2012 HUG: Oozie: Towards a scalable Workflow Management System for HadoopYahoo Developer Network
During the past three years Oozie has become the de-facto workflow scheduling system for Hadoop. Oozie has proven itself as a scalable, secure and multi-tenant service. Oozie stably processes more than 45% of the jobs run across more than 25 Hadoop clusters in Yahoo. At the same time adoption
in other enterprises has increased substantially since Oozie was contributed to the Apache community. We attribute these achievements to design decisions
that was selected to be presented at a workshop during the ACM/SIGMOD conference. This presentation covers the key architectural design choices described in the paper. Operational metrics will be used to illustrate production experience at Yahoo, and we will also include a quick tutorial.
Getting started with agile database migrations for java flywaydbGirish Bapat
This document discusses database migrations using Flyway and provides examples of using Flyway via its Java API, command line interface, Maven plugin, and Ant tasks. It begins with an overview of Flyway and the need for database migrations. It then demonstrates setting up Flyway in different projects and applying initial and subsequent migrations to populate a database table.
This document provides an introduction and overview of Ruby and Ruby on Rails (RoR). It discusses that Ruby is an object-oriented programming language created in 1993, and RoR is a web application framework built on Ruby. It outlines the structure of a basic RoR application, including models, views, controllers, and databases. It also provides examples of generating scaffolds and basic RoR commands.
Solving_the_C20K_problem_PHP_Performance_and_Scalability-phpquebec_2009Hiroshi Ono
This document discusses solving the C20K problem of handling 20,000 simultaneous PHP users on a single database server. It describes how this can be achieved using built-in database mechanisms in PHP like database resident connection pooling, query change notification, client-side query result caching, scaling with stored procedures, and database partitioning. It provides examples of configuring and using these features. It also includes a case study and benchmarks showing how database resident connection pooling in PHP enabled a system to handle over 20,000 concurrent users.
The document discusses adopting Grails for web application development. It summarizes several episodes or lessons learned:
1. GORM constraints were ignored when domain classes were loaded by a shared classloader rather than the Grails classloader. The constraints had to be extracted to a shared library.
2. Using BlazeDS for Flex communication caused data objects to lose field values after round trips. DTOs and mapping tools like Dozer were needed.
3. Web services should treat the UI as another automation client to avoid duplicating XML flows. Domain data can be mapped to XML in GSPs without DTOs.
4. When domain classes were no longer stored in the database, meta-
Adventures in Laravel 5 SunshinePHP 2016 TutorialJoe Ferguson
Laravel 5 introduces several new features including a revised directory structure, Blade changes, commands, events, form requests, and helpers. It also includes tools like route caching, middleware, controller method injection, implicit route model binding, API rate limiting, and authentication improvements. The document provides an overview of these new features and changes as well as tips for upgrading from Laravel 4.2 to 5.x.
Introduction to Laravel Framework (5.2)Viral Solani
This document provides an overview of the Laravel PHP framework, including why it was created, its main features and components. Some key points:
- Laravel was created to guide developers to best practices and utilizes modern PHP features. It has an active community and good documentation.
- Its major components include routing, controllers, blade templating, Eloquent ORM, authentication, queues and more. It also uses Composer for dependency management.
- Other tools in the Laravel ecosystem help with deployment (Homestead, Forge), billing (Cashier), APIs (Lumen) and more. The framework is fully-featured but aims to be easy to learn and use.
Learn how to use Continuous Delivery for Puppet Enterprise (CD4PE) in an interactive workshop with hands-on labs. What's CD4PE? CD4PE is the continuous delivery add-on to Puppet Enterprise, aimed at accelerating the speed at which you can get Puppet code changes deployed into production safely. CD4PE facilitates code collaboration across teams, and dramatically improves the release management process for teams that own & maintain individual Puppet modules. CD4PE integrates with both Puppet Enterprise as well as your version control system of choice.
After completing the workshop, you will be able to use CD4PE to perform common code management tasks on your Puppet control repo and modules.
This was a quick (15 minutes!) tour of Cloud Foundry that I gave at JFokus 2012 introducing Cloud Foundry as the answer to the question, "I've got a working web application and Spring made it easy, but where do I host it?"
Faster java ee builds with gradle [con4921]Ryan Cuprak
JavaOne 2016
It is time to move your Java EE builds over to Gradle! Gradle continues to gain momentum across the industry. In fact, Google is now pushing Gradle for Android development. Gradle draws on lessons learned from both Ant and Maven and is the next evolutionary step in Java build tools. This session covers the basics of switching existing Java EE projects (that use Maven) over to Gradle and the benefits you will reap, such as incremental compiling, custom distributions, and task parallelization. You’ll see demos of all the goodies you’ve come to expect, such as integration testing and leveraging of Docker. Switching is easier than you think, and no refactoring is required.
The document discusses CakePHP, an open source PHP framework that uses the MVC pattern. It provides an overview of CakePHP's history and features, how MVC works in CakePHP, core concepts like models, controllers and views, and how to install and create simple and database-driven CakePHP applications. It also covers baking, callbacks, and the CakePHP community.
The document introduces HTML forms and how to generate different form elements like buttons, text fields, checkboxes, and drop-down menus using tags like <form>, <input>, and <select>. It provides code examples for generating each element and linking an external CSS file to style the elements. The document also notes that while HTML can generate these form elements, additional scripts like JavaScript are needed to make the forms interactive and functional.
This document provides instructions for installing and using QuadToneRIP software for printing grayscale images on Epson inkjet printers. It discusses installing the software, setting up printers, using profiles, printing workflows in Photoshop, print settings options, and troubleshooting. Special notes are provided for older Mac OS versions regarding installing Ghostscript and managing custom paper sizes.
This document provides information about Ruby on Rails. It introduces Ruby on Rails creator David Heinemeier Hansson and describes Rails as a full-stack web application framework that follows the MVC pattern and convention over configuration approach. It also summarizes key aspects of the Rails architecture including ActiveRecord for object-relational mapping, controllers for request management, and ActionView for presentation templating.
This document provides an overview of the Ruby on Rails web application framework. It discusses that Rails is a full-stack framework that follows the model-view-controller pattern and uses Ruby as its programming language. It was created by David Heinemeier Hansson in 2004 and uses conventions like separating data, presentation, and control logic into the model, view, and controller layers respectively. The document also provides high-level information on Rails' object-relational mapping, database persistence, and conventions over configuration approach.
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting <b>...</b>tutorialsruby
This document provides the course outline for IMD 210 Fundamentals of Scripting Languages at The Art Institute of Atlanta during the Spring 2005 quarter. The course focuses on integrating programming concepts with interface design using scripting languages like JavaScript and CSS. It will cover topics like DOM, CSS layout, JavaScript variables, conditionals, and events. Students will complete 4 assignments including redesigning existing websites, and there will be weekly quizzes, a midterm, and final exam. The course is worth 4 credits and meets once a week for class and lab.
TopStyle Help & <b>Tutorial</b>tutorialsruby
This document provides a table of contents for the TopStyle Pro Help & Tutorial, which teaches how to use the TopStyle software for editing style sheets and HTML/XHTML documents. It lists over 50 sections that provide explanations and instructions for features like creating and opening files, editing styles, working with colors, previews, validation, site management, reports and customizing the software. The document was created by Giampaolo Bellavite from the online help provided with TopStyle version 3.11.
This document provides a fast-paced introduction to Ruby, Rails, and additional technologies. It begins with an overview of Ruby basics, syntax, and uses beyond scripts. It then covers Rails fundamentals including MVC architecture, scaffolding, models, views, controllers, and routes. Additional topics discussed include gems, Git, and deploying to Heroku. The document concludes by outlining a sample project to build a marketplace for buying and selling robot spare parts.
The document summarizes new features in Rails 3.1 beta, including asset handling changes where JavaScript and CSS files are now placed in app/assets, identity maps to improve performance of object loading, simpler database migrations that use a single change method, and improved test output formatting. It also discusses installing Rails 3.1 in a isolated gemset and using Sass and CoffeeScript as default asset compilers.
This document provides an overview of prerequisites for developing a Ruby on Rails application. It discusses key concepts like MVC, REST, and installation steps. It then demonstrates creating a sample "greeting" application by generating a controller, updating routes, and adding an index action that renders text. The document emphasizes following MVC patterns by updating the controller to assign a variable for the view, and updating the view to display it. It also explains that ERB files allow embedding Ruby code for logic and display.
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...Jesse Gallagher
Though Domino makes working with build servers and CI/CD pipelines difficult, it is possible to do so even with complex applications. This session will discuss the specifics of using several OpenNTF projects - NSF ODP Tooling, the Jakarta XPages Runtime, and XPages Jakarta EE Support - as well as open-source technologies such as Docker to build, test, and deploy Java-based Domino applications for testing and staging. This builds on previous sessions about the NSF ODP Tooling and Maven generally.
This document provides an introduction and overview of Ruby on Rails, including who uses it, example applications built with it, its MVC framework structure, and a step-by-step guide to building a basic "Hello World" Ruby on Rails application.
Ruby on Rails is a web application framework that follows the model-view-controller (MVC) pattern and includes everything needed to build database-backed web applications using the Ruby programming language. It aims to make web development more productive by utilizing conventions that reduce the need for configuration and promote reuse of common tasks like connecting to databases. The framework provides models for interacting with the database, views for displaying the user interface, and controllers that handle and respond to user input by manipulating models and rendering views.
The document provides an overview and cheat sheet for using the OpenShift command line interface. It defines what OpenShift is, lists common commands for login/authentication, managing projects and resources, building and deploying applications, and provides an example of creating a new project, adding users, building an application from source code and image, and checking the status of deployed resources.
SvelteKit builds on standard web APIs to provide functionality out of the box. These include the Fetch API for network requests, FormData for handling form submissions, stream APIs for chunked responses, URL APIs for working with URLs, and the Web Crypto API via the crypto global. SvelteKit exposes these APIs in places like hooks, server routes, and load functions to integrate seamlessly with the web platform. Using web standards means existing web skills transfer to SvelteKit and time spent with SvelteKit enhances general web development abilities.
This is a presentation of the Perl module Workflow available on CPAN. All examples mentioned are available as part of the workflow distribution.
http://search.cpan.org/~jonasbn/Workflow/lib/Workflow.pm
http://sourceforge.net/apps/mediawiki/perl-workflow/index.php?title=Main_Page
Strategies and Tips for Building Enterprise Drupal Applications - PNWDS 2013Mack Hardy
Mack Hardy, Dave Tarc, Damien Norris of Affinity Bridge presenting at Pacific Northwest Drupal Summit in Vancouver, October 5th, 2013. The presentation walks through management of releases, deployment strategies and build strategies with drupal features, git, and make files. Performance and caching is also covered, as well as specific tips and tricks for configuring apache and managing private files.
This document discusses extending Oracle E-Business Suite using Ruby on Rails. It provides an overview of how to extend EBS functionality by embedding EBS data in other systems or customizing forms and reports. It then discusses the evolution of EBS extension approaches over time from custom PL/SQL to various Java-based frameworks. It introduces Ruby on Rails as an alternative approach, describing how Rails uses an MVC architecture and Active Record pattern. It demonstrates how to connect Rails to Oracle databases using enhanced Oracle adapters and call PL/SQL from Ruby. Finally, it discusses deployment options and provides references for more information.
This document provides an overview and agenda for a presentation on TorqueBox, which allows running Ruby on Rails applications with enterprise capabilities by running them on the JBoss application server. The presentation covers how Rails applications can be deployed on TorqueBox to gain access to services like the web container, message bus, and databases. It also discusses how additional features like scheduled jobs, asynchronous task queues, and SOAP endpoints can be integrated by following Rails-like conventions.
Node ACS allows customers to extend the Appcelerator Cloud Services platform using Node.js. Node.js provides an event-driven and scalable framework for building network applications. With Node ACS, customers can create custom microservices that integrate with ACS features like checkins and social posting. These microservices can leverage Node.js modules and scale using MongoDB. The document provides examples of setting up a Node.js app with ACS, adding services, using modules, calling the ACS API, and connecting to MongoDB for data storage. This allows customers to build and deploy scalable web services without server configuration.
Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
Node.js is an open source command line tool built for the server side JavaScript code.
This document provides an overview of the MEAN stack and demonstrates how to build a sample application with it. It begins with defining each component of the MEAN stack: MongoDB as the database, Express as the web application framework, AngularJS for the frontend framework, and Node.js as the runtime environment. It then demonstrates setting up a basic Express app, integrating authentication with Passport, and interacting with MongoDB using Mongoose. The document also discusses key concepts like asynchronous I/O in Node.js and model-view-controller patterns in AngularJS. Overall, it serves as a high-level introduction to the technologies that make up the MEAN stack.
Node.js is a JavaScript runtime built on Chrome's V8 engine that is used to develop fast and scalable network applications. It uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, especially for data-intensive real-time applications that run across distributed devices. Node.js relies heavily on asynchronous event handling, callbacks, and data streams.
The document provides an introduction and overview of Ruby on Rails. It discusses the history and features of Ruby and compares it to other programming languages like Python and Perl. It then describes the architecture of Rails, including the Model-View-Controller pattern and ActiveRecord. The document also provides examples of migrations, validations and associations in Rails.
This document discusses implementing DevOps practices and technologies like Terraform and Ansible to create a fault-tolerant web store. It outlines creating the VM infrastructure with Terraform including load balancing. Ansible is used to install and configure software. A Jenkins pipeline is created for continuous integration and delivery. A Galera cluster provides database replication across multiple servers. Monitoring and backups are also implemented.
This document provides a help and tutorial for TopStyle Pro version 3.11. It covers getting started with TopStyle, editing style sheets and HTML/XHTML, working with colors, previews, validation, site management, reports, mappings, customization, and third-party integration. It also includes appendices on CSS basics and tips, TopStyle tips and tricks, style sheet resources, keyboard shortcuts, and regular expressions.
This document provides the course outline for IMD 210 Fundamentals of Scripting Languages at The Art Institute of Atlanta during the Spring 2005 quarter. The course focuses on integrating programming concepts with interface design using scripting languages like JavaScript and CSS. It will cover topics like DOM, CSS layout, JavaScript variables, conditionals, and events. Students will complete 4 assignments including redesigning existing websites, and there will be weekly quizzes, a midterm, and final exam. The course is worth 4 credits and meets once a week for class and lab.
The group aims to bridge gaps between peer-to-peer database architectures and scaling multimedia information retrieval. They develop a probabilistic multimedia database system with abstraction layers for applications and researchers. They also research challenges of peer-to-peer networks for distributed data management. Both lines are supported by the MonetDB platform to exploit custom hardware and adaptive query optimization. The goal is a modular solution linking theoretical optimal solutions to application demands under resource limitations.
Standardization and Knowledge Transfer – INS0tutorialsruby
The group aims to bridge gaps between peer-to-peer database architectures and scaling multimedia information retrieval. They develop a probabilistic multimedia database system with abstraction layers and a flexible model. They also research challenges of peer-to-peer networks for distributed data management. Both lines are supported by the MonetDB platform to exploit custom hardware and adaptive query optimization. The goal is a modular solution linking theoretical optimal solutions to application demands under resource limitations.
This document provides an introduction to converting HTML documents to XHTML, including the basic syntax changes needed like making all tags lowercase and closing all tags. It provides examples of correct XHTML markup for different tags. It also explains the new DOCTYPE declaration and shows a sample well-formed XHTML document incorporating all the discussed changes. Resources for learning more about XHTML are listed at the end.
This document provides an introduction to converting HTML documents to XHTML, including the basic syntax changes needed like making all tags lowercase and closing all tags. It provides examples of correct XHTML markup for different tags. It also explains the new DOCTYPE declaration and shows a sample well-formed XHTML document incorporating all the discussed changes. Resources for learning more about XHTML are listed at the end.
XHTML is a markup language that provides structure and semantics to web pages. It is based on XML and is more strict than HTML. XHTML pages must have a document type definition, html and head tags, and a body where the visible content goes. Common XHTML tags include paragraphs, lists, links, images, and divisions to logically separate content. While XHTML provides structure, CSS is used to style pages and control visual presentation by defining rules for tags. CSS rules are defined in external style sheets to keep presentation separate from structure and content.
XHTML is a markup language that provides structure and semantics to web pages. It is based on XML and is more strict than HTML. XHTML pages must have a document type definition, html and head tags, and a body where the visible content goes. Common XHTML tags include paragraphs, lists, links, images, and divisions to logically separate content. While XHTML provides structure, CSS is used to style pages and control visual presentation through rules that target specific XHTML elements.
This document discusses how to create and use external cascading style sheets (CSS) in Dreamweaver. It provides steps to:
1. Open the CSS Styles tab in Dreamweaver and create a new external CSS stylesheet using a sample text style.
2. Save the stylesheet and link it to a new HTML page to style elements like headings, text sizes, and boxes.
3. Edit existing styles by selecting a tag in the CSS Styles panel and modifying properties directly, or by clicking the tag and using the pencil icon to edit in a window. This allows customizing styles globally across all linked pages.
This document provides an overview of how to create and use cascading style sheets (CSS) in Dreamweaver. It describes the different types of style sheets, including external and internal style sheets. It outlines the steps to create an external style sheet in Dreamweaver using the CSS Styles panel and provides instructions for linking the external style sheet to an HTML page. The document demonstrates how to experiment with predefined styles and how to edit, add, and delete styles in the CSS stylesheet.
This document appears to be a weekly update from an intro to computer science course. It includes summaries of classmates' demographics, comfort levels, and prior experience. It also discusses time spent on problem sets and recommends upcoming courses in CS51 and CS61. Finally, it recommends reading on TCP/IP, HTTP, XHTML, CSS, PHP, SQL and using the bulletin board for questions.
This document appears to be a weekly update from an intro to computer science course. It includes summaries of classmates' demographics, comfort levels, and prior experience. It also discusses time spent on problem sets and recommends upcoming courses in CS51 and CS61. Finally, it recommends reading on topics like TCP/IP, HTTP, XHTML, CSS, PHP, SQL and using bulletin boards, and includes images related to these topics.
The document discusses how to use Cascading Style Sheets (CSS) with Corvid Servlet Runtime templates to control formatting and layout. CSS allows separating design from content, making templates simpler and easier to maintain. It also enables adapting appearance for different devices. The document provides examples of using CSS classes to style template elements and explains how to set up a demo system using the included CSS and templates.
The document discusses how to use Cascading Style Sheets (CSS) with Corvid Servlet Runtime templates to control formatting and layout. CSS allows separating design from content, making templates simpler and easier to maintain. It also enables customization of appearance for different devices. The document provides examples of how to apply CSS classes and rules to Corvid template elements to control fonts, colors, positioning and more.
The document provides an introduction to CSS and how it works with HTML to control the presentation and styling of web page content. It explains basic CSS concepts like selectors, properties and values, and how CSS rules are used to target specific HTML elements and style them. Examples are given of common CSS properties and selectors and how they can be used to style elements and format the layout of web pages.
The document introduces CSS and how it works with HTML to separate content from presentation, allowing the styling of web pages through rules that target HTML elements. It explains CSS syntax and various selectors like type, class, ID, and descendant selectors. Examples are provided of how CSS can be used to style properties like color, font, padding, and layout of elements on a page.
Cascading Style Sheets (CSS) allow users to define how HTML elements are presented on a page. CSS enables changing the appearance and layout of an entire website by editing just one CSS file. CSS uses selectors to apply styles to HTML elements via properties and values. Styles can be defined internally in HTML or externally in CSS files. CSS can control text formatting, colors, spacing, positioning and more to achieve visual consistency across web pages.
Cascading Style Sheets (CSS) allow users to define how HTML elements are presented on a page. CSS enables changing the appearance and layout of an entire website by editing just one CSS file. CSS uses selectors to apply styles to HTML elements via properties and values. Styles can be defined internally in HTML or externally in CSS files. CSS can control text formatting, colors, spacing, positioning and more to achieve visual consistency across web pages.
This document provides instructions on using JavaScript to allow website visitors to select different cascading style sheets (CSS) and have their preference remembered via cookies. It discusses linking different types of style sheets, detecting browsers and objects, creating and reading cookies, and programming functions to get the current active style sheet and toggle between them when pages load and unload. Code snippets are provided to implement these functions to enable style sheet selection and remember the user's preference on future page visits.
This document provides instructions on using JavaScript to allow website visitors to select different cascading style sheets (CSS) and have their preference remembered via cookies. It discusses linking different types of style sheets, detecting browsers and objects, creating and reading cookies, and programming functions to get the current active style sheet and toggle between them when pages load and unload. Code snippets are provided to implement these functions to enable style sheet selection and remember the user's preference on future page visits.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
UiPath Test Automation using UiPath Test Suite series, part 5
BPMS1
1. GeoBliki
Pat Cappelaere
pat@geobliki.com
Linda Derezinski
linda@geobliki.com
And GeoBPMS June 7th, 2007
Part I
Business Process Management System For the Enterprise Using Open Source
Components
Targeted Audience: Rails Integrators, Business Process Analysts and OpenWFEru
enthusiasts.
Warning: This is not a Ruby or Rails tutorial. This document assumes that you have a
working knowledge of Ruby and Rails.
BPMS Business Case:
Sophisticated products and/or automation require the definition of service chains (or
workflows) that can involve many participants from humans to web services collaborating in
a seamless manner. These processes need to be managed and defined at the Enterprise level
and fall in a category called: Business Process Management.
This can be fairly complex and expensive. Many acronyms and technologies need to be
mastered. Our goal is to show that we can put together a solid framework based around open
source components and keep it relatively simple and manageable. Let’s walk through an
example.
Scope of this document:
- Step description of all components and tools required for BPMS and integration within
Ruby on Rails.
- Example of a workflow with code snippets.
www.geobliki.com
2. Introduction:
Service-chains can be defined to sequence and allocate activities or tasks across many
participants using workflows.
First step is to capture and visualize the process. A good picture is worth a thousand words.
So we need to make it look really good!
There are many ways to generate Business Process diagrams. A de-facto notation standard
has been released in Feb 2006 (BPMN1) supported by more than 42 implementations (as of
April 12, 2007). Eclipse is actively working on its own STP BPMN Modeler2. For the time
being, we will be using Business Process Visual Architect3 from Visual Paradigm.
Preflight check-list:
Before getting into the tutorial, check to see that you have everything required.
1) You have Ruby and Rails4 installed. Check that you have at least the following
versions.
ruby –version
ruby 1.8.6
rails –version
Rails 1.2.3
If you need to install Ruby on Rails:
For Windows, use Instant Rails.
For Mac OS X, use Locomotive.
For Linux, try the Rails LiveCD.
A good development environment on Macintosh is TextMate5 or Eclipse with Ruby RDT6 on
all platforms.
To get rolling with Ruby on Rails: Check this out
2) MySQL7 installed. 4.x distribution or later is fine.
mysql –version
mysql Ver 14.12 Distrib 5.0.20a
If you need to install MySQL download
1
http://www.bpmn.org/
2
http://www.eclipse.org/stp/bpmn/
3
http://www.visual-paradigm.com/product/bpva/
4
http://www.rubyonrails.org/
5
http://macromates.com/
6
http://www-128.ibm.com/developerworks/opensource/library/os-rubyeclipse/
7
http://www.mysql.org
www.geobliki.com
3. Create a empty Rails application “geobpms”
rails geobpms
And make sure it works by testing it – Start the application
cd geobpms
./script/server
in your favorite browser, go to http://127.0.0.1:3000/
Double check the environment one more time by selecting the “About your
application’s environment” link. You should have these or later versions:
www.geobliki.com
4. Download OpenWFERu
Go to: http://openwferu.rubyforge.org/
You can get it as a gem, latest stable version or from the svn trunk.
Note: My personal preference is to download the latest version and keep it under control so I
can go back to previous version as necessary (or check what changed between versions).
Install the gem
gem install -y openwferu
Successfully installed openwferu-0.9.11
Installing ri documentation for openwferu-0.9.11...
Installing RDoc documentation for openwferu-0.9.11...
Copy the gem into your vendor directory. In this case the current version is 0.9.11. From
your geobpms rails project directory
cp –R /usr/local/lib/ruby/gems/1.8/gems/openwferu-0.9.11 vendor/
Edit geobpms/config/environment.rb to point to the newly installed version of openwferu
Add this text:
config.load_paths += %W(
vendor/openwferu-0.9.11/lib
).map {|dir| "#{RAILS_ROOT}/#{dir}"}.select { |dir|
File.directory?(dir) }
Below the commented out config.load_paths line like so:
To change between versions, change the version number on line #25.
www.geobliki.com
5. Workflow Description:
This workflow example shows the tasking request of the EO-1 satellite by a user who interacts
with the system via XForms. The user enters a tasking request using some input (lat/long…).
The workflow proceeds by calling the Sensor Planning System (SPS) to check for feasibilities.
The user is prompted to select a feasibility and the task is submitted. Eventually, the task is
completed onboard. The data is down-linked to the ground and published by the Sensor
Observation Service (SOS). Finally the user is alerted that data is available via email by the Web
Notification Service (WNS).
Figure 1. “Simple” EO1 Satellite Tasking Workflow
www.geobliki.com
6. The various participants in this workflows are: XForms, SPS, SOS and WNS. They are
represented as Pools. They perform various tasks for this workflow.
Ideally, we would save this workflow in OpenWFERu XML format (or XPDL 2.0 and then
translate it). This would be a possible outcome:
Create a workflows directory in the public folder and then copy the following into flow.xml.
/rails/public/workflows/flow.xml
<process-definition
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.openwfe.org/flowdef.xsd"
name="EO1 Simple Tasking Workflow"
revision="0.1"
theme="n/a"
security="restricted" >
<sequence>
<set field="msg" value="Workflow has been sequenced" />
<participant ref="WNS" task='Email' />
<participant ref='XForms' task='RequestTasking' comments='Enter EO-1 Tasking Parameters'
/>
<participant ref="SPS" task='GetFeasibilities' timeout="2d" comments='Check EO-1
Tasking Feasibilities'/>
<participant ref='XForms' task='SelectFeasibility' comments='Select Desired Feasibility'
/>
<cancel-process if="${f:status} == 'cancelled'" />
<participant ref="SPS" task='Submit' comments='Submit Task to JPL'/>
<cancel-process if="${f:status} == 'cancelled'" />
<participant ref="SOS" task='Publish' comments="SOS will make raw data file
available"/>
<set field="msg" value="You've got data" />
<participant ref="WNS" task='Email' />
</sequence>
</process-definition>
Implementation Details:
Step 1: Tell OpenWFERu about those participants
I created a small class to create the workflow engine and register the participants. Some of
the participants are in-lined as examples. Major participants have their own classes.
www.geobliki.com
7. /rails/lib/wfe.rb
require 'openwfe/engine/engine'
require 'openwfe/expool/history'
require 'openwfe/expool/journal'
require 'openwfe/engine/file_persisted_engine'
require 'rexml/document'
class Wfe
def self.create_wfe_engine_and_participants
#
# === the ENGINE itself as a global variable
#
$engine = OpenWFE::Engine.new
#
# dumps all the process history in a file name "history.log"
# in the work directory
$engine.init_service("history", FileHistory)
# -- process journaling
$engine.init_service("journal", Journal)
$engine.application_context[:keep_journals] = true
#
# === some LISTENERS
#
#
# === the PARTICIPANTS
#
$engine.register_participant :WPS do |workitem|
puts "wps output file:"+workitem.processed_file
end
$engine.register_participant("XForms", XformParticipant.new )
$engine.register_participant("SPS", SpsParticipant.new )
$engine.register_participant :WNS do | flowexpression, workitem|
# Check msg and email it
puts "WNS Task:"+workitem.params['task']
puts "msg:"+workitem.msg
end
$engine.register_participant :SOS do | flowexpression, workitem|
puts "SOS Task:"+workitem.params['task']
end
puts "workflow engine started..."
end
end
At the bottom of your environment file /rails/config/environment.rb, add these lines:
require "wfe"
Wfe.create_wfe_engine_and_participants
www.geobliki.com
8. Now we need to create our SPS participant. The Sensor Planning Service is a web service
that requires the posting of specific XML snippets to a URL. This service has many methods
and we will only use two of them:
- GetFeasibilities, to return the imaging feasibilities for a specific latitude/longitude.
- Submit, to package the requested parameters and request the tasking to happen.
The various tasks of this participant will pick up the required parameters in the workitem.
The user will have entered those parameters in previous steps (later for more information)
Let’s create two stubbed participants, to get our first workflow working
/rails/lib/sps_participant.rb
require 'openwfe/participants/participant'
class SpsParticipant
include LocalParticipant
def logger
@logger ||= RAILS_DEFAULT_LOGGER || Logger.new(STDOUT)
end
#
# Consume the workitem received from engine
#
def consume (workitem)
fe = get_flow_expression(workitem)
task = fe.attributes['task']
raise "request parameter is undefined" if task == nil
logger.debug("SPS Participant Request: #{task}")
reply_to_engine(workitem)
end
end
www.geobliki.com
9. and /rails/lib/xform_participant.rb
require 'openwfe/participants/participant'
class XformParticipant
include LocalParticipant
def logger
@logger ||= RAILS_DEFAULT_LOGGER || Logger.new(STDOUT)
end
#
# Consume the workitem received from engine
#
def consume (workitem)
fe = get_flow_expression(workitem)
task = fe.attributes['task']
raise "request parameter is undefined" if task == nil
logger.debug("XForm Participant Request: #{task}")
reply_to_engine(workitem)
end
end
How Do I execute a Workflow?
Somehow the user could discover what workflows are available, pick one from a list or a
database.
One could quickly create a rails controller and a launch method. Other methods can be
written to view, add, delete workflows to the list…
Let’s create a rails controller “Worklist” and 2 methods: intialize & launch. From the rails
project directory:
./script/generate controller Worklist initialize launch
www.geobliki.com
10. Let’s edit the file generated in geobpms/app/controller/worklist_controller.rb.
We will complete the initialize and launch methods.
class WorklistController < ApplicationController
def initialize
@workflows_dir = "#{RAILS_ROOT}/public/workflows/"
end
def launch
workflow_name = params[:id]
#get the process flow from file based on passed-in parameter
flow = IO.read("#{@workflows_dir}#{workflow_name}.xml")
launchitem = LaunchItem.new(flow)
fei,t = $engine.launch(launchitem)
puts "launching fei: #{fei.to_s}"
puts "inspect:"+fei.inspect
@wfid = fei.wfid
end
end
Before running this, let’s quickly add a view to render the results
Rails has created for us:
/geobpms/app/views/worklist/launch.rhtml
<h1>Worklist#launch</h1>
<h2>Your workflow has been launched successfully!</h2>
<h3> Flow id: <%= @wfid %></h3>
Time to test it out to see what we have so far:
Start your application
./script/server
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
workflow engine started...
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready. TERM => stop. USR2 => restart. INT => stop (no
restart).
** Rails signals registered. HUP => reload (without restart). It
might not work well.
** Mongrel available at 0.0.0.0:3000
** Use CTRL-C to stop.
www.geobliki.com
11. and from your web browser, try this:
http://localhost:3000/worklist/launch/flow
You should see in your browser something like:
The terminal window should show something like:
launching fei: (fei 0.9.11 engine/engine field:__definition
EO1_Simple_Tasking_Workflow 0.1 20070606-koyobibute process-definition 0)
inspect:#<OpenWFE::FlowExpressionId:0x322cc7c
@workflow_definition_revision="0.1", @engine_id="engine",
@workflow_definition_name="EO1_Simple_Tasking_Workflow",
@expression_name="process-definition", @expression_id="0",
@initial_engine_id="engine", @workflow_instance_id="20070606-koyobibute",
@workflow_definition_url="field:__definition", @owfe_version="0.9.11">
WNS Task:Email
msg:Workflow has been sequenced
SOS Task:Publish
WNS Task:Email
msg:You've got data
Processing WorklistController#launch (for 127.0.0.1 at 2007-06-06
15:19:21) [GET]
Session ID: cebe910aa8bbad3201d752b6d5ddde4c
Parameters: {"action"=>"launch", "id"=>"flow", "controller"=>"worklist"}
script/../config/../public/workflows/flow.xml
Rendering worklist/launch
Completed in 0.01020 (98 reqs/sec) | Rendering: 0.00111 (10%) | 200 OK
[http://localhost/worklist/launch/flow]
XForm Participant Request: RequestTasking
SPS Participant Request: GetFeasibilities
XForm Participant Request: SelectFeasibility
SPS Participant Request: Submit
Congratulations, you have successfully run your first workflow within Rails!
In the tradition of Rails, we need to capture this milestone and create a test.
[We should have written the test first …]
Note: If you haven’t already stopped your application, do that now by pressing CTRL-C in
the terminal window.
www.geobliki.com
12. First lets get the databases setup. Edit your database configuration file:
geobpms/config/database.yml
Set the username and password for each of the databases to what ever you would like to use.
In MySQL create geobpms_development, geobpms_test, geobpms_production databases
with the username and password you put in database.yml.
Go to your application directory and type:
rake test
(in /Users/linda/work/geobpms)
workflow engine started...
/usr/local/bin/ruby -Ilib:test "/usr/local/lib/ruby/gems/1.8/gems/rake-
0.7.3/lib/rake/rake_test_loader.rb"
/usr/local/bin/ruby -Ilib:test "/usr/local/lib/ruby/gems/1.8/gems/rake-
0.7.3/lib/rake/rake_test_loader.rb"
"test/functional/worklist_controller_test.rb"
workflow engine started...
Loaded suite /usr/local/lib/ruby/gems/1.8/gems/rake-
0.7.3/lib/rake/rake_test_loader
Started
.
Finished in 0.038817 seconds.
1 tests, 1 assertions, 0 failures, 0 errors
/usr/local/bin/ruby -Ilib:test "/usr/local/lib/ruby/gems/1.8/gems/rake-
0.7.3/lib/rake/rake_test_loader.rb" and it should pass.
Rails already created a test stub for your controller in:
geobpms/test/functional/worklist_controller_test.rb
Now we need to replace the test_truth method with something like:
def test_launch_flow
get :launch, :id=>"flow"
assert_template 'launch'
end
Exercise the test:
rake test
(in /Users/linda/work/geobpms)
workflow engine started...
/usr/local/bin/ruby -Ilib:test
"/usr/local/lib/ruby/gems/1.8/gems/rake-
0.7.3/lib/rake/rake_test_loader.rb"
/usr/local/bin/ruby -Ilib:test
"/usr/local/lib/ruby/gems/1.8/gems/rake-
0.7.3/lib/rake/rake_test_loader.rb"
"test/functional/worklist_controller_test.rb"
workflow engine started...
Loaded suite /usr/local/lib/ruby/gems/1.8/gems/rake-
0.7.3/lib/rake/rake_test_loader
Started
www.geobliki.com
13. launching fei: (fei 0.9.11 engine/engine field:__definition
EO1_Simple_Tasking_Workflow 0.1 20070606-kusokadami process-
definition 0)
inspect:#<OpenWFE::FlowExpressionId:0x3216490
@expression_name="process-definition",
@workflow_definition_url="field:__definition", @engine_id="engine",
@initial_engine_id="engine", @workflow_instance_id="20070606-
kusokadami", @owfe_version="0.9.11", @expression_id="0",
@workflow_definition_revision="0.1",
@workflow_definition_name="EO1_Simple_Tasking_Workflow">
.
Finished in 0.082942 seconds.
1 tests, 1 assertions, 0 failures, 0 errors
/usr/local/bin/ruby -Ilib:test
"/usr/local/lib/ruby/gems/1.8/gems/rake-
0.7.3/lib/rake/rake_test_loader.rb"
Congratulations, you have successfully run your first workflow test within Rails!
TO BE CONTINUED.
www.geobliki.com