Showing posts with label Manage 2000. Show all posts
Showing posts with label Manage 2000. Show all posts

Friday, May 31, 2024

NUGM 2024: A Real Live User Group Meeting!


NovoROISystems' first in-person post-covid user group meeting came off without a hitch. 

 An intimate group of about 20 customers participated, some bringing experience in search of new ideas, others bringing novel points of view and a hunger for experienced perspectives. 

Bud Brown brought his deep well of system administration knowledge. 

Linda McHenry and I shared our custom and standard development experience. I took a deep dive into Manage 2000 as a REST consumer and also as a REST provider.  Linda pulled back the curtain on creating and modifying Manage 2000 web functions.

Marc and Trey and Joanne covered NovoROISystems software as well as several standard Manage 2000 topics. 

And special guest, Ian Foster, brought an introduction to Embrace ERP, which is a going and growing concern with an APICS core similar to Manage 2000.

It was short but sweet.

Really heart warming to see old friends still succeeding in manufacturing using Manage 2000 as a rock solid ERP solution.

And encouraging to see new faces just beginning their journey with Manage 2000 or in some cases experienced Manage 2000 6.5 users looking into the face of the Manage 2000 8.1 world.

Frodo Lives!

Friday, May 19, 2023

Manage 2000 Release 8.1 Service Pack 6 Now Available

 Just in case you missed the official announcement...again!:

 "We are pleased to announce that Release 8.1 Service Pack 6 was released today, April 17th, 2023 and is now available for upgrades."

And yes, we already have 4 or 5 requests in for it.  So the glacier of Manage 2000 client releases continues to press forward.

We have had folks using the knowledgebase for a couple of years and while it is hard to imagine new classic Manage 2000 topics to add to the thousands of KB articles already created, it is pretty obvious that new features in recent service packs deserve some knowledge creation.  So, I am trying to remember the lessons of my technical writing course some years back...something about hushing the passive voice.

There is a school of thought that documentation should be done first and that development should drive off of the documentation.  What I experience is that knowledge creation drives bug fixes. 

When a developer is tasked with knowledge creation and actually has to find simple examples to put into how-tos, things that can go wrong generally do.  But that is why the patch system exists, to make Manage 2000 more resilient.

The other great excitement of the moment for me is a client doing beta testing on the web based ProductConfigurator. The ProductConfigurator was introduced in release 7.2.  The backend has been used by several clients to process custom front end request, but the standard user interface has never undergone a serious full beta test cycle with feedback to and correction by the development staff.

Driving a web experience off the same SCREEN.BUILD metadata that defines the user interface for PWS CTO.ENTRY is an ambitious undertaking.  The payoff for CTO technical folks is HUGE!  Their experience, skills, and techniques configuring models with CCVs applies equally to CTO.ENTRY and ProductConfigurator.

Lane and I have been experimenting with adding accumulator CCV types that can render running totals off of QPA.TABLE.CALC results. This supports running pricing displays as users configure an end item.

I feel we are finishing things started long ago.  And that is a good feeling.

Friday, February 24, 2023

Manage 2000 release 8.1 Service Pack 6 - sneak peek

The development cut is scheduled for Friday March 3rd.  Release Control processing will follow through the remainder of March.  And so expect GA sometime around the traditional April 15 timeframe.

Service pack 6 includes a number of important application features, more LINUX, and more Tools features.

AP.1099.AUDIT.ADDR

- a new function for 1099 year-end processing.

Retail Delivery Fee

- a new Sales Order feature to provide support for complying with new state RDF regulations.

Surcharge

- a new percent-based base extra charge code feature used in order and quote entry when an additional surcharge is needed. 

CountEntry

- a web version of cycle count COUNT.ENTRY. This is a major rewrite of the CountEntry web function first released with service pack 5.

ApproveCredit

- a web version of the CREDIT function.

Grand Totals Added to 30 Web Functions

CustArItems, CustOpenSalesOrders, VendorOpenInvoices, and many others now display grand totals for quick access to the customer's or vendor's overall position.

Fax Option on Red Hat Enterprise Linux

Conditional Support for running Manage 2000 on RHE Linux was announced with Manage 2000 release 8.1 service pack 5. However VSI-Fax features in Manage 2000 are NOT supported in that environment.

With service pack 6 the Manage 2000, faxing features like FXJ and QUICK.FAX are supported on RHE Linux via a Windows Server 2019 proxy.

Web Pseudo Functions

Wrapping web functions like LOOK.AR and LOOK.SO now accept type ahead parameters, so expressions like ‘LOOK.AR 1024’ can be used in the place of ‘CustomerPortal 1024’.

MyPrintJobs 

Now displays most recent print jobs first, and offers an option to delete the print job.

User Prompt Stack

Extended on primary key and validated prompts using the Most Recently Used list from the USER_CONTEXT file. This provides up-arrow-key access to recently used keys on many PWS screen prompts which matches the web function behavior.

REPORT.BUILD

Grand totals are now supported in the web interpreter page for REPORT.BUILD reports and in the roiHyperQueryControl, making them available on many user created web inquiries.

REST Provider API

