My favorites | Sign in
Project Home Downloads Wiki Issues Source
Project Information
Members
Featured
Downloads

NEW RELEASE: version 0.9 is now available. For previous users, make sure to check out the Read Me and Update documentation that discusses Core's new package restructuring.

What is DevelopmentArcTM Core?

DevelopmentArcTM Core is an ActionScript® SWC Library that contains utility functionality, micro-architectures and design pattern implementations that are designed to make Flash®; (ActionScript® 3), Adobe Flex® and Adobe AIRTM application development easier and more effective. Unlike many of the all-or-nothing libraries available, the Core library focuses on a piecemeal approach that allows you to pick and choose only the functionality that you need for your application.

We started Core development with a collection of low level functionality and data structures, such as Local Connection Management or the HashTable data structure, that are designed to be simple generic tools that can be used for many different kinds of functionality. We then took these core utilities and then began developing solutions on top of them to solve other common tasks and issues that we face with day-to-day development. An example of this kind of issue we solved with Core is managing the selection state for multiple components on screen at the same time. Imagine trying to build a photo gallery and as the user selects a thumbnail you want to make sure the previously selected thumbnail is deselected. DevelopmentArcTM Core has the Selection Management System which tracks selection and deselection states for you in a very simple and straight forward way.

Yet the Selection Management System only attempts to solve one specific issue: selection. As we design and build solutions into Core, we also focus on making them interoperable with other elements of Core to make a much larger and powerful system. DevelopmentArc has an overall architectural goal to create an end-to-end development solution for ActionScript based applications. As we add new features and expand existing ones, we make sure that they interact well together as a cohesive solution, but we also make sure that 3rd party solutions can be interchanged with the Core features. We realize that its time consuming and frustrating to abandon an existing solution to adopt a new solution that may or may not solve most of your needs. There are areas of Core that may appear repetitive to existing solutions, if they are then we recommend continuing to use your existing solutions and only integrate the features that you need from Core.

Core is also designed to be as pure ActionScript® as possible. Many of the existing ActionScript® micro-architecture libraries are targeted, and therefore only available, to Flex® users. When designing solutions to be included in Core we try to solve the issue using only ActionScript® 3.0 and Flash® Player 9 features. This does not mean that we will not build AIRTM, Flash® Player 10 or Flex® specific features, just that our focus is to make the library as flexible and adoptable as possible. When we do offer a version specific feature we will clearly mark this in documentation.

History of DevelopmentArcTM Core

The DevelopmentArcTM Core library is based on real-world development and experience that we have had over our years as Flash®/Flex® and AJAX developers. As we solved common challenges for client and internal applications, we began to architect repeatable solutions, yet often times we kept having to rebuild the same solution for each customer. At DevelopmentArc we decided to sit down and analyze many of the common tasks that we have as developers and see which ones we kept rebuilding client-to-client. Once we determined a common problem and a repeatable solution we began developing a library based solution that could be used for multiple clients and projects. We also felt that it was in our best interest and the communities to share this code publicly. We are releasing all DevelopmentArcTM Core under the MIT license so that you can use it freely for any situation.

All features of core are FlexUnit tested before being marked for release and we have also leveraged every element of the Core in multiple client applications. This code is being used for development and is not just an experimental system used for testing.

Current Features

  • Service Request Delegation (SRD) NEW! - The SRD is used to manage asynchronous calls to data stores (0.9 supports HTTP REST-ful APIs via Flex®'s HTTPService) so that your application can load data and manage the process in a simple yet robust way. The SRD uses requests object to load data from your data store, parse the data in a format you expect and then publish the data to a model or other internal location. The SRD also supports creating Mock data so that you can test your systems before the live APIs are available.
  • Task Management System - The Task system is a priority queuing system that enables an application to execute specific bundles of business and/or server logic in a specific order leveraging priority and the ability to override previously queued bundles. These bundles are encapsulated inside of Task objects, which can be then bundled Task Group objects. Tasks and task groups have the ability to take priority over other Tasks or Task Groups inside of the queue, as well as replace existing tasks in the queue based on a set of overrides an individual task can define.
  • Command Action Delegation System (CAD) - Provides a pre-built solution for implementing the Command Pattern within ActionScript®/Flex®/AIR applications. The command / action system allows for commands to be dispatched to the ActionDelegate which then executes any assigned functionality via an Action.
  • Selection Management System - The Selection Management system enables any kind of object to become selectable and treated as part of a Selection group. In most cases this would be a UI Component that should behave similarly to a radio button group, where only one item can be selected at one time. This system also allows for multi-select and deselection of items that are members of a selection group.
  • Local Connection Management - The Local Connection manager is a helper class to quickly establish and manage local connection instances within an application. The Local Connection manager also supports the ability to maintain strong class types when the data object is passed over the local connection instance.
  • Event Broker Utility - The Event Broker is a utility class that acts as a router for specified events. The Event Broker is a single point of contact that any object can broadcast to or subscribe to. This functionality is intended to be the focal point for implementing the mediator pattern within the application.
  • Instance Factory Utility - The Instance Factory allows for the ability to make sure there is only one instance of a specified class within the instance of the factory. This is useful for using in Locators that handle generating a new instance on the first request but then making sure the original instance of the requested item is returned on subsequent requests.
  • Singleton Factory Utility - Similar to the Instance Factory, the Singleton Factory verifies that there is only one instance of a requested item, but instead of being limited to the instance of the factory, the Singleton Factory verifies there is only one instance of the requested item in the entire application.
  • Adjustable Date Utility - The adjustable date wraps a Flash Date object and provides a series of helper methods to adjust time and dates quickly and easily. Example uses included the ability to adjust a date by a specific number of days forward or backwards, making sure that the number of days in the month and Leap Years are respected during the adjustment.
  • Queue Data Structures - The Queue system allows for items to be stored in either a LIFO or FIFO based queue order or in a priority queue order and then retrieved from the data structure depending on how the items are ordered.
  • Hash Table Data Structure - The Hash Table is key/value that allows any value or object to be used as a reference key to another value or object item. The Hash Table is similar to Flex®'s ArrayCollection in how items can be referenced but unlike the collection, this is ActionScript® independent, is not intended for data pagination and is focused on performance for larger data sets.
  • Browser Location Utility - Utility class used to query the current url in the application. The class provides static properties for each piece of the application url.

Note: This project was initially developed under the Vivisecting Media Code Library. The VivisectingMedia Library is now deprecated and all additional development will be done in the DevelopmentArcTM Core library.

Powered by Google Project Hosting