Select Page

“Monty Hall Problem” simulation in ZX Spectrum BASIC

Something completely different this week! I’ve been a bit of computer spod for most of my life, and it all started with a 48K ZX Spectrum home computer. My dad bought it in the early 80s and I took to writing games and keying in code listings from the likes of Your Computer and Your Sinclair. As a big fan of emulation and retro-computing, I’ve obviously acquired a Speccy simulator to relive the good old days.

Now, last week I was discussing the “Monty Hall Problem” with my missus. For the uninitiated, this is a probability problem that is often described in the context of a US game-show, where a contestant picks one of three doors. Behind one of these doors is the star prize, a car, with the other doors concealing a pair of undesirable goats. In the game, once the contestant has chosen a door, the host, the titular Monty Hall, reveals, at random, one of the goat doors and asks the contestant: “Do want to stick with your original choice or choose the other door?”. The Monty Hall problem suggests that the contestant has a 1 in 3 (33%) chance of winning with their original choice yet a 2 in 3 (66%) chance if they choose to swap. As such, the contestant should always choose to swap to have the best chance of winning the car. The problem can be proven mathematically, using Bayes Theorem, but is a fascinating problem to simulate using a simple computer program.

Combining these two interests, then, I’ve written a simulation of the Monty Hall Problem in BASIC on my simulated ZX Spectrum.

The solution is also available as .tap and .z80 files, which are available at the bottom of the listing. Next steps? To implement as a Siebel Workflow of course! 🙂

Download .tap file
Download .tzx file

The Wonderful Workspace

I’ve been around Siebel for nearly 20 years now. Yes, I know I don’t look old enough, but that would be the fresh Scottish air. Siebel has evolved over that time but never to any sort of degree that truly made life better for a Siebel developer. Now, with the release of IP 2017, and just in time for me to move away to do other things, Oracle have given us a game changer: Siebel Workspaces and the SRF’less World.

The clear goal, though a goal that’s not quite achieved, of Web Tools in IP 2017, is to allow configuration of the Siebel Application through the thin client UI. For simple changes, this is largely successful, though Oracle has a lot of work to do to do away with Siebel Tools altogether.

Here’s a walkthrough of the steps to add a new field and expose it on an applet, just to show you how neat Web Tools can be.

  1. Log into Siebel Web Tools
  2. Click the “Workspaces” icon in the top right
  3. From the “Main” branch, click “Create” to create a new Workspace instance, giving it a name and a description
  4. Close the Workspace window, with the big “X” in the top right
  5. Click on “Business Component” and query for “Contact”. Note that, now you have an active Workspace, everything is now editable in Web Tools
  6. Click “Fields” and add a new field:
  7. Now go to “Applets” and query for “Contact List Applet” and click “List” then “List Column” and add a new record:
  8. Go to “Applet Web Template”, click on “Edit List” and click the “Edit” button
  9. Drag our new list column to placeholder 540
  10. Our changes are done – easy peasy!
  11. Now to publish the changes
  12. Go to the Workspace page again
  13. Select your “In Progress” workspace and click “Version” – now this is actually called “Checkpoint” in Siebel Tools but it doesn’t the same thing
  14. Give the checkpoint a name and click the “Version” button
  15. You’re ready to deploy the change!
  16. With your “In Progress” Workspace selected, click the “Submit” button then click the “Deliver” button
  17. Give the delivery a name and click “Deliver” – Web Tools will do its thing!
  18. Now get into your Siebel application, Siebel Call Center in my case
  19. Navigate to “Site Map”, then “Contacts” and finally “Contact List”
  20. Behold your new field – all without an SRF or server restart in sight!

Web Tools is finally on the right path to deliver agility in Siebel development. It’s very clunky in places and you’re still bound to Siebel Tools for many tasks. However, this is a massive leap forward and I can’t wait to see what IP 2018 brings in this space.

 

Applet Edit Web Layout in IP 2017

A couple of people have asked me recently about the inactive “Edit Web Layout” menu item in Siebel Tools. Well, that functionality is gone – web templates are no longer stored locally in files, but in the database, and so the ability to access this function in Siebel Tools has simply been deactivated. However, all is not lost – “Edit Web Layout” is still available, but you’ll have to access that function through the new Web Tools.

To make matters even more entertaining, that function is not enabled by default nor is it enabled automatically via any of the Patch Sets currently available (up to 17.6 at the time of writing). However, 17.6 does dump a little gem into your Siebel Server BIN folder for you to stumble across, if you happen to read the entire contents of the “Known Issues” section of the patch release notes. Here’s a quick summary of what you have to do, in a Windows environment, to work around “Bug Id 27113012”:

  1. Install the latest Patch Set (17.6 is what I’ve been using) to your Siebel Enterprise
  2. Open a command line and change directory to the Siebel Server installation BIN folder (e.g. <SIEBEL_HOME>\ses\siebsrvr\bin\)
  3. Execute the batch file named “EditWebLayout.bat”
  4. After executing the batch file, you will be prompted to enter the following information:
  5. Check the output of the command in the log file, EditWebLayout.log, and you’ll see that a bunch of seed data has been loaded
  6. Clear the browser cache and re-login to the Web Tools application
  7. Navigate to your Applet then Applet Web Template
  8. You’ll see an “Edit” icon in the bottom right (cunningly, the tooltip says “Preview” – great job, Oracle!)

    Here’s the “Edit Web Template” button

  9. Click this and you’re back on familiar(ish) ground

    And… edit away!