Manage 2000 now provides 50 REST services covering:
  • Authentication and Authorization
  • Application Server Storage
  • Primary Key Selection
  • Data Validation and Formatting
  • Data Retrieval
  • Shopping Cart Operations
Manage 2000 REST Services have been tested and documented through Postman. Use the Manage 2000 function M2K.REST.SERVICES to access the API documentation and test cases in Postman. 



Thursday, March 31, 2022

Manage 2000 Release 8.1 Service Pack 5 Now Available

Just in case you missed the official announcement:

 "We are pleased to announce that Release 8.1 Service Pack 5 was released today, March 23th, 2022 and is now available for upgrades."

The surprise in the official announcement is the limited support for LINUX.  We still have the vsi-fax caveat, faxing out of Manage 2000 on LINUX is NOT there yet. But if you want to run Manage 2000 8.1 sp5 on rhe LINUX 8 and do not need faxing then we are ready to support you in that. 

Bud and I continue digging through the options trying to find the best path to get faxing support on LINUX, without ESKER directly supporting vfx... on rhe LINUX 8.  You'll probably hear us shout when we finally find the right path.

Customer enthusiasm for moving forward on Manage 2000 has been gratifying to see with four 8.1 sp5 upgrade orders already in the first week of GA.

So what will we imagine for service pack 6?  

My journey this last year has included the opportunity to explore what other software teams are doing with REST API development.  While 8.1 sp5 includes a nice REST API platform, it is mostly 'toolsey' stuff that you can use to build your own, but does not provide the full manufacturing application provider API that I am seeing other software teams working on.  So one of my research and development projects is imagining how we can take the REST API platform and build out an API to specific sales and manufacturing processes.

The current leg of my continuing journey has me exploring POSTMAN and using it to test and document existing REST services:

Manage 2000 JSON Services

A little quicker and easier than running JSONServices, viewing source, and reverse engineering :-)

Saturday, January 1, 2022

Manage 2000 8.1 service pack 5 - sneak peek

Final touches are going into service pack 5 of Manage 2000 release 8.1. Tees are getting dotted and eyes are getting crossed.

Another year of development items are releasing in this service pack along with the year's supply of bug fixes.  There are a number of new features I am excited about, along with a couple more upgrade challenges than usual for a service pack:

  • The website has been upgraded to ASP.NET 4.8
  • The JavaScheduler has been upgraded to version 5.3.1.
This means a little extra installation work during the service pack upgrade.

The upgrade to ASP.NET 4.8 was necessary to work with the new  5.3.1 version of the JavaScheduler. The new version of the JavaScheduler is faster in our testing than the old version, and it is built with the Open Java SDK eliminating any licensing controversy.

So what other new things can you do with Manage 2000 service pack 5?

  • Access documentation and training material more easily
    • Cross browser compatible Help and Documentation make these items available from outside the EOT Viewer web view, using any browser.
    • See Also documentation access from portal menus - pertinent documentation links on local portal menus keep overviews, courses, and HowTos at your user's fingertips.
  • Text from Manage 2000 to your phone, your user's phone, your customer's phone, your sales rep's phone...
    • Receive text messages from the Manage 2000 Event Condition Action system. The text message may contain only the ECAs Title or the Title and Body based on the CONTACTS  ECA TextMsg option for Notify events
    • Administrators! Receive text messages from Master Agent notifications
    • Configure plug-able interfaces with Twilio, Nexmo, and other texting services using TEXTING.SERVICES.
    • Specify carrier gateway conversion sites in PHONE.CARRIERS.
    • Send text messages from UniBasic using SUB.TEXT.OUTPUT.
    • Send quick text messages from the command line using TXT and TID.
    • Use UserPreferences Contact Information page to maintain your cell phone carrier. This enables carrier gateway text messaging.
  • Share data through REST APIs
    • REST Consumer API
      • Configure access to RESTful service endpoints through the REST.SERVICES table.
      • Display RESTful data in ANY Manage 2000 function using Manage 2000 Software Objects. Configure in MSO.BUILD using subroutine REST.MSO which will access RESTful services and display results in Manage 2000 functions.
      • Read REST sourced news articles in Newsreader.
      • Display REST sourced news articles in Portal news panels.
      • Call RESTful services from UniBasic using new tools subroutine REST.SERVICE.
    • REST Provider API introduced in 7.3 and expanded in 8.0 and 8.1
      • Access packages of UniData database information from Power BI or Excel. Use REST endpoint /mt/jsonservices/getdata from Microsoft's GetData wizard. Specify the package contents like a UniQuery request in JSON.PACKAGE.MAINT.
        • Use the new preselect to optimize access
        • Use the new postselect to reprocess/reformat the results
      • Obtain single source validation information from Manage 2000. Use REST endpoint /mt/jsonservices/gettmtable to access TM tables as JSON arrays. Use REST endpoint /mt/jsonservices/validateitemservice to validate inventory part numbers, sales order numbers and more.
      • Call UniBasic subroutines from web browsers.  Use REST endpoint /mt/jsonservices/calludtsub to call backend UniBasic subroutines.  Call GetItemsAsJSON to pickup UniData database information in JSON format.
      • Manage 2000 JSON Services

  • Configure Manage 2000 to use the VERTEX O-Series Tax Calculation service
  • Have CUSTOMERS verify addresses using the US Postal Service Web API Interface for Zip+4. It will even add the 4 digit zip code suffix to improve delivery accuracy.
  • Cleanly install new custom development in one step using ARCHIVER REPLACE
  • Validate user input based on prompt definitions using the same validation logic used in SCREEN.IP by calling SIP.VALIDATE.
  • Collapsible Panel Memory - okay maybe this is more a bug fix than a new feature, but finally the collapsible panels work the way I want them to on my phone and my desktop, right out of the box!
  • See the resulting displays of I-Descriptors already available on a file using new phrase records I, I2,I3… built by DICT.INIT.ALPHA.  
  • Stop worrying about JAVA licensing controversies.  The new JavaScheduler is 100% OPEN JDK.
  • See inquiry function results in your browser. 
    • EOTViewer is a web client prototype of an alternative to the Greenbar Browser. A number of people have been asking for this, so I thought I'd give it a shot.  It is still develop-mental,  but if you are daring, give it a try using USER.OPTIONS screen 2 prompt 24 and 25.  Then give me some feedback (aka encouragement to take it to the next level:-).

