Today I came across a rather brave article predicting the end of cloud computing. It is a bold statement to make, but the author has clearly backed up his claim with facts. The biggest problem being any cloud system is a sitting duck when it comes to security. Interesting read.
Monday, November 6, 2017
Thursday, August 13, 2015
Oracle Offers New PULA Database License
Following mounting criticism over the recent years for its software licensing and audit practices, Oracleappears to making a change with PULA.
The PULA was reported originally by The Register and confirmed by Craig Guarante, Co-founder and CEO of Palisade Compliance who said, “It’s not a rumour—Oracle is putting that in front of customers.”
The change involves a new license that will offer flat-rate pricing for unlimited use for Oracle’s namesake product in perpetuity.
Oracle had previously offered what it called an Unlimited License Agreement which ran for a set period of time before customers had to certify their usage of Oracle and pay for anything additional they had used during the license period.
According to the Register, the Perpetual User License Agreement (PULA) removes the time requirement and is priced on a yearly fee based on estimate usage. This change would minimize the risks of additional payments down the line and software audits from Oracle.
The PULA Licenses are still being rolled out and Oracle is likely still in the process of setting the exact requirements so there could be radical differences between PULAs held by different companies.
Speculation over why the change is being implemented focuses on two areas, Oracle’s latest financial performances and the rise of the competitors. With the PULAs requiring customers commit to Oracle over competing outfits and following the SaaS model which has produced better revenue, Oracle will hope to retain its dominant position in the marketplace.
However Guarante has questioned the likelihood of terms that restricted customers to Oracle forever citing restraint on trade concerns.
The real question is for Oracle’s customers, according to Duncan Jones of Forrester Research is if they’ll risk a ’till death do us part deal’ with Oracle.
Oracle Adds New Android Versions To Copyright Battle With Google
Oracle Corp. added claims covering newer versions of the Android operating system to its copyright lawsuit first filed five years ago against Google Inc.
Oracle’s supplemental complaint filed in San Francisco federal court extends infringement claims to cover newer Android versions. Oracle contends Google’s Android copies source code from its Java platform.
The case is Oracle America Inc. v. Google Inc., 10-cv-03561, U.S. District Court for the Northern District of California (San Francisco).
Monday, June 15, 2015
Oracle Sales Erode As Startups Embrace Souped-Up Free Software
While the threat to Oracle has been around for years, it’s becoming more intense with recent improvements that make open-source technology more reliable -- and appealing to a new generation of multibillion-dollar startups, said Terilyn Palanca, an analyst at Gartner Inc.
“There was pessimism for a decade on whether those things could stand up. The question is largely resolved,” she said. “This open source, this open core model, is something we’re going to see growing and growing through the years.”
Sales Decline
The impact shows up in Oracle’s sales of new software licenses, which have declined for seven straight quarters compared with the period a year earlier. New licenses made up 25 percent of total revenue in fiscal 2014, down from 28 percent a year earlier -- a sign the company is becoming increasingly dependent on revenue from supporting and maintaining products at existing customers and having a harder time finding new business. Oracle reports fiscal fourth-quarter earnings next week.
To blunt this, the Redwood City, California-based company is expanding efforts in cloud computing, which will let it sell packaged high-margin services to customers. That may help balance the slowdown in the basic business. It also operates an open-source database called MySQL.
“Does the cloud-related business grow quickly enough to offset any long-term weakness in new software licenses? To us the answer is yes,” said Bill Kreher, an analyst at Edward Jones & Co., who has a buy rating on Oracle. “I would expect to see Oracle continue to gain market share within the cloud.”
Deborah Hellinger, a spokeswoman for Oracle, declined to comment.
Companies contemplating a move away from traditional database sellers such as Oracle have essentially two options: hire internal engineers to corral various free open-source databases, or pay the startups behind the free technologies for some must-have features. Licensing Oracle’s database can cost hundreds of thousands of dollars, depending on which of its numerous features customers choose to use.
Free Programs
One of the open-source technologies is the Cassandra database, which was created last decade and has been widely used by companies such as Apple Inc. and Netflix Inc. Though some companies develop and run Cassandra themselves, others go to the main backer, the startup DataStax Inc., for technical features they may not have the expertise to develop themselves.
DataStax, for example, has a customer that paid about $500,000 in Oracle software licenses and now spends $90,000 with DataStax for a similar project, said Matt Pfeil, DataStax’s co-founder. That price difference has started to have a major effect in the industry.
“I think I’ve been in this industry too long to use Oracle,” says Kellan Elliott-McCrea, chief technology officer of Etsy Inc. “I saw so many of my peers in the late ’90s crashing and burning and spending all of their money on Oracle.” Instead, Etsy, an online marketplace for hand-crafted goods, runs on a hodge-podge of open-source databases, primarily MySQL.
‘Sweet Spot’
Not all applications are well-suited to open source, as the systems made by Oracle and others still have capabilities far in excess of the free systems, Palanca said.
“You’re still going to have a class of applications for which these open-source solutions are not yet ready, and that is the continued sweet spot for Oracle,” she said.
Even some really big customers are finding ways to increase their reliance on upstarts. Open source is changing the type of technologies Goldman Sachs Group Inc. deploys in systems relating to messaging and databases, said Don Duet, the co-head of technology at Goldman Sachs. Many of these technologies became “standard parts” of Goldman’s computing infrastructure in the last two years, he said.
“It’s hard not to go into our datacenter and see a tremendous amount of open source running our applications and middleware,” he said. Goldman Sachs recently invested in a funding round for MongoDB Inc., another open source database provider.
Startups’ Shift
A Bloomberg survey of 20 startups valued at more than $1 billion supports the trend. The survey, which included companies such as Cloudflare Inc. and Pinterest Inc., found they placed open-source technologies at the heart of their businesses, with the exception of DocuSign, which had built around Microsoft’s SQL Server.
None of the companies surveyed indicated they had a large Oracle database deployment for their main services, though many used bits of Oracle software to run aspects of their organizations. Uber Technologies Inc., the car service, has committed heavily to Oracle via a worldwide rollout of the company’s E-Business Suite software, but job listings and presentations by Uber employees indicate it relies on a customized version of the free MySQL for its software.
“A lot of the startups now go with MySQL or less expensive options,” said David Wolff, the CEO of Database Specialists, a database consultancy. “The only thing that people complain about with Oracle is how much it costs.”
Extra Features
Companies can pay Oracle to get extra features of MySQL for $2,000 to $10,000 per computer it runs on, but none of the companies indicated this was the case. Others including Alibaba Group Holding Ltd., Facebook Inc., and Google Inc. have even built on MySQL to create their own free variant calledWebScaleSQL.
Still, Oracle has its fans. Zach Nelson, the CEO of NetSuite Inc., a cloud enterprise resource planning company, described Oracle’s software as “the best transaction database,” and said it made sense to use it.
“It only costs us 6 percent of revenue, and that’s nothing,” Nelson said.
As open-source databases continue to improve, there may be less reason to pay for Oracle’s products.
“I think more and more organizations are starting to realize the reason Oracle is charging that much is because there’s incredibly sophisticated technology in Oracle,” Palanca said. “Organizations are realizing they don’t need that for everything anymore.”
Thursday, May 21, 2015
JAVA is 20
The JAVA programming language grows 20 years old this year.
May 23 marks 20 years since the first version of Java was released for public use. The timing of its arrival coincided with the advent of the web and the new role technology took in improving business productivity, streamlining business processes, and creating new ways for businesses and customers to interact.
The importance of a given programming language—especially one as pervasive as Java—in changing how people use technology is difficult to underestimate. The big data revolution, for example, is primarily a Java phenomenon.
In industry and business, most of server-side computing is done using Java applications. And much of the Internet of Things is also emerging on Java devices.
But 20 years ago, the language was delivered to an entirely different set of needs: a good, general-purpose language for desktop computing.
Java arrived at an important moment in software development. Up until then, the primary programming languages were few and well-established: Fortran in scientific computing, COBOL in business, and C or the emerging C++ everywhere else in commercial programming.
While less popular languages filled specific niches—Ada (defense), Pascal (hobbyists and consultants to SMBs), Smalltalk and Lisp (academia), Perl (system administrators), and so on—the Big Three dominated computing.
Fatigue with C
However, a fatigue with C was definitely emerging. The language had two major handicaps in those days: First, it was too low level—that is, it required too many instructions to perform even simple tasks. Second, it wasn’t portable, meaning that code written in C for the PC could not easily be made to run on minicomputers and mainframes.
The low-level aspects, which still are apparent today, led developers to feel that writing applications in C was akin to mowing the lawn with a pair of scissors. As a result, large software projects were tedious and truly grueling.
The portability of C was also a major problem. Although by 1995, many vendors had adopted the 1989 ISO standard, they all added unique extensions that made porting code to a new platform almost impossible.
It’s no coincidence, then, that this era saw the emergence of a new generation of languages. In 1995 alone, there appeared Ruby, PHP, Java, and JavaScript.
Java almost immediately became popular for mainstream programming due to its portability and large set of built-in libraries. The then-mantra for Java was “write once, run anywhere.” While not strictly true initially, it quickly became so, making Java a good choice for business applications that needed to run on several platforms.
IBM subsequent embrace of Java (especially via Project San Francisco) clinched the new language’s central place in business programming.
Once a language becomes mainstream, it tends to have a long lifetime, as will be demonstrated this year when the languages born in 1995 all begin celebrating their twentieth anniversaries. What makes Java stand out, though, is how much the language and platform have evolved in that time span.
Most conspicuous, to me at least, is the change in the Java Virtual Machine (JVM JVM). While it delivered portability almost from the start, it did not initially deliver speed. Java was known for being slow to start and slow to run.
Continual Improvements
Today, Java is among the fastest languages and can scale to programs that can process vast resources, as the big data revolution—a mostly Java-based phenomenon—has amply demonstrated.
The language, too has seen extensive revision. From a start in which there were rough corners lying here and there, Java has evolved into a tool that can address almost every kind of programming problem.
The advent of Java 8 in particular added important features taken from functional programming idioms that make code shorter, more reliable, and more expressive.
The details of Java’s history are so well known that it’s easy to forget how truly rare it really is. The rarity is that few languages have benefited from constant, large-scale engineering investment for two decades. Among major languages today, only Microsoft MSFT C# (and the .NET runtime) has been favored in this same way.
At one time, it was hoped that large communities of developers would be capable of driving this change by themselves. And certainly, the rapid pace at which early development tools advanced gave all programmers reason to believe. But those early tools turned out to be outliers, rather than heralds of coming things.
So, while others might celebrate 20 years of Java as if language endurance were in itself a major accomplishment, I prefer to celebrate the sustained rate of innovation and the 20 years of continuous investment required to make that happen.
Oracle's Version
Other media:
The technology community is celebrating 20 years of the Java programming language, heralding its use by some nine million developers and the fact that it runs on seven billion devices worldwide.
The language was launched in 1995 by Sun Microsystems, and is now run as part of Oracle after the firm acquired Sun in 2010.
Georges Saab, vice president of development for the Java Platform Group at Oracle, explained that the Java programme has been one of the most important of the past two decades.
“Java has grown and evolved to become one of the most important and dependable technologies in our industry today,” he said.
“Those who have chosen Java have been rewarded many times over with increases in performance, scalability, reliability, compatibility and functionality.”
As part of the celebrations, Oracle has released a detailed timeline of the history of Java, starting as far back as 1991 and the background to its inception when it was called Oak.
Other technology giants that use Java, such as IBM and Fujitsu, have lined up to sing the praises of the platform, and executives from both firms noted its impact over the past 20 years and looked ahead to its future.
"IBM is celebrating Java's 20th anniversary as one of the most important industry-led programming platforms spanning mobile, client and enterprise software platforms,” said Harish Grama, vice president of middleware products at IBM Systems.
“IBM looks forward to the next 20 years of growth and innovation in the Java ecosystem, including mobile, cloud, analytics and the Internet of Things."
Yasushi Fujii, vice president of Fujitsu's Application Management Middleware Division, said: “Fujitsu recognised the utility of Java in IT systems as soon as it first became available, and even now we are working to promote its applications.
"We expect that Java’s continuing evolution will lead to further ICT development and a changing society, and look forward to working with the Java community to develop Java technologies."
One company that is perhaps not going to join in the celebrations is Google, which is in the middle of a long-running $1bn patent battle with Oracle over the use of Java in the Android operating system.
Oracle has also faced criticism for its management of Java, specifically that it releases security updates for the software only every quarter, often leading to huge patch releases that can cause headaches for IT admins.
Nevertheless, Oracle said that its stewardship of Java since acquiring Sun has seen two major platform releases, Java 7 and Java 8, as well as the next release, Java 9, slated for 2016.
Java 9 is set to include a new feature called Project Jigsaw which aims to "modularise the platform" to make it scalable to a wider range of devices and easier for developers to build larger applications on the platform.
As part of the celebrations, Oracle is offering a 20 percent discount on all Java certification exams until 31 December.
Reload Original PagePrint PageEmail Page
Java At 20: The JVM, Java's Other Big Legacy
Think of Java, which celebrates its 20th anniversary this week, and your first thoughts most likely go to the language itself. But underneath the language is a piece of technology that has a legacy at least as important and powerful as Java itself: the Java virtual machine, or JVM.
20 years of Java
Because the JVM wasn't designed to run any particular language -- Java is only one of many possibilities -- it's become somewhat of a platform unto itself. Languages have been developed for the JVM that owe little or nothing to Java, and the future development of the JVM is turning more to empower the creation of new items that can leverage Java's existing culture of libraries and software or depart from it entirely.
The engines under the JVM hood
When people talk about the JVM, they're generally referring to a specific JVM: the one originally produced by Sun Microsystems and now owned by Oracle, which uses the HotSpot engine for just-in-time compilation and performance acceleration. With proper warmup time for long-running applications, code operating on HotSpot can sometimes meet or beat the performance of code written in C/C++.
Nothing says the HotSpot-empowered JVM has to be the one and only implementation of Java, but its performance and many years of development have made it the de facto choice for good reason. A galaxy of other JVMs have come (and gone), but HotSpot itself -- now an open source project -- remains the most common option for enterprise production use.
Here and there, though, others are attempting to become the keepers of their own JVM flame: One programmer, for instance, is developing a JVM entirely in Google's Go language -- although right now more as an experiment than as a serious way to give HotSpot any kind of competition.
Because of all the advanced optimization work put into HotSpot, the JVM has over time become a target platform by itself for other languages. Some are entirely new creations designed to exploit the JVM's high speed and cross-platform deployment; others are ports of existing language. Plus, using the JVM means devoting less work to creating a runtime for a language from scratch.
The big JVM stars: Clojure, Scala, and Groovy
Of the languages created anew on the JVM, one stands out for being most unlike Java as possible: Clojure, a functional language designed (in the words of its creator, Rich Hickey) to be a "kind of a Lisp for the JVM," one "useful anywhere Java is." Or even where Java isn't: Puppet Server, for example, recently swapped out Ruby for Clojure as its core language, citing performance as one reason for the switch.
Aside from its power as a functional language, Clojure illustrates one of the fringe benefits of creating a language for the JVM: access to all of the resources provided by Java itself, typically libraries like Swing or JavaFX. To that end, developers more comfortable with Clojure can write programs sporting platform-native UIs, by way of what Java already offers -- but without having to write Java code directly.
Scala, another functional language for the JVM, hews more closely to Java in terms of syntax, but it was created in response to many perceived limitations of Java. Some limitations, like the lack of lambda expressions, have been addressed in recent versions of Java. However, Scala's creators believe suchimprovements will leave developers wanting even more -- and Scala, not Java, will provide them in ways that developers will prefer.
Groovy, formerly stewarded by Pivotal but now an Apache Software Foundation project, was also developed as a complement to Java -- a way to mix in features from languages like Ruby or Python while still keeping the resulting language accessible to Java developers. It, too, functioned in part as a critique of Java by providing less-verbose versions of many Java expressions.
The JVM ports: Jython, JRuby, and the rest
Another side effect of the JVM serving as a language target: Implementations of several languages now run there as well. For example, if you thought Node.js was the first time JavaScript ran as a server-side entity, think again: Mozilla's Rhino has been doing so, in Java and on the JVM, since 1999 (albeit in only an open source variety after 2006).
Most prominent among the ported languages -- and relevant to enterprise developers -- are Python and Ruby, which have been implemented in JVMs as Jython and JRuby, respectively. As with the other JVM languages, hosting Python and Ruby on the JVM gives them access to the existing universe of Java software. This relationship works both ways: You can leverage Python from within Java applications as a scripting language for testing, by way of Jython.
Despite the speed of languages on the JVM, there's no guarantee that a JVM-ported version of a language will be higher-performing than its other incarnations. Jython, for example, is sometimes faster, sometimes slower than the conventional CPython implementation; performance depends greatly on the workload. Likewise, JRuby can be faster than its stock implementation, but not always.
Another disadvantage of a JVM-hosted version of a language: It doesn't always track the most recent version of the language. Jython, for example, supports only the 2.x branch of Python.
The next steps for the JVM
Even apart from performance issues, it's unlikely any of these languages will replace Java. But that has never been the plan -- after all, why replace Java when it's so widely entrenched, successful, and useful?
Instead, it's better to take the culture that's sprung up around Java -- all the libraries and applications -- and make it useful by way of the JVM to far more than Java programmers.
Next, the JVM must become easier to use as a development environment for forward-thinking language work. In 2014, Oracle unveiled Graal VM, a project that exposes the JVM's innards via Java APIs. When completed, this will allow programmers to create new languages for the JVM by using Java as a kind of command-and-control language. (Prototypes of JavaScript, Ruby, and R hosted with Graal showed promising, if inconsistent, results.)
Tougher to predict is whether the JVM or its successors can foster a new language that's as influential and broad as Java itself -- or whether such a language comes from another direction entirely.
JavaScript and the V8 engine for JavaScript are strong candidates as influential successors to Java. Node.js already has a culture of software reuse akin to Java's own, and languages that transpile to JavaScript allow use of the ecosystem without having to write JavaScript.
But with Java preparing for major makeovers, languages on the JVM seems far closer to the beginning of their journey than to the journey's end.
Saturday, May 16, 2015
Stop Using Tail -F (Mostly)
I still see a lot of people using tail -f
to monitor files that are changing, mostly log files. If you are one of them, let me show you a better alternative: less +F
The less
documentation explains well what this +F
is all about:
Scroll forward, and keep trying to read when the end of file is reached. Normally this command would be used when already at the end of the file. It is a way to monitor the tail of a file which is growing while it is being viewed. (The behavior is similar to the "tail -f" command.)
So it says that it's similar to tail -f
, but why I think it's better?
Simply put, it allows you to switch between navigation and watching mode. We all have been there: You are watching a file with tail -f
, and then you need to search for something in this file, or just navigate up and down. Now you need to exit tail
(or open a new shell), and ack
this file or open it with vim
to find what you are looking for. After that, you run tail
again to continue watching the file. There's no need to do that when you are using less
.
Let's say you want to watch the file production.log
:
$ less +F production.log
Important
log
information
here
Waiting for data... (interrupt to abort)
Here you have pretty much the same behaviour you'd get with tail
.
Now let's say something interesting appears, and you want to search all the occurrences of "foo". You can just hit Ctrl-c
to go to "normal" less
mode (as if you had opened the file without the +F
flag), and then you have all the normal less
features you'd expect, including the search with /foo
. You can go to the next or previous occurrence with n
or N
, up and down with j
and k
, create marks with m
and do all sort of things that less(1)
says you can do.
Once you are done, just hit F
to go back to watching mode again. It's that easy.
When you need to watch multiple files at the same time, tail -f
can actually give you a better output. It will show you something like this:
$ tail -f *.txt
==> file1.txt <==
content for first file
==> file2.txt <==
content for second file
==> file3.txt <==
content for third file
When a change happens, it prints the file name and the new content, which is quite handy.
With less
, it would be like this:
$ less +F *.txt
content for first file
It shows the content of just one file at a time. If you want to see what's happening in the second file, you need to first Ctrl-c
to go to normal mode, then type :n
to go to the next buffer, and then F
again to go back to the watching mode.
Depending on your needs, it might still be worth to use less
for multiple files, but most of the time I just go with tail
for these cases. The important thing is to know the tools that we have available and use the right one for the job at hand.
Saturday, January 10, 2015
Siebel BIP Performance Tuning
1) Increasing the amount of heap memory available to the Java Virtual Machine (JVM)
Increasing the memory available to the JVM can improve the performance of the report generation and ensure that this error is not encountered.
"C:\OraHome_1\jdk\bin\java" -XX:MaxPermSize=128m -Xms512m -Xmx512m -Duser.language=en -Duser.dir=C:\OraHome_1\oc4j_bi\bin -Duser.country=US -jar "%OC4J_JAR%" %CMDARGS%
OS
Memory Value
Windows (32-Bit)
Any value of up to 1.4GB (based on available RAM)
Windows (64-Bit)
1.4 GB or higher (based on available RAM
2) Changing the Server Request Processor DB Polling Interval
By decreasing the polling interval the Server Request Processor can check the S_SRM_REQUEST table more regularly thereby reducing the period before the request processing is started. Once the change has been made it is necessary to shutdown and restart the affected Siebel Server before the change will take effect.It is recommended that this change be made only on the Siebel Servers hosting the XMLPReportServer component as this change will result in an increased number of queries being issued against the S_SRM_REQUEST table in the database.
change param PollIntvl=1 for comp SRProc
3) Minimize the size of Integration Objects/Components
An excessive number of unrequired fields in the report will lead to increased data generation times from the XMLPReportServer component and will result in an increased data file size for BI Publisher to process.
4) Minimal Force Active fields on BC-
Ensuring that a minimal number of fields are flagged as Force Active will help to ensure that the number of fields being returned when querying against the Integration Component for report generation is further reduced.
5) XMLPReportServer PreloadSRF parameter to TRUE
Prelolading the SRF into the process ensures that any performance overhead during the SRF load is encountered during component startup and not during report processing. This parameter is listed under Advanced tab.
6) Inactive Web Services not used in Enterprise
Due to Bug 10587893 at present the component will load all of the active webservices configured in the enterprise rather than just those which it may access, such as PublicReportService or PublicReportService_v11. This leads to a performance overhead during the first report request for any process as these can take a significant period of time to load. In order to reduce the impact of this loading process review the webservices configured as 'Active' in the Siebel Enterprise through the Administration - WebServices > Outbound Webservices and Inbound Webservices views. Set any webservices which are not used in the enterprise to 'Inactive'..
7) Minimize logging levels on all report generation components
This will include the requesting Object Manager, the XMLPReportServer component, the EAI Object Manager, the File System Manager component, and the BI Publisher Server itself.
8) Eliminate any un-necessary scripting during report generation
9) Create Separate Named Datasource For Siebel BI Publisher Reports With Large Data Volume
Generating Large Reports (over 10,000 records) - When running report generation there may be scenarios in which more than 10,000 records need to be retrieved. The standard ServerDataSrc within the Siebel Enterprise has a row limit of 10,000 for any single query and therefore in order to support large report generation a custom data source is required without this restriction.
Thursday, July 25, 2013
Spread Discount Button
This post is intended as a brief overview of the purpose and nature of the Spread Discount Driver Workflow Process which is used when a user uses the Spread Discount Button in the Quote Line Items Totals Applet. It's the sort of button most of us have seen more than once, and maybe you just ignored it.
User Behaviour and Options
As a side note, this button, and the underlying processing that we will investigate, is according to the documentation, the recommended way of entering discount over the total Quote or Order, as opposed to the Discount field in Quote Header.
So when the User gets round to clicking the button, the user must first decide how to apply the Discount – as a target price, a percentage or discount amount. This will be used in the process that follows.
The default behaviour of the Spread Discount button will be to update the Quote, based on the value entered in the Manual Discount field (visible in the Pricing View Tab). If the user had already entered a Manual Discount, Manual Price Override is updated instead.
Note – One Time Line Items
It is important to note that Spread Discount will only update Line Items with the Type of “One Time”. Any items with the Type “Recurring” or “Usage” will be ignored.
Note – Spread Discount Button Scope
The User is not limited to applying the Spread to the whole of the Quote. For example, the User can select two or more items in the Line Items Applet and proceed to click the Spread Discount button, choosing “Selected Items” from the Applet.
The User may of course also make use of the other options (Product, Service, Training) which will apply the Discount to only Sales Products, Service Products or Training Products in the Quote or Order.
Note – Maximum and Minimum Prices (in Price List)
When maximum and minimum prices are configured, Siebel will respect these rules while spreading the discount.
Discount Amount and Target Total
When the User clicks the Spread Discount button and chooses one of the above options, a calculation is performed based on the choice of the User in the Source Field of the Pop-up Applet.
If you enter a Discount Amount or Target Total, Spread Discount first calculates a weighted average before distributing discounts. It calculates the weighted average as follows:
If the Source is List Price
Weighted Average = Line Item List Price / Total List Price
Manual Discount Amount = Weighted Average * Discount Amount
If the Source is Net
Weighted Average = Line Item Net Price / Total Net Price
Manual Discount Amount = Weighted Average * Discount Amount
For complete details of the calculations performed, see the relevant documentation .
Workflow Process
The Spread Discount Driver Workflow Process is responsible for the actual work of the discount spreading. From the above picture, in order to understand the process at a high level it is important to note the following steps as being pertinent to the Spread Discount principle.
Execute SearchSpec
- As mentioned previously, not all items can be discounted, only one-time price items and this is the filtering step
Spread Discount
- This Business Service is supplied by Oracle. The Method SpreadDiscount is hidden in Siebel Tools. For details of the basic calculation see the section below.
Dispatch Service
- Further PSP Processing happens at this stage – the Pricing Engine may have other work to do
Sync Row Set
- The Row Set representing the Quote, obtained in the first step of the Workflow Process but now with the successfully discounted Line Items, is returnedto the Quote and the Database
Readers familiar with Order Management will observe that many of the Business Service steps are using the Row Set Transformation Toolkit.
SpreadDiscount Method Algorithm
Below is a basic outline of the logic applied by the SpreadDiscount Method of the Business Service.
Siebel begins by obtaining the Base Price from the Pop-Up Applet and converts the Base Price and Minimum andMaximum Prices to the Currency specified in the Applet.
Suppose 2 items, as follows:-
Widget Quantity 1 Base Price 10 Minimum Price 7
Grommet Quantity 3 Base Price 5
Amount to Discount 5.50
Siebel then adds up all Base Prices up (multiplying each by Quantity) to get the Total Base Price. Then Siebel proceeds to get the Target Price (calculated from Amount To Discount or Percent To Discount depending on what theUser entered, as necessary). So it might look something like this, in our example:
Total Base Price = 10 + (3*5) = 25
Target Price = 25 - 5.50
Then Siebel will calculate the total to discount: Total To Discount = Total Base Price – Target Price.
Target Price = 19.50
The logic will loop through the rows of the Quote, following the logic below.
- Loop through all Rows that have not reached the Min/Max Price.
- Discount each amount by (Base Price/Total Base Price) * Total To Discount
- If that discount pushes the Line Item Price beyond Min/Max:
- Set the final price of item to its Min/Max
- …and remove that row from further discounts
First Line of Quote Discounted Price: (10 / 10) * 5.5 = 5.5
But that would push it below Minimum Price so set it to Minimum Price = 7.00 and remove from further adjustments
- After round completes, make adjustment so "removed" rows are not taken into account in the next round's calculation. For each of these rows:
- It’s Base Value * Quantity will be subtracted from the Total Base Price
- It’s Discount Amount*Quantity will be subtracted from Total To Discount
Subtract price of first item from Total Base Price (25 -10) = 15
Discount Amount * Quantity (3 * 1) subtracted from Total to Discount so Total to Discount is now 2.5
Looping continues until:
- Total To Discount can be spread evenly across all remaining line items
- or All items have been discounted to their respective min/max
So in our case, the next line would be processed like this:
Second Line Discounted (5/15)* 2.5 or 0.83 / item with Quantity of 3
Then Siebel will loop through all rows to convert each row back to the Line Item Currency and to round each to line item precision. Finally Siebel will add up rounding remainders and amount discounted.
The rounding remainder is added to the element with highest Base Price*Quantity that has not already reached its Min/Max. This continues until the rounding remainder rounds to 0 or until no items can be discounted further.
Summary
The Spread Discount Driver Workflow Process delivers reliable and understandable discounting to line items or entire Quotes in a simple to visualize way. The Workflow Process could be further customized to take into account custom logic. Functional Consultants who study the functionality would do well to familiarize themselves with the functionality to be able to predict the outcome.
Wednesday, May 1, 2013
Oracle Can’t Secure The Java Plug-In, So Why Is It Still Enabled By Default?
Java was responsible for 91 percent of all computer compromises in 2013. Most people not only have the Java browser plug-in enabled — they’re using an out-of-date, vulnerable version. Hey, Oracle — it’s time to disable that plug-in by default.
Oracle knows the situation is a disaster. They’ve given up on the Java plug-in’s security sandbox, originally designed to protect you from malicious Java applets. Java applets on the web get complete access to your system with the default settings.
The Java Browser Plug-in is a Complete Disaster
Defenders of Java tend to complain whenever sites like ours write that Java is extremely insecure. “That’s just the browser plug-in,” they say — acknowledging how broken it is. But that insecure browser plug-in is enabled by default in every single installation of Java out there. The statistics speak for themselves. And we’re a website that keeps telling our readers to uninstall Java or at least disable the plug-in.
Internet-wide, studies keep showing that the majority of computers with Java installed have an out-of-date Java browser plug-in available for malicious websites to ravage. In 2013, a study by Websense Security Labs showed that 80 percent of computers had out-of-date, vulnerable versions of Java. Even the most charitable studies are scary — they tend to claim more than 50 percent of Java plug-ins are out-of-date.
In 2014, Cisco’s annual security report said 91 percent of all attacks in 2013 were against Java. Oracle even tries to take advantage of this problem by bundling the terrible Ask Toolbar and other junkware with Java updates — stay classy, Oracle.
Oracle Gave Up on the Java Plug-in’s Sandboxing
The Java plug-in runs a Java program — or “Java applet” — embedded on a web page, similar to how Adobe Flash works. Because Java is a complex language used for everything from desktop applications to server software, the plug-in was originally designed to run these Java programs in a secure sandbox. This would prevent them from doing nasty things to your system, even if they tried.
That’s the theory, anyway. In practice, there’s a seemingly never-ending stream of vulnerabilities that allow Java applets to escape the sandbox and run roughshod over your system.
Oracle realizes the sandbox is now basically broken, so the sandbox is now basically dead. They’ve given up on it. By default, Java will no longer run “unsigned” applets. Running unsigned applets shouldn’t be a problem if the security sandbox was trustworthy — that’s why it’s generally not a problem to run any Adobe Flash content you find on the web. Even if there are vulnerabilities in Flash, they’re fixed and Adobe doesn’t give up on Flash’s sandboxing.
By default, Java will only load signed applets. That sounds fine, like a good security improvement. However, there’s a serious consequence here. When a Java applet is signed, it’s considered “trusted” and it doesn’t use the sandbox. As Java’s warning message puts it:
“This application will run with unrestricted access which may put your computer and personal information at risk.”
Even Oracle’s own Java version check applet — a simple little applet that runs Java to check your installed version and tells you if you need to update — requires this full system access. That’s completely insane.
In other words, Java really has given up on the sandbox. By default, you can either not run a Java applet or run it with full access to your system. There’s no way to use the sandbox unless you tweak Java’s security settings. The sandbox is so untrustworthy that every bit of Java code you encounter online needs full access to your system. You might as well just download a Java program and run it rather than relying on the browser plug-in, which doesn’t offer the additional security it was originally designed to provide.
As one Java developer explained: “Oracle is intentionally killing off the Java security sandbox under the pretense of improving security.”
Web Browsers Are Disabling It On Their Own
Thankfully, web browsers are stepping in to fix Oracle’s inaction. Even if you have the Java browser plug-in installed and enabled, Chrome and Firefox won’t load Java content by default. They use “click-to-play” for Java content.
Internet Explorer still automatically loads Java content. Internet Explorer has improved somewhat – it finally began blocking out-of-date, vulnerable ActiveX controls along with the “Windows 8.1 August Update” (aka Windows 8.1 Update 2) in August, 2014. Chrome and Firefox have been doing this for much longer. Internet Explorer is behind other browsers here — again.
How to Disable the Java Plug-in
Everyone who needs Java installed should at least disable the plug-in from the java Control Panel. With recent versions of Java, you can tap the Windows key once to open the Start menu or Start screen, type “Java,” and then click the “Configure Java” shortcut. On the Security tab, uncheck the “Enable Java content in the browser” option.
Even after you disable the plug-in, Minecraft and any other desktop application that depends on Java will run just fine. This will only block Java applets embedded on web pages.
Yes, Java applets still exist in the wild. You’ll probably find them most frequently on internal sites where some company has an ancient application written as a Java applet. But Java applets are a dead technology and they’re vanishing from the consumer web. They were supposed to compete with Flash, but they lost. Even if you need Java, you probably don’t need the plug-in.
The occasional company or user that does need the Java browser plug-in should have to go into Java’s Control Panel and choose to enable it. The plug-in should be considered a legacy compatibility option.