Some wee observations:

  1. Why do Oracle insist on disabling functionality before they fully implement an alternative?
  2. Why do Oracle still find it so difficult to deliver repository and seed data fixes, outside of horribly written, unintuitive, manually executed batch scripts that I have to hunt in their obscure documentation to find?

Ho hum, I guess this sort of hack-around is what we’ve come to expect and accept from Siebel releases these days.

Siebel Utils Going Free!

I’ve put together many tools and apps over the years, mostly to help me learn the C# language, but also to help me on my quest to get the most out of Siebel. The Siebel Store was an experiment in “commoditizing” these tools and my code, and it hasn’t really worked very well given the nature of what we expect (i.e. everything for free) and how niche developers work together as a community (through mutual sharing).

In the true hacker spirit, therefore, I’m making all the tools completely free to download from now and for ever more. Simply head on over to the Software Store and choose your downloads – you don’t even need to be a registered user. I’m giving away:

Siebel Performance Log Analyser

Quickly see poorly performing SQL in your client or server SQL logs

Siebel Error Log Analyser

Quickly and easily identify critical “SBL” errors in your log files

Siebel Logger

Dynamic dedicated web client logging – and yes, it supports Siebel IP 17!

MSMQ Explorer

Advanced Microsoft MSMQ queue management in one handy app

I hope these tools help you on your own journey’s towards Siebel greatness!

Siebel 17 – Logical Application Deployment

Now that the Siebel 17 installation is complete, we can start the logical configuration and deployment process. It’s at this point you’ll want to apply any Patch Sets or whatever – just remember to shutdown the containers for the AI and Enterprise (via the applicationcontainer\bin\shutdown.bat script) and stop the Gateway service.

Before starting with the logical deployment, quickly check the regional settings on your host, if you’re running Windows. This must be set to “English (United States)” or the deployment process will fail. Oracle are fixing this under bug 27348563.

The Siebel Management Console is where all the activities take place. Think of this as an abstraction over the old configuration batch files, the shortcuts for which used to be installed in your start menu. There’s an order to the deployment tasks, so let’s go through them one by one.

Deploy the Enterprise

  1. First up, create a Siebel Fileshare folder somewhere on the host. I used “D:\Siebel\siebel_fs”
  2. Start the deployment process by navigating to the Profiles > Enterprise tab on the left side of the Siebel Management Console (hereafter referred to as SMC)
  3. Clone the sample profile and give it a name, for example “siebel_enterprise_profile”. The clone button is the one with two squares overlapping
  4. On the first tab, set the primary file system to the absolute path of the fileshare folder that you created. For example, “D:\Siebel\siebel_fs”. Enter the SADMIN username and password in the authentication section
  5. On the next tab, enter your database platform details. See an example from my Oracle Database Server below:
  6. On the next tab, select the “Gateway” authentication profile that you created when first logging in to the SMC
  7. On the last tab, you can leave the encryption type field unchanged
  8. Now submit the profile
  9. Now click the Deployment tab on the left of the SMC, and click the “+” button to create a new deployment action. Click the “Enterprise” item
  10. Select your Enterprise profile, give it a name, and select the “Deploy” radio button before submitting the activity
  11. After a great deal of whirring and clunking, your new Enterprise will be deployed into the ZooKeeper keystore and made available within the Gateway. You’ll also see a file system structure in place, a Gateway service and an ODBC datasource

Deploy the Siebel Server

Deployment of the Siebel Server is more of the same.

  1. Start the deployment process by navigating to the Profiles > Siebel Server tab on the left side of the SMC
  2. Clone the sample profile and give yours a name. For example, “siebel_server_profile”
  3. Enter the SADMIN username and password and the GUESTCST username and password, as you setup in your database
  4. Pick which Component Groups you want to enable and leave the port numbers as is
  5. On the last tab, leave everything as is. You’re all set to submit the profile
  6. Now click the Deployment tab on the left of the SMC, and click the “+” button to create a new deployment action. Click the “Siebel Server” item
  7. Select your Siebel Server profile, and enter your FQDN and HTTS port number. For example, “SIEB17.siebel-tech.com:9021”
  8. Give your Siebel Server a name, pick your languages and you’re ready to submit your Siebel Server deployment
  9. With a bit of luck, you’ll find a Siebel Server Services awaiting you!

Deploy the Application Interface

There’s a bit more to do to deploy the Application Interface, the replacement for the Siebel Web Engine.

  1. Start the deployment process by navigating to the Profiles > Application Interface tab on the left side of the SMC
  2. Clone the sample profile and give yours a name. For example, “ucm_appinterface_profile”
  3. You don’t need to worry much about what’s here, but you’ll want to specify the GUESTCST password as you defined it during the database setup
  4. Pick your object manager and specify your REST response base URL. For example, “https://SIEB17.siebel-tech.com:9011/siebel/v1.0/”
  5. On the second tab, give the application a name, for example “ucm” and choose the object manager. I’ve gone for “ucmobjmgr_enu”. Update the anonymous GUESTCST user password as before
  6. The third and forth tabs can remain unchanged. Simply submit your profile
  7. Now click the Deployment tab on the left of the SMC, and click the “+” button to create a new deployment action. Click the “Application Interface” item
  8. Specify the FQDN and HTTPS port number again. For example, “SIEB17.siebel-tech.com:9021”
  9. Select your profile and give the new AI a name and description before submitting the deployment
  10. You should see green lights all around!

You can now access your Siebel 17 user interface using your host plus the name of your AI profile. For example, “https://sieb17.siebel-tech.com:9011/siebel/app/ucm/enu”

Good luck!