I don't have a hard date to give you just yet for availability.  We need to support you all through year end. Then, hopefully, we will still have enough time in January for the development cutoff.  Release Management will need Feb-Mar to clean the release, create media, test installs... So stay tuned for an announcement of general availability in the March - April timeframe.

Friday, April 2, 2021

Events, Conditions, Actions and Text Message Notifications

Text Messaging is the real-time mobile communication method of choice for most people. It is more effective for brief high priority communications and alerts than email notifications.

Now that Manage 2000 8.1 sp5's SUB.TEXT.OUTPUT utility understands text messaging and works with carrier email-to-text-message conversion gateways and third party texting services like Twilio and Nexmo, ECA Notifications can be directed to any contact's cell phone as a text message, providing an extremely flexible system for instantly alerting individuals inside or outside the company, wherever they are, to real-time ERP system events.

To enable control of this feature at a contact level the TextMsg and TextMsgSubj methods have been added to ECA Default Method and ECA Event Override Method prompts in CONTACTS.


With ECA 105 Notification delivery overridden from the default 'Normal' to 'TextMsg'




I can have a short ECA notification sent to my phone. Or I can use TextMsgSubj and just send the ECA subject line as a text message to my phone. I could even use TextMsgSubj in combination with Normal and receive the Subject as a text message and the detail as an email.



Just enter a new quote or whatever the triggering transaction is 



and the notification is delivered right to my hip pocket!








Monday, February 22, 2021

Text Messaging from Manage 2000?

Recently, while thinking about system administrator notifications, I was chagrined to realize that SUB.TEXT.OUTPUT did NOT have a Text Message method. So I started to do a little research into Text Messaging and some more about using Unibasic Extensions to interact with REST services.

Now, there are a couple of different approaches to launching text messages programmatically:

1. Send an email to the phoneNbr@carrierGateway where the carrierGateway is a destination which converts emails to text messages for that particular carrier.

2. Send REST requests to third party services like Twilio and Nexmo which by-pass the carrier gateway. 

So if it is no bother to 'know' what carrier the phone number you are text messaging belongs to then option 1 is fine.  If on the other hand you want to text message phones which may change carriers at anytime without letting you know then it might be worthwhile to go with option 2.

To begin with I added the PHONE.CARRIERS table to 8.1 sp5 which can hold the gateway suffix for each carrier.  This can be used directly in an application to build the email destination and then the EMAIL method can be used to 'email' a text message to a phone. There is a new prompt in CONTACTS to hold the carrier.

I also added a property for Carrier to the EMAIL method. So, alternatively you can call SUB.TEXT.OUTPUT with Method=Email, To=phoneNbr and Carrier=carrierCode to send 'text messages' via carrier gateways.

Option 2 is complicated by the fact that each Text Messaging service provider uses a different interface. Yes, they are all REST, but some use Basic Authentication tokens while others pass credentials in the form variables.  They each use their own nomenclature for various variables in the request.

So I have attempted to make a pluggable interface with a new table named TEXTING.SERVICES. This table lets you configure the URL, Basic Authentication token, and map form variables from literals or properties of SUB.TEXT.OUTPUT.  We'll see how flexible it turns out to be.



At any rate, there is a new method for SUB.TEXT.OUTPUT in 8.1 sp5 named TEXTMSG which requires a property 'Service' to select the interface table from TEXTING.SERVICES. 


Next level up will be how to incorporate Text Messaging as a destination in the ECA system!

(More details of REST service programming using the UniBasic Extensions next time.)

Thursday, January 16, 2020

Manage 2000 8.1 service pack 4 - sneak peek

Next week will mark the anniversary of the service pack 3 development cutoff.  April will be release clean-up and preparation, and May should (read "July will", consult Joanne Eckenrode for an explanation of old custom code programmers estimates) bring the next service pack of Manage 2000 8.1.

Development continues dropping crumbs of new feature content into the product with this service pack.  There are a variety of tidbits which may have some appeal:

If you are a hardcore MRP geek you may be interested in the new order policy W with its awareness of minimums and maximums in addition to order multiples.

If you are bringing in orders through sales quotes you may get excited that CONVERT.SQ.TO.ORDER now supports ECA use. So you can configure notifications in ECA.BUILD.

If your purchasing database is bursting at the seams you may find some relief in RTV.ENTRY large purchasing files optimization.

If you have gotten addicted to 8.1 attachments you might like the attachment support added to SCHEDULER.

If you have wifi throughout your warehouses you may be interested in the new UnplannedMove web function or the improvements to PICountEntry.

If you are an electronics manufacturer or other heavy user of reference designators you may be excited to see them appear in the web ShowPs function.

If you are a fan of Power BI but not so much of ODBC you can probably get excited about JSON.PACKAGE.MAINT and the new REST endpoint in JSONServices for GetData.

If your interests lie with work orders there are a number of new reports you may find helpful:

  • SLB.WOS – Shows last closed work order planned and actual labor times and overall average of all closed work orders on file, including number of work orders that went into that average
  • ORDERS.ON.MRP.HOLD – Show a report of all sales orders with the MRP hold flag set
  • PRO.NBR.LOOKUP – Used to find a sales order using a PRO or tracking number from FedEx
  • UNPLANNED.OUTPLANT – Shows work orders with outplant costs, but no standard outplant costs
  • PLANNED.LOAD – Show un-released work order load by department
  • RELEASE.LOAD – Show remaining work order load by Work Center or ALL
  • UPDATE.REV.BY.DRAWING – Update Rev information for all parts with a specific drawing number

If you are just the person who is supposed to keep all this stuff working you may find some help in:
  • ATTACH.MASS.UPDATE - import attachments from Excel
  • AUDIT.DRAWING - identify parts with or without drawings attached
  • MONITOR.PHANTOMS - notifies you when phantoms start, stop or abort
  • ANALYSE.FILE.SYSTEM - use with REFRESH.PARAMS
  • REFRESH.PARAMS - refresh development database without resetting software configuration
  • DATA.CHECK - check files for unprintable characters
  • DEBUG.CONTROL topics: built in debug instrumentation that may be turned on/off
    • BTI.PHANTOM...
    • CallRPCSub - Client Server traffic
    • GetItemsAsJSON - Query DB as JSON
    • MONITOR.PHANTOMS - Monitor phantoms for status change
    • MsoAccess - MSO Security Checking
    • RenderMso - Rendering MSO as HTML
    • SubExecService - Client Subroutine Calls

Monday, January 21, 2019

Manage 2000 8.1 service pack 3 - sneak peek

Development cutoff is fast approaching for service pack 3 of Manage 2000 8.1. We will be cleaning up the service pack material throughout February in preparation for an early March release.

Once again a number of projects are being released along with bug fixes in this development rich service pack.  Here are my top ten favorite new features:

  1. Collapsible Panel Navigation in over 40 web functions provides better use of screen territory and improved mobile experience.
  2. MSO support in web functions provides improved web function tailoring capabilities. MSO displays and web functions may be configured to be available without customizing using the same MSO techniques used in PWS workflow configuration.
  3. Local ‘Portal’ menus are now scoped to browser tab. This allows multiple browser tabs to display different portals or the same portal with different keys without the local menus interfering with each other.
  4. ProductConfigurator supports alternate front-end screens from CTO.ENTRY. This allows ProductConfigurator to use a simplified version of the screens used in CTO.ENTRY.  Sales Reps may then do preliminary configurations in ProductConfigurator and then back end configuration specialists can reconfigure the generated item in CTO.ENTRY.
  5. Summary Notes Option added to attachment notes menu on web pages.  This feature matches the PWS notes summary display available in PWS.
  6. Global Menu: Home and Logoff buttons are easily accessible no matter how menus are configured.
  7. WEB.SETTINGS.INQ - Displays the web preference hierarchy settings for one or more contacts, so if your web settings hierarchy has grown into a ball of spaghetti you can get it sorted out.
  8. Customer Administrator role allows delegation of add, change, or deactivation of other contacts. CMADM role users may use UserPreference | ContactMaint to maintain other users from their company.
  9. Visual Studio 2017 compatibility updates to website vbproj files.
  10. Visual Studio Wizard Updates.
    1. Collapsible Panel generation in BTO Inquiry and BTO Posting wizards.
    2. BTO Posting wizard support for templated columns with roiTextBox controls bound to metadata for improved data entry features.

So keep an eye open for an upcoming official announcement and after you load up this new service pack find out more about these and other new features in the FEATURE.SUMMARY document.

Thursday, November 30, 2017

Manage 2000 Release 8.1 Service Pack 2 - sneak peek

Development of Service Pack 2 for Manage 2000 8.1 has been cutoff.  I have gone through the demo data tidying up while Doug is working through the release control process. We should be in a position to release it well within our announced Jan 2018 time frame.

Here are my top ten favorite new features in this development rich service pack:

  1. UniData 8.2 Python Integration
  2. We have UniData 8.2 loaded up on our development machine and are using it daily. Unfortunately our development box is an HPUX machine and the new Python integration is not yet available for HPUX.  But for those running on Windows servers this opens up a whole new world of possibilities.

  3. Web DE 5.3 JavaScheduler pass through CallRPC
  4. Rocket put in a special version of the CallRPC method based on the Manage 2000 teams input which by-passes the ADO Recordset parsing and provides a very lean connection between the .Net world and the UniData world. Various measures show through-put improvement from 2X to over 10X.  This doesn't make the processing of the business logic any faster, but just moving data back and forth this much faster creates a very noticeable performance improvement for the end user.

  5. UrlAuthorizationModule
  6. "With great power comes great responsibility" PDF publishing and attachments anywhere features of Manage 2000 8.1 provide the power to put your customers in control of viewing their documents. The UrlAuthorizationModule provides the security enabling you to do this responsibly.

  7. W(+/-)n Work Date (Shop Calendar) Entry Shortcut
  8. Simple. Global. Useful. What is not to like?

  9. ECA support for attachments and calendar events
  10. Welcome enhancements to ECA email notifications. I particularly like the idea of ECAs sending calendar appointments to recipients, who can then simply click on the icon to import reminders into their calendars and have them act as cues for future activity.

  11. Associated Sales Items support in ShoppingCart
  12. The existence of Associated Sales Items in the database and the lack of their use in the shopping cart was just begging for development

  13. AUTHORIZE.DATA.ACCESS
  14. Anytime hardcoded rules are abstracted to configuration tables it is a good thing for the flexibility, elasticity, and endurance of the product. Plus it puts the Manage 2000 customer organization in the drivers seat defining how the software should behave.

  15. REFRESH.SPOOL.DATA Master Agent Service
  16. This makes the web interface to the spooler jobs dependable and truly useful. Dependending on traffic to SPE to trigger refreshes is just too shakey especially in smaller installations.

  17. SECURITY.MASS.UPDATE
  18. There are a number of administrator treats in this service pack. Handling security changes faster and easier is certainly a welcome one.

  19. PMT.STACK.MASS.UPDATE
  20. Like SECURITY.MASS.UPDATE this just seems like something that ought to be there in this day and age.

Aside from lots of treats for administrators there are over half a dozen new features in Product Data Management alone. So watch for the upcoming official announcement and after you load up this new service pack look through the FEATURE.SUMMARY document.

Wednesday, December 14, 2016

Manage 2000 Release 8.1 GA

Manage 2000 release 8.1 is now officially available for ordering and shipment.

Allan started shipping out copies  Dec 09, 2016

Doug and I performed live on WebEx earlier in the week.  Check at the EpicWeb site to stream down our mellifluous voices as we banter about and demo some of the cool new features built in to the 8.1 release:
  • Integrated PDF Output 
  • Geographic Mapping 
  • Photo Support 
  • Web Attachment and Export Changes 
  • On-site Newsreader 
  • Infrastructure Updates 
  • Many Application Enhancements
Get excited!

Upgrade!

Monday, March 28, 2016

Manage 2000 8.1 Crystallizing

As Manage 2000 evolves and adapts to the changing world around it there are moments when you can watch the snow flakes form.  One place the formation of these snow flakes becomes visible is the moment we change a string name for some relationship into a validated entry.

For instance since the 7.1 release the WEB.CONSTANTS screen has had a simple unvalidated, mostly unedited string entry indicating where the web server can be found.


Starting in Manage 2000 8.1 this entry will be validated to the WEB.SITES table, which in-turn will validate the actual IP Address, or Domain Name to the WEB.SERVER.DOMAINS table.



This will formalize the relationship between the Manage 2000 Unidata computer system and one or more Manage 2000 web server computer systems and those web server's IIS applications.

Creating this formal snow flake means we will be able to validate and cross reference in WEB.CONSTANTS, and SYS.USERS, and CNT.SYSTEM.REFS, and CONTACTS.




It also means we will be able to create a VIRTUAL.DIRECTORIES table with validation and cross referencing to define how one might reach a specific UNC document store through a virtual directory.



And what may not be obvious about these snow flakes is that they can clump together to produce a rich attachment configuration snowball supporting many different attachment UNC document stores that can be accessed by virtual directory path and made available from any browser, say from the Attachments menu on Manage 2000 Portal pages.

And how better to fill up these UNC document stores than automatically generating PDF documents out Manage 2000 8.1 MASTER.AGENT tasks running print processing to a PDF queue. :-)

Sunday, June 9, 2013

Manage 2000 Release 8.0 Beta

Well Allan grabbed the beta copy last week to start cleaning.  So no more development sneaking into that branch.  Cleaning up a release usually happens over several weeks so beta sites should be able to load up early in July.

In the mean time I am going back over the mobile styling options. JQueryMobile has 5 color swatches to their standard look.  And it is a good look.  But it isn't IPad-ish, and it isn't Android Holo-ish, and it isn't Microsoft Metro-ish or whatever the new "Metro" is.

What seems natural and obvious in hindsight is that if I am using my IPad I would be most comfortable and the M2k feature would be most seamless if the Manage 2000 web functions fit in with that style, and if I am using a Galaxy tablet I would be most comfortable if the Manage 2000 web functions came up looking like Holo, etc...

So I spent last week working on integrating some new stylesheets to emulate some of the major mobile device styles and revising the web preferences to support an "AutoSelect" option that will pick a style based on the browser UserAgent identification in the HTML header.

The various styles and swatches (colorization schemes) need some polishing to eliminate things like dark blue titles on black backgrounds and so forth, but the basic mechanism is in place and the effect is pure magic.

Tuesday, March 12, 2013

Manage 2000 Control Extenders Explained

M2kDataBinderControlExtender:

Originally this was an alternative to placing single valued fields in FormView containers.  The VS2005-2008 MS databinding changes mandated that a table be bound to a FormView and that textboxes and such in that FormView could then be bound to a field in that table. There are a bunch of things I find objectionable here.

Anyway, I stole the code for this extender from Rick Strahl at WestWind (Hawaii, poor chap), a great source for .Net intelligent thought http://www.west-wind.com/weblog/.  The databinder moves fields into and out of datasets from web controls.

Visual Studio 2003 only did one way binding using the ‘eval’ method, and we had to write code to move data back. VS 2005/8 added the ‘bind’ method to move data from web controls back into datasets.

I prefered the method name ‘Fill’ to describe moving fields into the dataset.  The name was always used in DataAdapters to mean moving the fields into the dataset from the datasource.  So I chose to use the DBCE.Fill expression to request the databinder to fill up the dataset with field values from web controls.

While working on the m2kScrolledSetControlExtender I enhanced this extender to bind fields from dataset to columns in a JSON array stored in a hidden field (Bind To Client).    The scrolledset then moves fields between a hidden field and textboxes inside the browser using javascript. The hiddenfield acts like FILE.ITEM(1) providing working storage at the browser end.   Together these extenders manage the transmission from datasets to scrolledsets and back.

Since then, based on application work by the development team, I have been adding additional support in the data binder for other situations like an easy way to bind SA MV sets to multi-line textboxes and just lately support for RadioButtonLists.

The Microsoft databinding patterns can still be used and, in fact, for grid displays and other sorts of table level binding I expect we will continue to use ObjectDataSource controls.

M2kScrolledSetControlExtender:

My original goal for the scrolled set extender was to create a way to have scrolled set processing in web pages that matched the keyboarding and development efficiencies of SUB.MT500 and SCROLL.MAINT. Yeah, not quite there yet :)

In one sense the scrolled set extender stands in for SCREEN.BUILD C4.  It provides a design time place for the developer to specify scrolled set behavior.  It also serves to emit the required javascript for instantiating a javascript object with the operational mechanics implementing the scrolled set experience.  The definition for the javascript object and all of its methods actual exists in roiGlobal.js.  The scrolledset extender just needs to create an object of that class in the browser world and initialize it with parameters supplied by the application developer.

One of the principal design decisions was to leverage all the data entry power of the roiTextBox, and to loosely package an arbitrary number of entry fields in a table that would contain the set entry controls and display cells. I wrote up a how to with more details on creating scrolled sets named WEB.SCROLLED.SET and added it to the SYS.WEB.HOWTOS menu.

M2kMetaDataControlExtender:

This extender is basically a re-write of the EditParams features that we originally built into roiTextBox and the metadata data access component. It provides PMT like definitions that developers can use to describe the behavior they want and then the Tools layer can take care of the implementation.


When Microsoft broke the component design surface into a separate tab in Visual Studio 2005/2008 they COMPLETELY isolated WebControl design time from Data Access Component design time.  This meant that the roiTextBox had no way of talking to the typed datasets or the metadata component.  So the whole metadata world and the databinding got shoe-horned into “WebControls” (which the control extenders are) so they can sit in the same designer and interact with webcontrols.

Friday, January 25, 2013

Manage 2000 Version 8.0

The major version has officially rolled in the development environment.  Manage 2000 8.0 here we come. Whoo Hooo!!!

The development team decided a couple of months ago that with all the mobile web changes plus other un-celebrated technology changes that the 7.x branch should end with 7.3 and the upcoming release should begin the 8.x dynasty.  Look for it towards year-end of 2013.

So now that changing the numbering is done, it is time to change some more of the machinery as well.  I am currently hip deep in ASP.NET 4.5, HTML 5, and VS 2012, trying to solve too many equations with way too many unknowns.

The VS 2012 IDE has a lot to be said for it.  It feels faster, and seems to get confused less often by our sub-project pattern web architecture. The solution explorer drill down into project classes, the highlighting of the current variable in neighboring code, the javascript highlighting during edits are all wonderful developer productivity improvements.  There is a project level option to run a code analyzer at compile time that functions much  like the Manage 2000 BX Audits to provide developers with coding standards compliance feedback.

We are going to have to make a few mass changes to vbproj files and  a few references in aspx and ascx files.  Infragistics references will have to target ASP.NET 4 instead of 3.5. But it doesn't seem like the Visual Studio Tools Team broke anything critical to Manage 2000 this time around.  Whew!

There is an interesting convergence of client side technology happening as Manage 2000 web tools provide lots of client side javascript and JSON validation and editing features which run into some of the unobtrusive validation being supplied with VS 2012 and ASP.NET 4.5 with the inclusion of jquery.  And as we proceed down the HTML 5 path we are both running into the validation constraints being coded natively into browsers as they process HTML 5 markup.  So it seems I will be spending some time trying to smooth over some redundant repetition of validation on the client end.

Saturday, August 27, 2011

IE 9.0 Firefox 4,5,6... and counting and Chrome

Manage 2000 7.3 sp3 is now building in development with IE9 compatibility in standards mode with HTML 5.0 support. WhooooooooooooHooooooooooooooooo!!!
Development is scheduled to continue till mid-October giving a nice cushion for alpha testing to clean up any construction debris. So things are looking good for 7.3 sp3.
I still need to spend some quality time with the roiScreenControl used in the web product configurator to implement the new scrolled set capability and make it cross browser compatible with Chrome and Safari. But other than that everything seems to be running well in IE9, Chrome, Firefox and Safari.
A nice side benefit of the IE9 project for 7.3 sp3 is that more of the mobile tools and applications slated for 7.4 will make an early appearance. The ESOP module in particular will start sporting a sleek mobile look with a sales product code browsing app with add to cart capability, and mobile formatted shopping cart and checkout pages.

Sunday, January 30, 2011

iManage2000

This last month I've been testing and researching issues related to accessing Manage 2000 web functions from IPhone and Android based mobile devices. Since these internet enabled devices include web browsers the basic ability to run Manage 2000 web functions is built right in.
However there are stumbling blocks to their usability. The most obvious problem is the small screen and the large complex pages of standard Manage 2000 web function pages. A little further examination reveals navigation problems in the drop down menus. These are rendered by Infragistics UltraWebMenu controls which do not work properly with WebKit based browsers. Another issue to consider is performance when accessing the net through slower connections. (How many G's are there in T1?)
So, though you can go the discount route and setup phone desktop buttons to target specific standard Manage 2000 web functions, a little more work can lead to a much better user experience.
The road map to a better user experience includes replacing the standard heading banner with a navigation app based on IUI, WebApp.Net, or Sencha Touch. The menus should still be administerable in MENU.BUILD, but the whole mobile menu tree would get loaded to the mobile browser as a multi-layer page with anchor navigation between layers. This would provide the user with rapid menu navigation including familiar slide transitions and header navigation buttons.
Functions would work off of standard hyperlinks and load and postback in their usual fashion. Though any specific mobile web function development should consider leveraging the layer tools in these micro-frameworks. Other mobile web function best practices would include avoiding the IG Grid in lieu of lighter weight options, minimizing the information displayed in any given layer to 5-7 items and providing multiple choice data entry in place of fill in the blank wherever possible.
Sizing the formatting table to 480 x 320 can help give a design time feel for mobile screen territory at standard magnification. HTML meta tags like <meta name="viewport" content="width=device-width; initial-scale=1.0;" /> can be used to control the magnification level of the web function when initially displayed. Since these micro frameworks tend to use CSS hiding techniques they interfere with the design time WSYIWYG in Visual Studio. You can temporarily comment out the stylesheet link in the aspx file to get a better designer experience.

Thursday, June 3, 2010

Sub Valued Level Prompting Details

How do you fixup the screen and do cross referencing and other validations when you use SUB.VALUE.PROMPTING on a SUB.MT500 screen?

Here is an example where we want to prompt for multiple file names and within each file for multiple item ids.

Instead of calling SUB.VALUE.PROMPTING directly from the SCREEN, call your subroutine which in turn will call SUB.VALUE.PROMPTING.
















Remember to add right justified fields using the PWS screen in SCREEN.BUILD if you want the count of sub-valued items to line up nicely.


You can add logic to execute only at the sub-valued level by checking X_Data_2 for the FROM.SCROLL.MAINT flag.

*

2200* Before prompt logic for Item_Attachments

*

IF INDEX(Prompt.X_Data_2, 'FROM.SCROLL.MAINT', 1) > 0 THEN

* Handle inner event from SUB.VALUE.PROMPTING execution of SCROLL.MAINT

* Reset SIP.VAL.FILE to enable cross referencing

FILE.VALUE = FIELD(Prompt.Display_Text_2, ",", 2)

FILE.LIST = MAIL.FILE.File_Attachments

CURRENT.FILE = FILE.LIST<1,FILE.VALUE>

CALL GET.DB.FILE(SIP.VAL.FILE, CURRENT.FILE)

ERROR = 0

RETURN

END

* Handle MAILBOX.ATT prompt event

GOSUB 2210;* Fixup Prompt Label with SUB.VALUE level display text

* Setup XREF stuff

Prompt.Conversions_Edits = '0X':@SVM:Prompt.Conversions_Edits

* remove compiled edits to force recompile

Prompt.Conversions_Edits = FIELD(Prompt.Conversions_Edits,roiDataMark4,1)

CALL GET.DB.FILE(SIP.VAL.FILE, CURRENT.FILE)

CALL SUB.VALUE.PROMPTING(ANSWER,SUB.DATA,P.NBR,PMT,SAVE.FN,VALUE)

END

*

RETURN

If you want to fix up details like the screen labels and prompt text while at the sub-valued level you can do this sort thing:

*

2210* Display SubValue Level Label Text

*

SET.NBR = Prompt.Scroll_Field_Type[2,2]

LOCATE SET.NBR IN SCROLL.DATA<9,1> SETTING PRIMARY.IDX ELSE RETURN

PRIMARY.PMT.NBR = SCROLL.DATA<1,PRIMARY.IDX>

PRIMARY.PMT = PID(PRIMARY.PMT.NBR)

STARTING.ROW = PRIMARY.PMT<1,7>

HEAD.ROW = STARTING.ROW-1

DISP.MASK = "L#":Prompt.Display_Length

ID.LABEL = XLATE("DICT ":CURRENT.FILE, "F0", 61, "X")

IF ID.LABEL = "" THEN ID.LABEL = "Item Id"

LABEL.TEXT = FMT(P.NBR,"2\0R"):".":VALUE:' ':ID.LABEL

Prompt.Text = "Enter ":ID.LABEL

REDIS.MISC<10> = L(HEAD.ROW):C(PMT<1,6>):LABEL.TEXT DISP.MASK

PRINT REDIS.MISC<10>:

RETURN

For Validation after prompting you can check the X_DATA_2 flag again and if you are at the multi-valued level simply request a repaint with ERROR=1000, but at the sub-valued level actually carry out input validations programmatically. Remember that your sub-valued level validation logic is being called from SCROLL.MAINT so do not use ERROR codes like 200, 1000 as you would for SUB.MT500, simply 0 or 1.

*

3200* After prompt logic for Item_Attachments

*

IF INDEX(Prompt.X_Data_2, 'FROM.SCROLL.MAINT', 1) = 0 THEN

* Remove SV Label Text

REDIS.MISC<10> = ''

ERROR = 1000

END ELSE

IF NOT(SIPDATA) THEN RETURN

FILE.VALUE = FIELD(Prompt.Display_Text_2, ",", 2)

FILE.LIST = MAIL.FILE.File_Attachments

CURRENT.FILE = FILE.LIST<1,FILE.VALUE>

REC = XLATE(CURRENT.FILE, ANSWER, -1, 'X')

IF REC = '' THEN

* Message 502: %1 item %2 not on file

CALL SCREEN.MSG(GetMessageText(502,CURRENT.FILE:@VM:ANSWER,0):";H;#M446065")

ERROR = 1

END

END

RETURN

Sunday, December 20, 2009

Twas The Night Before Cutoff

Twas The Night Before Cutoff

Twas the night before cutoff, when all through the house,

Not a programmer was keying, nor clicking their mouse.
The updates all filed into StarTeam with care,
In hopes that Seven_Three soon would be there.

Customers all nestled, snug in releases,
While palmtops and I-Phones sat dark in valises.
And Jimmy in his whites, and I in my cap,
Had just settled our brains for a long winter’s nap.

When out on the Net there arose such a clatter,
I sprang from my twitter to see what was the matter.
Away from my Windows I crept like a gnome,
Searched through my desktop and opened up Chrome.

The Graphic in the heading of the new-painted page
Gave mirth to results there listed by age.
When, what should appear down the page not too far,
But a Manage 2000 and 5 rating gold stars.


With data entry screens, so lively and quick,
I knew without thinking it started on PICK.
On UniData it thrives with GFE-free frames,
And whistles, and whirrs, and remembers their names

"Now Namer! now Schoolboy! now Farmboy and Widget!
On Motor Mouth! On Cheese Head! on Professor and Gidget!
To EDX, to SCREEN.BUILD, to BX REBUILD ALL

Now dot away! Dot away! Dot away all!"


The founder with his satchel all stuffed full of papers.

The performer and painter both cooking up capers.

The young black bird that had grown up so tall,

Leading us onward from the end of the hall.

As dry leaves that before the wild hurricane fly,
When they meet with an obstacle, mount to the sky.

So with hope of happy havens away they all flew,
Leaving a product full of toys, and Last Keys support too.

And then from the Palace, gave we measured lecture,
With summary and bullet of each treasured feature.
As I drew in my head, with my neck like a crane,
Down the cat-5 a new release came.

It spoke not a word, but went straight to its work,
And filled all the data, then re-painted with perk.
And laying a finger on top of my mouse,
I attached on my portal a jpg'ed house!


And then on a lark in a moment of need,

I dialed in from home to setup a Feed.

It summarized sales figures and displayed on my mobile,

It remembered my context and let me go global.


Saved out on disk, Install Shield's new folder,
Languishing there whilest the weather grows colder.
I heard it exclaim, ‘ere it shrank out of sight,
"Happy upgrade to all, and to all a good-night!"


- with inspiration from the Sniggletter

- and with apologies to Clement Clark Moore and Henry Livingston